protected static double GetTempDamage(BattleBaseAttrs caster, BattleBaseAttrs target, bool isTargetPlayer)
    {
        double finalAttack  = BattleCalculator.GetFinalAttack(caster, isTargetPlayer);
        double finalDefence = BattleCalculator.GetFinalDefence(target);

        return(Math.Max(0.2 * finalAttack, Math.Min(finalAttack - finalDefence, 0.8 * finalAttack + Math.Max(0.0, 0.2 * finalAttack - finalDefence) / (double)Math.Max(1, caster.Lv - target.Lv))));
    }
 protected static double GetIgnoreTargetDamage(BattleBaseAttrs caster, bool isTargetPlayer, XDict <GameData.AttrType, long> casterTempAttrs)
 {
     if (isTargetPlayer)
     {
         return(((double)caster.Atk * (1.0 + (double)caster.AtkMulAmend * 0.001) + (double)caster.PvpAtk * (1.0 + (double)caster.PvpAtkMulAmend * 0.001)) * (double)caster.TryAddValue(GameData.AttrType.SkillIgnoreDefenceHurt, casterTempAttrs) * 0.001);
     }
     return(((double)caster.Atk * (1.0 + (double)caster.AtkMulAmend * 0.001) + (double)caster.PveAtk * (1.0 + (double)caster.PveAtkMulAmend * 0.001)) * (double)caster.TryAddValue(GameData.AttrType.SkillIgnoreDefenceHurt, casterTempAttrs) * 0.001);
 }
    protected static bool CheckHit(BattleBaseAttrs caster, BattleBaseAttrs target, StringBuilder sb = null)
    {
        int num = Random.Range(0, 1000);

        if (sb != null)
        {
            sb.Append("A: " + num + "\n");
        }
        return(num < Math.Max(500, Math.Min(1000, caster.HitRatio - target.DodgeRatio)));
    }
    protected static bool CheckCrit(BattleBaseAttrs caster, BattleBaseAttrs target, out int randomIndex, StringBuilder sb = null)
    {
        int num = BattleCalculator.serverRandom.Next(0, 1000, out randomIndex);

        if (sb != null)
        {
            sb.Append("B: " + num + "\n");
        }
        return(num < Math.Max(0, Math.Min(400, caster.CritRatio - target.DecritRatio)));
    }
