Part64:Magic damage(P95)
1:效果和操作
效果:进行简单的法术攻击计算以及法抗计算
操作:DoMagicaDamage法伤计算,CheckTargetResistance法抗计算
2:代码改变
//CharacterStats代码修改
public Stat magicResistance;//法抗
[Header("Magic stats")]
public Stat fireDamage;//火攻
public Stat iceDamage;//冰攻
public Stat lightingDamage;//电攻
public bool isIgnited; //被灼烧(已经完成)
public bool isChilded;//被冰住(已经完成):减低20%的盔甲armor防御
public bool isShocked;//被电击(已经完成):增加20%的迟缓度/命中率
public virtual void DoDamage(CharacterStats _targetStats)
{
DoMagicaDamage(_targetStats);
}
public virtual void DoMagicaDamage(CharacterStats _targetStats)//法伤计算
{
int _fireDamage = fireDamage.GetValue();
int _iceDamage = iceDamage.GetValue();
int _lightingDamage = lightingDamage.GetValue();
int totleMagicalDamage = _fireDamage + _iceDamage + _lightingDamage + intelligence.GetValue();
totleMagicalDamage = CheckTargetResistance(_targetStats, totleMagicalDamage);
_targetStats.TakeDamage(totleMagicalDamage);
}
private static int CheckTargetResistance(CharacterStats _targetStats, int totleMagicalDamage)//法抗计算
{
totleMagicalDamage -= _targetStats.magicResistance.GetValue() + (_targetStats.intelgence .GetValue()* 3);
//法术伤害想要减去法抗以及没1点智慧增加点3点法抗
totleMagicalDamage = Mathf.Clamp(totleMagicalDamage, 1, int.MaxValue);
//设置最低伤害为1a
return totleMagicalDamage;
}
public void ApplyAilments(bool _ignite,bool _chill,bool _shock)//判断异常状态
{
if(isIgnited || isChilded || isShocked)
{
return;
}
isIgnited = _ignite;
isChilded = _chill;
isShocked = _shock;
}