Formula Source
function CommonFun.CalcDamage(srcUser, targetUser, params, logger) local damage, damagetype = CommonFun.CalcBaseDamage(srcUser, targetUser, params, logger) local sharedam, realdam local MonsterBeingNpc = "" local Monster_BeingNpc = Table_Monster[targetUser:GetNpcID()] if Monster_BeingNpc ~= nil then MonsterBeingNpc = Monster_BeingNpc.Type end if 0 < damage and srcUser:isCostBattleCount() == true and (targetUser:GetNpcID() == 0 or MonsterBeingNpc == "BeingNpc" or MonsterBeingNpc == "PetNpc") then local Monsterlevel = 0 local monster_cfg = Table_Monster[srcUser:GetNpcID()] if monster_cfg ~= nil then Monsterlevel = monster_cfg.Level end local PlayerBaseLv = targetUser.BaseLv local PlayerMaxHp = targetUser:GetProperty("MaxHp") local Master = targetUser:GetMasterUser() if Master ~= nil then PlayerBaseLv = Master.BaseLv local MasterMaxHp = Master:GetProperty("MaxHp") if PlayerMaxHp < MasterMaxHp then PlayerMaxHp = MasterMaxHp end end if PlayerMaxHp <= 1 then PlayerMaxHp = 1 end local deltalv = Monsterlevel - PlayerBaseLv if 40 < deltalv then damage = damage + PlayerMaxHp * 0.01 * math.min((deltalv - 40) * 2 + 10, 50) elseif 30 < deltalv then damage = damage + PlayerMaxHp * 0.01 * math.min((deltalv - 30) * 0.75 + 2.5, 10) else if 20 < deltalv then damage = damage + PlayerMaxHp * 0.01 * (deltalv - 20) * 0.25 else end end end if 0 < damage then if targetUser.isServerCall then if targetUser.have_sharedam_server ~= nil and targetUser.have_sharedam_server == true then damage, sharedam, damagetype = CommonFun.CalcShareDamage(srcUser, targetUser, damage, damagetype) end else damage, sharedam, damagetype = CommonFun.CalcShareDamage(srcUser, targetUser, damage, damagetype) end end if 0 < damage and targetUser.diffShowDamage == true then local Level = srcUser.BaseLv local MonsterLevel = Table_MonsterLevel[Level] local MonsterID = targetUser:GetNpcID() local Monster = Table_Monster[MonsterID] if Monster ~= nil and MonsterLevel ~= nil then realdam = damage * Monster.Hp / MonsterLevel.RealMaxHp end end if 0 < damage and srcUser.diffShowDamage == true then local Level = targetUser.BaseLv local MonsterLevel = Table_MonsterLevel[Level] if MonsterLevel ~= nil then damage = damage * MonsterLevel.LevelReduc end end local mapid, maptype = srcUser:GetMapInfo() if 0 < damage and (srcUser:InDamReduceRaid() == true and srcUser:IsUserCamp() == true or mapid == 149 or targetUser:isCostBattleCount() == true) then damage = CommonFun.GetDamReduceValue(srcUser, targetUser, damage) local skillParams = Table_Skill[params.skillIDAndLevel] if skillParams ~= nil and skillParams.DamRatio ~= nil then damage = damage * skillParams.DamRatio end end if 2147483647 <= damage then damage = 2147483647 end return damage, damagetype, sharedam, realdam end
No formula links