Exemple #5
0
 public static void AppDirectAttrChangeByTemplateID(BattleBaseAttrs entityBase, int templateID, bool isAdd = true)
 {
     if (entityBase == null)
     {
         return;
     }
     if (templateID == 0)
     {
         return;
     }
     if (isAdd)
     {
         entityBase.AddValuesByTemplateID(templateID);
     }
     else
     {
         entityBase.RemoveValuesByTemplateID(templateID);
     }
 }
 public static int CalculateEffectCasterActPoint(BattleBaseAttrs caster, double effectCasterActPoint)
 {
     return((int)(effectCasterActPoint * (1.0 + (double)caster.ActPointRecoverSpeedAmend * 0.001)));
 }
 public static long CalculateTreatment(BattleBaseAttrs caster, BattleBaseAttrs target, bool isTargetPlayer, XDict <GameData.AttrType, long> casterTempAttrs, XDict <GameData.AttrType, long> targetTempAttrs)
 {
     return((long)(BattleCalculator.GetFinalAttack(caster, isTargetPlayer) * (double)caster.TryAddValue(GameData.AttrType.SkillTreatScaleBOAtk, casterTempAttrs) * 0.001 * (1.0 + (double)target.HealIncreasePercent * 0.001) + (double)(target.RealHpLmt * caster.TryAddValue(GameData.AttrType.SkillTreatScaleBOHpLmt, casterTempAttrs)) * 0.001 * (1.0 + (double)target.HealIncreasePercent * 0.001)));
 }
 public static long CalculateTreat2ment(BattleBaseAttrs target, XDict <GameData.AttrType, long> targetTempAttrs)
 {
     return(target.TryAddValue(GameData.AttrType.HpRestore, targetTempAttrs));
 }
 public static int CalculateKillRecover(BattleBaseAttrs source, BattleBaseAttrs target)
 {
     return(0);
 }
 public static int CalculateWeak(BattleBaseAttrs caster, XDict <GameData.AttrType, long> casterTempAttrs)
 {
     return((int)((double)caster.TryAddValue(GameData.AttrType.VpAtk, casterTempAttrs) * (1.0 + (double)caster.VpAtkMulAmend * 0.001)));
 }
    public static BattleCalculator.DamageResult CalculateDamage(BattleBaseAttrs caster, BattleBaseAttrs target, bool isCasterPlayer, bool isTargetPlayer, XDict <GameData.AttrType, long> casterTempAttrs, XDict <GameData.AttrType, long> targetTempAttrs)
    {
        FileStream    fileStream    = null;
        StreamWriter  streamWriter  = null;
        StringBuilder stringBuilder = null;

        if (ClientApp.Instance.isShowFightLog)
        {
            string text = Application.get_dataPath() + "/../BattleLog.txt";
            try
            {
                fileStream    = new FileStream(text, 4, 3);
                streamWriter  = new StreamWriter(fileStream, Encoding.get_UTF8());
                stringBuilder = new StringBuilder();
            }
            catch (Exception ex)
            {
                Debug.LogError("Can't Write Log File!\n" + ex.get_Message());
                return(null);
            }
            stringBuilder.Append("Caster: \n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.Atk, caster.Atk) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.Defence, caster.Defence) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.PveAtk, caster.PveAtk) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.PvpAtk, caster.PvpAtk) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.HitRatio, caster.HitRatio) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.CritRatio, caster.CritRatio) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.CritHurtAddRatio, caster.CritHurtAddRatio) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.DeparryRatio, caster.DeparryRatio) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.SuckBloodScale, caster.SuckBloodScale) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.HurtAddRatio, caster.HurtAddRatio) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.PveHurtAddRatio, caster.PveHurtAddRatio) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.PvpHurtAddRatio, caster.PvpHurtAddRatio) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.AtkMulAmend, caster.AtkMulAmend) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.PveAtkMulAmend, caster.PveAtkMulAmend) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.PvpAtkMulAmend, caster.PvpAtkMulAmend) + "\n");
            stringBuilder.Append("Target: \n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.Defence, target.Defence) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.HpLmt, target.HpLmt) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.DodgeRatio, target.DodgeRatio) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.DecritRatio, target.DecritRatio) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.ParryRatio, target.ParryRatio) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.ParryHurtDeRatio, target.ParryHurtDeRatio) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.HurtDeRatio, target.ParryHurtDeRatio) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.PveHurtDeRatio, target.PveHurtDeRatio) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.PvpHurtDeRatio, target.PvpHurtDeRatio) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.DefMulAmend, target.DefMulAmend) + "\n");
            stringBuilder.Append(AttrUtility.GetStandardDesc(GameData.AttrType.HpLmtMulAmend, target.HpLmtMulAmend) + "\n");
            stringBuilder.Append("Calculate: \n");
        }
        BattleCalculator.DamageResult damageResult = new BattleCalculator.DamageResult();
        if (BattleCalculator.CheckHit(caster, target, stringBuilder))
        {
            if (ClientApp.Instance.isShowFightLog)
            {
                stringBuilder.Append("IsHit: " + true + "\n");
            }
            bool   flag = BattleCalculator.CheckParry(caster, target, out damageResult.parryRandomIndex, stringBuilder);
            double finalParryAddRatio = BattleCalculator.GetFinalParryAddRatio(target, flag);
            if (ClientApp.Instance.isShowFightLog)
            {
                stringBuilder.Append("IsParry: " + flag + "\n");
            }
            bool   flag2             = BattleCalculator.CheckCrit(caster, target, out damageResult.critRandomIndex, stringBuilder);
            double finalCritAddRatio = BattleCalculator.GetFinalCritAddRatio(caster, flag2);
            if (ClientApp.Instance.isShowFightLog)
            {
                stringBuilder.Append("IsCrit: " + flag2 + "\n");
            }
            double        tempDamage         = BattleCalculator.GetTempDamage(caster, target, isTargetPlayer);
            double        holyDamage         = BattleCalculator.GetHolyDamage(caster, target, casterTempAttrs);
            double        ignoreTargetDamage = BattleCalculator.GetIgnoreTargetDamage(caster, isTargetPlayer, casterTempAttrs);
            double        num  = (double)BattleCalculator.GetCritAddDamage(caster, flag2);
            List <double> list = new List <double>();
            list.Add(tempDamage * (double)caster.TryAddValue(GameData.AttrType.SkillNmlDmgScale, casterTempAttrs) * 0.001 + (double)caster.TryAddValue(GameData.AttrType.SkillNmlDmgAddAmend, casterTempAttrs));
            list.Add(finalCritAddRatio);
            list.Add(finalParryAddRatio);
            list.Add((!isCasterPlayer || !isTargetPlayer) ? Math.Max(0.0, (1000.0 + (double)caster.PveHurtAddRatio - (double)target.PveHurtDeRatio) * 0.001) : Math.Max(0.0, (1000.0 + (double)caster.PvpHurtAddRatio - (double)target.PvpHurtDeRatio) * 0.001));
            list.Add(Math.Max(0.0, (double)(1000 + caster.HurtAddRatio - target.HurtDeRatio) * 0.001));
            double num2 = BattleCalculator.GetMultipleResult(list) + holyDamage + ignoreTargetDamage + num;
            double num3 = Math.Max(1.0, num2 * (double)BattleCalculator.serverRandom.Next(9500, 10500, out damageResult.damageRandomIndex) * 9.9999997473787516E-05);
            double num4 = BattleCalculator.CalculateLifeSteal(caster, (int)num3);
            damageResult.IsMiss    = false;
            damageResult.IsCrit    = flag2;
            damageResult.IsParry   = flag;
            damageResult.Damage    = (long)num3;
            damageResult.Lifesteal = (long)num4;
            if (ClientApp.Instance.isShowFightLog)
            {
                stringBuilder.Append("TempDamage: " + tempDamage + "\n");
                stringBuilder.Append("HolyDamage: " + holyDamage + "\n");
                stringBuilder.Append("SkillNmlDmgScale: " + caster.TryAddValue(GameData.AttrType.SkillNmlDmgScale, casterTempAttrs) + "\n");
                stringBuilder.Append("SkillNmlDmgAddAmend: " + caster.TryAddValue(GameData.AttrType.SkillNmlDmgAddAmend, casterTempAttrs) + "\n");
                stringBuilder.Append("FixFinalDamage: " + num3 + "\n");
                stringBuilder.Append("Lifesteal: " + num4 + "\n");
            }
        }
        else
        {
            damageResult.parryRandomIndex  = 0;
            damageResult.critRandomIndex   = 0;
            damageResult.damageRandomIndex = 0;
            damageResult.IsMiss            = true;
            damageResult.IsParry           = false;
            damageResult.IsCrit            = false;
            damageResult.Damage            = 0L;
            damageResult.Lifesteal         = 0L;
            if (ClientApp.Instance.isShowFightLog)
            {
                stringBuilder.Append("IsHit: " + false + "\n");
            }
        }
        if (ClientApp.Instance.isShowFightLog)
        {
            stringBuilder.Append("================================================================\n\n");
            Debug.LogError(stringBuilder.ToString());
            streamWriter.Write(stringBuilder.ToString());
            streamWriter.Close();
            fileStream.Close();
        }
        return(damageResult);
    }
 protected static double CalculateLifeSteal(BattleBaseAttrs caster, int finalDamage)
 {
     return((double)caster.SuckBloodScale * 0.001 * (double)finalDamage);
 }
Exemple #13
0
    public static MapObjInfo CreateMonsterMapObjInfo(int poolID, int monsterTypeID, int monsterLevel, long ownerID, int camp, bool isBoss, Vector3 position, bool isFighting = true)
    {
        Monster monsterData = DataReader <Monster> .Get(monsterTypeID);

        if (monsterData == null)
        {
            EntityWorld.Instance.ForceOut("没有数据", string.Format("Monster表根本没有怪物{0}的数据", monsterTypeID), null);
        }
        MonsterAttr monsterAttr = Enumerable.FirstOrDefault <MonsterAttr>(DataReader <MonsterAttr> .DataList, (MonsterAttr x) => x.lv == monsterLevel && x.id == monsterData.AttributeTemplateID);

        if (monsterAttr == null)
        {
            EntityWorld.Instance.ForceOut("没有数据", string.Format("怪物属性表里没有模板ID{0} & 等级{1}的数据\n怪物id为{2}", monsterData.AttributeTemplateID, monsterLevel, monsterTypeID), null);
        }
        MapObjInfo mapObjInfo = new MapObjInfo();

        mapObjInfo.objType   = GameObjectType.ENUM.Soldier;
        mapObjInfo.id        = (long)poolID;
        mapObjInfo.ownerId   = ownerID;
        mapObjInfo.typeId    = monsterTypeID;
        mapObjInfo.modelId   = monsterData.model;
        mapObjInfo.name      = mapObjInfo.id.ToString();
        mapObjInfo.rankValue = 0;
        mapObjInfo.pos       = new Pos();
        mapObjInfo.pos.x     = (float)((int)position.x * 100);
        mapObjInfo.pos.y     = (float)((int)position.z * 100);
        mapObjInfo.vector    = InstanceManager.GetMonsterFixBornDirection(monsterData.monsterBornDirection, position, ownerID, monsterData.scenePoint);
        mapObjInfo.mapLayer  = 0;
        BattleBaseAttrs battleBaseAttrs = new BattleBaseAttrs();

        battleBaseAttrs.SetValue(GameData.AttrType.Lv, monsterLevel, true);
        battleBaseAttrs.SetValue(GameData.AttrType.HpLmt, monsterAttr.hp, true);
        battleBaseAttrs.SetValue(GameData.AttrType.Atk, monsterAttr.atk, true);
        battleBaseAttrs.SetValue(GameData.AttrType.Defence, monsterAttr.defence, true);
        battleBaseAttrs.SetValue(GameData.AttrType.HitRatio, monsterAttr.hit, true);
        battleBaseAttrs.SetValue(GameData.AttrType.DodgeRatio, monsterAttr.dex, true);
        battleBaseAttrs.SetValue(GameData.AttrType.CritRatio, monsterAttr.crt, true);
        battleBaseAttrs.SetValue(GameData.AttrType.DecritRatio, monsterAttr.penetration, true);
        battleBaseAttrs.SetValue(GameData.AttrType.CritHurtAddRatio, monsterAttr.critHurtAddRatio, true);
        battleBaseAttrs.SetValue(GameData.AttrType.ParryRatio, monsterAttr.parry, true);
        battleBaseAttrs.SetValue(GameData.AttrType.DeparryRatio, monsterAttr.vigour, true);
        battleBaseAttrs.SetValue(GameData.AttrType.ParryHurtDeRatio, monsterAttr.parryHurtDeRatio, true);
        battleBaseAttrs.SetValue(GameData.AttrType.ActSpeed, monsterAttr.attackSpeed, true);
        battleBaseAttrs.SetValue(GameData.AttrType.VpLmt, monsterAttr.Vp, true);
        battleBaseAttrs.SetValue(GameData.AttrType.VpResume, monsterAttr.VpResume, true);
        battleBaseAttrs.SetValue(GameData.AttrType.IdleVpResume, monsterAttr.IdleVpResume, true);
        if (monsterData.propId != 0)
        {
            battleBaseAttrs.AddValuesByTemplateID(monsterData.propId);
        }
        battleBaseAttrs.SetValue(GameData.AttrType.HpLmt, (long)((double)battleBaseAttrs.GetValue(GameData.AttrType.HpLmt) * (1.0 + (double)monsterData.HpAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.Atk, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.Atk) * (1.0 + (double)monsterData.AttAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.Defence, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.Defence) * (1.0 + (double)monsterData.DefAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.HitRatio, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.HitRatio) * (1.0 + (double)monsterData.HitAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.DodgeRatio, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.DodgeRatio) * (1.0 + (double)monsterData.DexAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.CritRatio, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.CritRatio) * (1.0 + (double)monsterData.CrtAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.DecritRatio, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.DecritRatio) * (1.0 + (double)monsterData.PenAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.CritHurtAddRatio, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.CritHurtAddRatio) * (1.0 + (double)monsterData.CthAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.ParryRatio, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.ParryRatio) * (1.0 + (double)monsterData.ParAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.DeparryRatio, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.DeparryRatio) * (1.0 + (double)monsterData.VigAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.ParryHurtDeRatio, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.ParryHurtDeRatio) * (1.0 + (double)monsterData.PrhAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.ActSpeed, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.ActSpeed) * (1.0 + (double)monsterData.AtsAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.VpLmt, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.VpLmt) * (1.0 + (double)monsterData.VpAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.VpResume, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.VpResume) * (1.0 + (double)monsterData.VsAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.IdleVpResume, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.IdleVpResume) * (1.0 + (double)monsterData.IvAmplificationRate * 0.001)), true);
        mapObjInfo.battleInfo = LocalDimensionMonsterInfoCreator.CreateMonsterBattleBaseInfo(monsterData, battleBaseAttrs, camp, isBoss, isFighting);
        return(mapObjInfo);
    }
 protected static double GetFinalParryAddRatio(BattleBaseAttrs target, bool isParry)
 {
     return((!isParry) ? 1.0 : ((double)Math.Max(200L, 1000L - BattleCalculator.battleConstParams.get_Item("base_parry_sub_dmg") - (long)target.ParryHurtDeRatio) * 0.001));
 }
    public static bool CalculateAddBuff(BattleBaseAttrs caster, BattleBaseAttrs target, double baseAddProb, int elementType)
    {
        double num = Math.Min(Math.Max(0.0, baseAddProb + (double)caster.GetBuffCtrlAttrs(elementType).AddProbAddAmend), 1000.0);

        return((double)Random.Range(0, 1000) < num);
    }
 protected static double GetFinalDefence(BattleBaseAttrs target)
 {
     return((double)target.Defence * (1.0 + (double)target.DefMulAmend * 0.001));
 }
 protected static double GetFinalAttack(BattleBaseAttrs caster, bool isTargetPlayer)
 {
     return((!isTargetPlayer) ? ((double)caster.Atk * (1.0 + (double)caster.AtkMulAmend * 0.001) + (double)caster.PveAtk * (1.0 + (double)caster.PveAtkMulAmend * 0.001)) : ((double)caster.Atk * (1.0 + (double)caster.AtkMulAmend * 0.001) + (double)caster.PvpAtk * (1.0 + (double)caster.PvpAtkMulAmend * 0.001)));
 }
 protected static int GetCritAddDamage(BattleBaseAttrs caster, bool isCrit)
 {
     return((!isCrit) ? 0 : caster.CritAddValue);
 }
 protected static double GetFinalCritAddRatio(BattleBaseAttrs caster, bool isCrit)
 {
     return((!isCrit) ? 1.0 : ((double)(BattleCalculator.battleConstParams.get_Item("base_crt_dmg_addi") + (long)caster.CritHurtAddRatio) * 0.001));
 }
 protected static double GetHolyDamage(BattleBaseAttrs caster, BattleBaseAttrs target, XDict <GameData.AttrType, long> casterTempAttrs)
 {
     return((double)caster.TryAddValue(GameData.AttrType.SkillHolyDmgScaleBOCurHp, casterTempAttrs) * 0.001 * (double)target.Hp + (double)caster.TryAddValue(GameData.AttrType.SkillHolyDmgScaleBOMaxHp, casterTempAttrs) * 0.001 * (double)target.RealHpLmt);
 }
Exemple #21
0
    protected static BattleBaseInfo CreateMonsterBattleBaseInfo(Monster monsterData, BattleBaseAttrs attrs, int camp, bool isBoss, bool isFighting = true)
    {
        if (attrs == null)
        {
            return(null);
        }
        BattleBaseInfo battleBaseInfo = new BattleBaseInfo();

        battleBaseInfo.publicBaseInfo            = new PublicBaseInfo();
        battleBaseInfo.publicBaseInfo.simpleInfo = new SimpleBaseInfo();
        battleBaseInfo.battleBaseAttr            = new BattleBaseAttr();
        battleBaseInfo.wrapType = GameObjectType.ENUM.Monster;
        battleBaseInfo.camp     = camp;
        battleBaseInfo.publicBaseInfo.simpleInfo.MoveSpeed = DataReader <AvatarModel> .Get(monsterData.model).speed;

        battleBaseInfo.publicBaseInfo.simpleInfo.AtkSpeed = attrs.ActSpeed;
        battleBaseInfo.publicBaseInfo.simpleInfo.Lv       = attrs.Lv;
        battleBaseInfo.publicBaseInfo.simpleInfo.Fighting = attrs.Fighting;
        battleBaseInfo.publicBaseInfo.simpleInfo.VipLv    = attrs.VipLv;
        battleBaseInfo.publicBaseInfo.Atk                        = attrs.Atk;
        battleBaseInfo.publicBaseInfo.Defence                    = attrs.Defence;
        battleBaseInfo.publicBaseInfo.HpLmt                      = attrs.HpLmt;
        battleBaseInfo.publicBaseInfo.PveAtk                     = attrs.PveAtk;
        battleBaseInfo.publicBaseInfo.PvpAtk                     = attrs.PvpAtk;
        battleBaseInfo.publicBaseInfo.HitRatio                   = attrs.HitRatio;
        battleBaseInfo.publicBaseInfo.DodgeRatio                 = attrs.DodgeRatio;
        battleBaseInfo.publicBaseInfo.CritRatio                  = attrs.CritRatio;
        battleBaseInfo.publicBaseInfo.DecritRatio                = attrs.DecritRatio;
        battleBaseInfo.publicBaseInfo.CritHurtAddRatio           = attrs.CritHurtAddRatio;
        battleBaseInfo.publicBaseInfo.ParryRatio                 = attrs.ParryRatio;
        battleBaseInfo.publicBaseInfo.DeparryRatio               = attrs.DeparryRatio;
        battleBaseInfo.publicBaseInfo.ParryHurtDeRatio           = attrs.ParryHurtDeRatio;
        battleBaseInfo.publicBaseInfo.SuckBloodScale             = attrs.SuckBloodScale;
        battleBaseInfo.publicBaseInfo.HurtAddRatio               = attrs.HurtAddRatio;
        battleBaseInfo.publicBaseInfo.HurtDeRatio                = attrs.HurtDeRatio;
        battleBaseInfo.publicBaseInfo.PveHurtAddRatio            = attrs.PveHurtAddRatio;
        battleBaseInfo.publicBaseInfo.PveHurtDeRatio             = attrs.PveHurtDeRatio;
        battleBaseInfo.publicBaseInfo.PvpHurtAddRatio            = attrs.PvpHurtAddRatio;
        battleBaseInfo.publicBaseInfo.PvpHurtDeRatio             = attrs.PvpHurtDeRatio;
        battleBaseInfo.publicBaseInfo.AtkMulAmend                = attrs.AtkMulAmend;
        battleBaseInfo.publicBaseInfo.DefMulAmend                = attrs.DefMulAmend;
        battleBaseInfo.publicBaseInfo.HpLmtMulAmend              = attrs.HpLmtMulAmend;
        battleBaseInfo.publicBaseInfo.PveAtkMulAmend             = attrs.PveAtkMulAmend;
        battleBaseInfo.publicBaseInfo.PvpAtkMulAmend             = attrs.PvpAtkMulAmend;
        battleBaseInfo.battleBaseAttr.ActPointLmt                = attrs.ActPointLmt;
        battleBaseInfo.publicBaseInfo.ActPointRecoverSpeedAmend  = attrs.ActPointRecoverSpeedAmend;
        battleBaseInfo.publicBaseInfo.VpLmt                      = attrs.VpLmt;
        battleBaseInfo.publicBaseInfo.VpLmtMulAmend              = attrs.VpLmtMulAmend;
        battleBaseInfo.publicBaseInfo.VpAtk                      = attrs.VpAtk;
        battleBaseInfo.publicBaseInfo.VpAtkMulAmend              = attrs.VpAtkMulAmend;
        battleBaseInfo.publicBaseInfo.VpResume                   = attrs.VpResume;
        battleBaseInfo.publicBaseInfo.IdleVpResume               = attrs.IdleVpResume;
        battleBaseInfo.publicBaseInfo.WaterBuffAddProbAddAmend   = attrs.WaterBuffAddProbAddAmend;
        battleBaseInfo.publicBaseInfo.WaterBuffDurTimeAddAmend   = attrs.WaterBuffDurTimeAddAmend;
        battleBaseInfo.publicBaseInfo.ThunderBuffAddProbAddAmend = attrs.ThunderBuffAddProbAddAmend;
        battleBaseInfo.publicBaseInfo.ThunderBuffAddProbAddAmend = attrs.ThunderBuffAddProbAddAmend;
        battleBaseInfo.publicBaseInfo.HealIncreasePercent        = attrs.HealIncreasePercent;
        battleBaseInfo.publicBaseInfo.CritAddValue               = attrs.CritAddValue;
        battleBaseInfo.publicBaseInfo.HpRestore                  = attrs.HpRestore;
        battleBaseInfo.battleBaseAttr.BuffMoveSpeedMulPosAmend   = 0;
        battleBaseInfo.battleBaseAttr.BuffActSpeedMulPosAmend    = 0;
        battleBaseInfo.battleBaseAttr.SkillTreatScaleBOAtk       = 0;
        battleBaseInfo.battleBaseAttr.SkillTreatScaleBOHpLmt     = 0;
        battleBaseInfo.battleBaseAttr.SkillNmlDmgScale           = 0;
        battleBaseInfo.battleBaseAttr.SkillNmlDmgAddAmend        = 0;
        battleBaseInfo.battleBaseAttr.SkillHolyDmgScaleBOMaxHp   = 0;
        battleBaseInfo.battleBaseAttr.SkillHolyDmgScaleBOCurHp   = 0;
        battleBaseInfo.battleBaseAttr.Affinity                   = 0;
        battleBaseInfo.battleBaseAttr.OnlineTime                 = 0;
        battleBaseInfo.battleBaseAttr.ActPoint                   = attrs.ActPoint;
        battleBaseInfo.battleBaseAttr.Hp = (long)((double)battleBaseInfo.publicBaseInfo.HpLmt * (1.0 + (double)battleBaseInfo.publicBaseInfo.HpLmtMulAmend * 0.001));
        battleBaseInfo.battleBaseAttr.Vp = (int)((double)battleBaseInfo.publicBaseInfo.VpLmt * (1.0 + (double)battleBaseInfo.publicBaseInfo.VpLmtMulAmend * 0.001));
        battleBaseInfo.ownedListIdx      = 0;
        battleBaseInfo.ownedIds.Clear();
        for (int i = 0; i < monsterData.skill.get_Count(); i++)
        {
            battleBaseInfo.skills.Add(new BattleSkillInfo
            {
                skillIdx = i + 1,
                skillId  = monsterData.skill.get_Item(i)
            });
        }
        battleBaseInfo.isLoading          = false;
        battleBaseInfo.isFit              = false;
        battleBaseInfo.isInFit            = false;
        battleBaseInfo.isFighting         = isFighting;
        battleBaseInfo.isFixed            = false;
        battleBaseInfo.isStatic           = false;
        battleBaseInfo.isTaunt            = false;
        battleBaseInfo.isSuperArmor       = false;
        battleBaseInfo.isIgnoreDmgFormula = false;
        battleBaseInfo.isCloseRenderer    = false;
        battleBaseInfo.isStun             = false;
        battleBaseInfo.isMoveCast         = false;
        battleBaseInfo.isAssaulting       = false;
        battleBaseInfo.isKnocking         = false;
        battleBaseInfo.isSuspended        = false;
        battleBaseInfo.isSkillManaging    = false;
        battleBaseInfo.isSkillPressing    = false;
        battleBaseInfo.isBorning          = true;
        battleBaseInfo.isBoss             = isBoss;
        battleBaseInfo.pressingSkillId    = 0;
        battleBaseInfo.reliveTimes        = 0;
        return(battleBaseInfo);
    }