INT CombatCore_T::MagicalNearDamage(Obj_Character& rMe, Obj_Character& rTar, INT nAdditionAttack, INT nAdditionDefence) { __ENTER_FUNCTION INT nDamage; INT nAttack = Attr_VerifyGeneralAttack(rMe.GetAttackMagicNear()+nAdditionAttack); INT nDefence = Attr_VerifyDefence(rTar.GetDefenceMagicNear()+nAdditionDefence); nDamage = NormalDamage(rTar, nAttack, nDefence, IATTRIBUTE_SHIELD_MAGIC_NEAR); INT iResist = rTar.GetMagicNearAttReduce(); nDamage = GetFinalDamages(nDamage, iResist); return nDamage; __LEAVE_FUNCTION return 0; }
VOID StdImpact069_T::FinalDamage( INT * vDamage, Obj_Character &rMe ) const { vDamage[DAMAGE_TYPE_NEAR] -= rMe.GetDefenceNear(); if( rMe.GetNearAttReduce() != 0 ) vDamage[DAMAGE_TYPE_NEAR] /= rMe.GetNearAttReduce(); vDamage[DAMAGE_TYPE_FAR] -= rMe.GetDefenceFar(); if( rMe.GetNearAttReduce() != 0 ) vDamage[DAMAGE_TYPE_FAR] /= rMe.GetFarAttReduce(); vDamage[DAMAGE_TYPE_MAGIC_NEAR] -= rMe.GetDefenceMagicNear(); if( rMe.GetNearAttReduce() != 0 ) vDamage[DAMAGE_TYPE_MAGIC_NEAR] /= rMe.GetMagicNearAttReduce(); vDamage[DAMAGE_TYPE_MAGIC_FAR] -= rMe.GetDefenceMagicFar(); if( rMe.GetFarAttReduce() != 0 ) vDamage[DAMAGE_TYPE_MAGIC_FAR] /= rMe.GetMagicFarAttReduce(); vDamage[DAMAGE_TYPE_GOLD] -= rMe.GetDefenceGold(); vDamage[DAMAGE_TYPE_WOOD] -= rMe.GetDefenceWood(); vDamage[DAMAGE_TYPE_WATER] -= rMe.GetDefenceWater(); vDamage[DAMAGE_TYPE_FIRE] -= rMe.GetDefenceFire(); vDamage[DAMAGE_TYPE_SOIL] -= rMe.GetDefenceSoil(); }