Skip to content

Character

角色实体,位于 FunGame.Core.Entity

  • 编码定义:继承 Character 类,在构造函数中设置属性
  • 工厂创建:通过 Factory.OpenFactory.GetInstance<Character>(id, name, args)
  • 复制:使用中调用 Copy() 创建独立副本

构造函数

csharp
public Character()

身份与归属

属性类型说明
Idlong唯一标识符
GuidGuid全局唯一标识(默认新生成)
Name / FirstName / NickNamestring姓 / 名 / 昵称
UserUser所属玩家
ProfileCharacterProfile角色档案
EquipSlotEquipSlot装备栏
MagicTypeMagicType魔法属性
FirstRoleType / SecondRoleType / ThirdRoleTypeRoleType角色定位(最多三个)
Promotionint段位(默认 100)
RoleRatingRoleRating评级(由 Promotion 计算,只读)
PrimaryAttributePrimaryAttribute核心属性(STR/AGI/INT)

等级与经验

属性类型说明
Levelint当前等级(自动限制在最大等级内)
ExLevelint额外等级
MaxLevelint最大等级(0 时按平衡常数)
EXPdouble经验值
LevelBreakint等级突破(默认 -1)

战斗状态

属性类型说明
CharacterStateCharacterState当前角色状态(默认 Actionable
CharacterEffectStatesDictionary<Effect, List<CharacterState>>特效施加的角色状态
CharacterEffectTypesDictionary<Effect, List<EffectType>>特效施加的特效类型
CharacterImmuneTypesDictionary<Effect, List<ImmuneType>>特效施加的免疫类型
IsNeutralbool是否中立
IsUnselectablebool是否不可选中
ImmuneTypeImmuneType免疫类型(位标志)

生命值体系

属性类型说明
InitialHPdouble初始生命值(可设置)
BaseHPdouble基础最大生命值(只读):InitialHP + (Level-1) × (17 + 0.68 × InitialHP) + BaseSTR × 9
ExHPdouble额外生命值(只读):ExSTR × 9
ExHP2double额外生命值(固定值)
ExHP3double额外生命值(只读):BaseHP × ExHPPercentage
ExHPPercentagedouble额外生命值百分比
MaxHPdouble最大生命值(只读,至少 1):BaseHP + ExHP + ExHP2 + ExHP3
HPdouble当前生命值

魔法值体系

属性类型说明
HasMPbool是否有魔法值(默认 true)
InitialMPdouble初始魔法值(可设置)
BaseMPdouble基础最大魔法值(只读):InitialMP + (Level-1) × (1.5 + 0.14 × InitialMP) + BaseINT × 8
ExMPdouble额外魔法值(只读):ExINT × 8
ExMP2double额外魔法值(固定值)
ExMP3double额外魔法值(只读):BaseMP × ExMPPercentage
ExMPPercentagedouble额外魔法值百分比
MaxMPdouble最大魔法值(只读,至少 1)
MPdouble当前魔法值

爆发能量

属性类型说明
EPdouble当前爆发能量(战技/爆发技消耗,最大 200)

攻击力体系

属性类型说明
InitialATKdouble初始攻击力(可设置)
BaseATKdouble基础攻击力(只读):InitialATK + (Level-1) × (0.95 + 0.045 × InitialATK) + BaseSTR
ExATKdouble额外攻击力(由核心属性提供)
ExATK2double额外攻击力(固定值)
ExATK3double额外攻击力(只读):BaseATK × ExATKPercentage
ExATKPercentagedouble额外攻击力百分比
ATKdouble总攻击力(只读):BaseATK + ExATK + ExATK2 + ExATK3

防御体系

属性类型说明
InitialDEFdouble初始物理护甲(可设置)
BaseDEFdouble基础护甲(只读):InitialDEF + BaseSTR × 0.75
ExDEFdouble额外护甲(只读):ExSTR × 0.75
ExDEF2double额外护甲(固定值)
ExDEF3double额外护甲(只读):BaseDEF × ExDEFPercentage
ExDEFPercentagedouble额外护甲百分比
DEFdouble总护甲(只读)
ExPDRdouble额外物理伤害减免
MDFMagicResistance魔法抗性(按魔法属性区分)

回复体系

属性类型说明
InitialHRdouble初始生命回复(可设置)
HRdouble生命回复(只读):InitialHR + STR × 0.15 + ExHR
ExHRdouble额外生命回复
InitialMRdouble初始魔法回复(可设置)
MRdouble魔法回复(只读):InitialMR + INT × 0.1 + ExMR
ExMRdouble额外魔法回复
ERdouble能量回复

核心属性

属性类型说明
InitialSTR / InitialAGI / InitialINTdouble初始力量 / 敏捷 / 智力
BaseSTR / BaseAGI / BaseINTdouble基础属性(只读):Initial + Growth × (Level-1)
STR / AGI / INTdouble总属性(只读):Base + Ex + Ex2
ExSTR / ExAGI / ExINTdouble额外属性(固定值)
ExSTR2 / ExAGI2 / ExINT2double额外属性(只读):Base × ExPercentage
ExSTRPercentage / ExAGIPercentage / ExINTPercentagedouble额外属性百分比
STRGrowth / AGIGrowth / INTGrowthdouble每级属性成长
STRExemption / AGIExemption / INTExemptiondouble豁免率(只读,由核心属性计算)

速度与行动

属性类型说明
InitialSPDdouble初始行动速度(可设置)
SPDdouble行动速度(只读):InitialSPD + AGI × 0.65 + ExSPD
ExSPDdouble额外行动速度
ActionCoefficientdouble行动系数(只读,减少硬直时间)
ExActionCoefficientdouble额外行动系数
AccelerationCoefficientdouble加速系数(只读,减少吟唱时间)
ExAccelerationCoefficientdouble额外加速系数

其他战斗属性

属性类型说明
CDRdouble冷却缩减(只读)
ExCDRdouble额外冷却缩减
ExATRint额外攻击距离
ExMOVint额外移动距离
ExCritRatedouble额外暴击率
ExCritDMGdouble额外暴击伤害
ExEvadeRatedouble额外闪避率
Lifestealdouble生命偷取
PhysicalPenetrationdouble物理穿透(只读)
ShieldShield护盾
IsUnitbool是否为召唤单位(virtual,默认 false)
MasterCharacter?召唤主(Unit 的主人)

装备与技能

属性类型说明
ClassCharacterClass角色职业
NormalAttackNormalAttack普通攻击(只读)
SkillsHashSet<Skill>技能集合
EffectsHashSet<Effect>特效集合(状态栏)
ItemsHashSet<Item>物品集合

主要方法

生命恢复

方法说明
Recovery(double EP = -1)满状态恢复(EP 默认恢复全部)
Recovery(int time, double EP = -1)按时间流逝恢复(生命/魔法回复 × 时间)
Recovery(double pastHP, double pastMP, double pastMaxHP, double pastMaxMP)按历史值恢复(复活还原用)

装备

方法说明
Equip(Item item, EquipSlotType slot, out Item? previous)装备到指定栏位(返回被替换的物品)
Equip(Item item)自动装备到合适栏位
Equip(Item item, out Item? previous)自动装备(返回被替换的物品)
UnEquip(EquipSlotType type)卸下指定栏位的物品

等级

方法说明
SetLevel(int level, bool recovery = true)设置等级(可选恢复状态)
OnLevelUp(int level = 0, bool checkLevelBreak = true)升级回调
OnLevelBreak()等级突破回调
OnAttributeChanged()属性变化回调(通知技能/特效刷新)

状态

方法说明
UpdateCharacterState()根据特效重新计算角色状态,返回新状态

复制与复活

方法说明
Copy(bool copyEx = false, bool copyMagic = false, bool copyItem = false)创建独立副本
Respawn(Character original)按原角色复活还原

文本输出

方法说明
GetName(bool full = true)角色名
GetInfo(...) / GetSimpleInfo(...)角色信息
GetInBattleInfo(double hardnessTimes, bool simpleStatusBar)战斗 HUD
GetSkillInfo(bool showUser)技能信息
GetItemInfo(...)物品信息
GetAttributeInfo(...) / GetSimpleAttributeInfo(...)属性信息
GetAttributeValues()全部属性的展示值(Dictionary<string, string>,检查点快照 Attributes 的数据来源)
GetStatusInfo()状态信息
GetEquipSlotInfo()装备栏信息
GetBackpackItemsInfo()背包信息
GetMagicResistanceInfo()魔法抗性信息
ToString() 系列多种文本输出(含用户/等级等变体)

继承示例

csharp
public class MyWarrior : Character
{
    public MyWarrior() : base()
    {
        Id = 1;
        Name = "MyGame";
        FirstName = "Warrior";
        PrimaryAttribute = PrimaryAttribute.STR;

        InitialHP = 85;
        InitialMP = 10;
        InitialATK = 25;
        InitialDEF = 8;
        InitialSPD = 300;
        InitialHR = 4;
        InitialMR = 2;

        InitialSTR = 30;  STRGrowth = 3;
        FirstRoleType = RoleType.Guardian;
    }
}

关联

基于 LGPL-3.0 许可证发布