/// <summary> /// 填充基础建筑信息 /// </summary> private static void CalcSoldierInfo(s_soldier_typeInfo I, ref SoldierInfo Info) { if (I == null || Info == null) { return; } //获取三围 //初始值 s_soldierstar_typeInfo StarInfo = GetSoldierStarData(Info.SoldierTypeID, Info.StarLevel); if (StarInfo != null) { Info.m_strength_grow = StarInfo.strength_growth; Info.m_agility_grow = StarInfo.agility_growth; Info.m_intelligence_grow = StarInfo.intelligence_growth; Info.m_concussion += StarInfo.concussion; } //当前-初始. int oriStrength = 0; int oriAgility = 0; int oriIntell = 0; int oriStar = GetSoldierOriginalStar(Info.SoldierTypeID); s_soldierstar_typeInfo OriInfo = GetSoldierStarData(Info.SoldierTypeID, oriStar); if (OriInfo != null && StarInfo != null) { oriStrength = OriInfo.strength_growth; oriAgility = OriInfo.agility_growth; oriIntell = OriInfo.intelligence_growth; } //被动技能附加属性 Info.m_Skill.SetAddrData(ref Info.m_AddAttr); Info.m_strength = ScriptM.Formula <int>("CALC_STRENGTH", Info.m_strength_grow, oriStrength, Info.Level, I.strength); Info.m_agility = ScriptM.Formula <int>("CALC_AGILITY", Info.m_agility_grow, oriAgility, Info.Level, I.agility); Info.m_intelligence = ScriptM.Formula <int>("CALC_INTELLIGENCE", Info.m_intelligence_grow, oriIntell, Info.Level, I.intelligence); //增加进阶属性,目前只有冲击力 s_soldierqualityInfo qualityinfo = GetqualityInfoData(Info.SoldierTypeID, Info.Quality); if (qualityinfo != null) { Info.m_concussion += qualityinfo.concussion; } //爆击及闪避 s_soldier_experienceInfo ExpInfo = SoldierM.GetSoldierExpData(Info.Level); if (ExpInfo != null) { Info.m_critratio = ExpInfo.critratio; Info.m_dodgeratio = ExpInfo.dodgeratio; } //阶数,添加装备附加属性 AddEquipAttr(ref Info); CalcSoldierAttr(ref Info); }
/// <summary> /// 炮弹兵是否能增加经验 0:可以增加,1:已经满级不能增加,2:吃完了. /// </summary> /// <returns><c>true</c>, if can add exp was checked, <c>false</c> otherwise.</returns> /// <param name="SoldireTypeID">炮弹兵ID.</param> /// <param name="AddExpNum">炮弹兵增加的经验值</param> /// private int CheckCanAdd() { if (m_parent.GetItemNum() <= 0) { return(2); } sdata.s_soldier_experienceInfo expInfo = SoldierM.GetSoldierExpData(Info.Level); if (expInfo.exp == 0) { return(1); } int MaxLvl = UserM.GetUserMaxHeroLevel(UserDC.GetLevel()); int MaxExp = SoldierM.GetSoldierExp(MaxLvl); if (Info.EXP >= MaxExp && Info.Level >= MaxLvl) { return(1); } return(0); }
/// <summary> /// 设置召唤物数据 /// </summary> private static void SetSummonPetInfo(ref SummonpetInfo Info, s_summonpetInfo I) { if (Info == null || I == null) { return; } Info.m_id = I.id; Info.m_name = I.name; Info.m_type = I.type; Info.m_modeltype = I.modeltype; Info.m_isattack = I.isattack; Info.m_level = I.level; Info.m_shape = I.shape; Info.m_goorder = I.goorder; Info.m_attack_like = I.attack_like; Info.m_attack_type = I.attacktype; Info.m_attack_time = I.attack_time * 0.001f; Info.m_speed = I.speed * 1.0f / MapGrid.m_Pixel; Info.m_jump_distance = I.jump_distance / MapGrid.m_Pixel; Info.m_resist = I.resist; Info.m_hp = I.hp; Info.m_phy_attack = I.physical_attack; Info.m_phy_defend = I.physical_defend; Info.m_phy_crit = I.physical_crit; Info.m_magic_attack = I.magic_attack; Info.m_magic_defend = I.magic_defend; Info.m_magic_crit = I.magic_crit; Info.m_dodge = I.dodge; Info.m_time = I.time; Info.m_AddAttr.SetAddAttrInfo(I); //爆击及闪避 s_soldier_experienceInfo ExpInfo = SoldierM.GetSoldierExpData(I.level); if (ExpInfo != null) { Info.m_critratio = ExpInfo.critratio; Info.m_dodgeratio = ExpInfo.dodgeratio; } // if (I.gskillid > 0) { SoldierSkill skill = new SoldierSkill(); if (SkillM.GetSkillInfo(I.gskillid, ref skill) == true) { Info.m_Skillinfo.Add(skill); } } if (I.skill1id > 0) { SoldierSkill skill = new SoldierSkill(); if (SkillM.GetSkillInfo(I.skill1id, ref skill) == true) { Info.m_Skillinfo.Add(skill); } } if (I.skill2id > 0) { SoldierSkill skill = new SoldierSkill(); if (SkillM.GetSkillInfo(I.skill2id, ref skill) == true) { Info.m_Skillinfo.Add(skill); } } if (I.skill3id > 0) { SoldierSkill skill = new SoldierSkill(); if (SkillM.GetSkillInfo(I.skill3id, ref skill) == true) { Info.m_Skillinfo.Add(skill); } } if (I.skill4id > 0) { SoldierSkill skill = new SoldierSkill(); if (SkillM.GetSkillInfo(I.skill4id, ref skill) == true) { Info.m_Skillinfo.Add(skill); } } }
/// <summary> /// 获取炮弹兵信息 /// </summary> /// <param name="Info">炮弹兵数据</param> public static SoldierInfo GetSoldierInfo(s_monsterInfo monster) { if (monster == null) { return(null); } SoldierInfo I = new SoldierInfo(); // I.m_name = monster.name; I.ID = monster.id; I.SoldierTypeID = monster.id; I.m_modeltype = monster.modeid; I.m_soldier_type = monster.type; I.Level = monster.level; I.StarLevel = monster.star; I.Quality = monster.quality; I.m_hp = monster.hp; I.m_phy_attack = monster.physical_attack; I.m_phy_defend = monster.physical_defend; I.m_phy_crit = monster.physical_crit; I.m_magic_attack = monster.magic_attack; I.m_magic_defend = monster.magic_defend; I.m_dodge = monster.dodge; I.m_Flyspeed = 1.0f * monster.flyspeed / MapGrid.m_Pixel; I.m_attack_like = monster.attack_like; I.m_attack_type = monster.attacktype; I.m_speed = 1.0f * monster.speed / MapGrid.m_Pixel; I.m_jump_distance = monster.jump_distance / MapGrid.m_Pixel; I.m_resist = monster.resist; I.m_attack_time = monster.attack_time * 0.001f; I.m_desc = monster.description; I.m_FireAI = monster.fireai; I.m_shape = monster.shape; I.m_goorder = monster.goorder; I.m_concussion = monster.concussion; I.m_dead_mp = monster.dead_mp; //附加属性 //主附加属性 I.m_AddAttr.SetAddAttrInfo(monster); //被动技能附加属性 I.m_Skill.SetSkill(monster); I.m_Skill.SetAddrData(ref I.m_AddAttr); SetAddAttr(ref I); //爆击及闪避 s_soldier_experienceInfo ExpInfo = SoldierM.GetSoldierExpData(I.Level); if (ExpInfo != null) { I.m_critratio = ExpInfo.critratio; I.m_dodgeratio = ExpInfo.dodgeratio; } I.m_combat_power = monster.power; I.m_hpstart = I.m_hp; I.m_phy_attackstart = I.m_phy_attack; I.m_phy_defendstart = I.m_phy_defend; I.m_phy_critstart = I.m_phy_crit; I.m_magic_attackstart = I.m_magic_attack; I.m_magic_defendstart = I.m_magic_defend; I.m_magic_critstart = I.m_magic_crit; I.m_strengthstart = I.m_strength; I.m_agilitystart = I.m_agility; I.m_intelligencestart = I.m_intelligence; return(I); }