/// <summary> /// 填充基础建筑信息 /// </summary> private static void CalcStageBuildInfo(s_stagebuildInfo I, ref BuildInfo Info) { if (I == null || Info == null) { return; } //获取技能 Info.m_Skill = GetSkill(Info.BuildType, Info.Quality); s_buildstarInfo StarInfo = GetBuildStar(Info.BuildType, Info.StarLevel); s_buildqualityInfo QualityInfo = GetBuildQuality(Info.BuildType, Info.Quality); int originalStar = buildingM.GetMinBuildStar(Info.BuildType); s_buildstarInfo oriInfo = buildingM.GetBuildStar(Info.BuildType, originalStar); //建筑物三围 //Info.m_Solidity = CalcSolidity(I, StarInfo, oriInfo, QualityInfo, Info.Level); //Info.m_Intensity = CalcIntensity(I, StarInfo, oriInfo, QualityInfo, Info.Level); //Info.m_Tenacity = CalcTenacity(I, StarInfo, oriInfo, QualityInfo, Info.Level); Info.m_hp = I.hp; Info.m_phyattack = I.phy_attack; Info.m_magicattack = I.magic_attack; Info.m_phydefend = I.physicaldefend; Info.m_magicdefend = I.magicdefend; Info.m_DefensePower = CalcDefendPower(Info.Quality, Info.StarLevel, Info.Level); Info.m_bear = I.bear; }
/// <summary> /// 填充基础建筑信息 /// </summary> private static void CalcBuildInfo(s_building_typeInfo I, ref BuildInfo Info) { if (I == null || Info == null) { return; } //获取技能 Info.m_Skill = GetSkill(Info.BuildType, Info.Quality); s_buildstarInfo StarInfo = GetBuildStar(Info.BuildType, Info.StarLevel); s_buildqualityInfo QualityInfo = GetBuildQuality(Info.BuildType, Info.Quality); int originalStar = buildingM.GetMinBuildStar(Info.BuildType); s_buildstarInfo oriInfo = buildingM.GetBuildStar(Info.BuildType, originalStar); //建筑物三围 Info.m_Solidity = CalcSolidity(I, StarInfo, oriInfo, QualityInfo, Info.Level); Info.m_Intensity = CalcIntensity(I, StarInfo, oriInfo, QualityInfo, Info.Level); Info.m_Tenacity = CalcTenacity(I, StarInfo, oriInfo, QualityInfo, Info.Level); Info.m_hp = CalcHp(I, QualityInfo, Info.m_Solidity); Info.m_phyattack = CalcPhyAttack(I, QualityInfo, Info.m_Intensity); Info.m_magicattack = CalcMagAttack(I, QualityInfo, Info.m_Intensity); Info.m_phydefend = CalcPhyDefend(I, QualityInfo, Info.m_Tenacity); Info.m_magicdefend = CalcMagDefend(I, QualityInfo, Info.m_Tenacity); Info.m_DefensePower = CalcDefendPower(Info.Quality, Info.StarLevel, Info.Level); Info.m_bear = CalcBear(I, StarInfo, QualityInfo); }
/// <summary> /// 获取升级需要的等级. /// </summary> public static int GetUpQualityLevelNeed(BuildInfo info) { s_buildqualityInfo qualityInfo = GetBuildQuality(info.BuildType, info.Quality); if (qualityInfo != null) { return(qualityInfo.levellimit); } return(0); }
/// <summary> /// 计算魔法防御 /// </summary> private static int CalcMagDefend(s_building_typeInfo TypeInfo, s_buildqualityInfo QualityInfo, float Tenacity) { if (TypeInfo == null) { return(0); } float k5 = ConfigM.GetBuildUpParam(5); float add = (Tenacity - TypeInfo.tenacity * 0.01f) * k5; int value = TypeInfo.magicdefend + (int)add; if (QualityInfo != null) { value += QualityInfo.addmagicdefend; } return(value); }
/// <summary> /// 计算物理防御 /// </summary> private static int CalcPhyDefend(s_building_typeInfo TypeInfo, s_buildqualityInfo QualityInfo, float Tenacity) { if (TypeInfo == null) { return(0); } float k4 = ConfigM.GetBuildUpParam(4); float add = (Tenacity - TypeInfo.tenacity * 0.01f) * k4; int value = TypeInfo.physicaldefend + (int)add; if (QualityInfo != null) { value += QualityInfo.addphydefend; } return(value); }
/// <summary> /// 计算魔法攻击 /// </summary> private static int CalcMagAttack(s_building_typeInfo TypeInfo, s_buildqualityInfo QualityInfo, float Intensity) { if (TypeInfo == null) { return(0); } float k3 = ConfigM.GetBuildUpParam(3); float add = (Intensity - TypeInfo.intensity * 0.01f) * k3; int value = TypeInfo.magic_attack + (int)add; if (QualityInfo != null) { value += QualityInfo.addmagicattack; } return(value); }
/// <summary> /// 计算物理攻击 /// </summary> private static int CalcPhyAttack(s_building_typeInfo TypeInfo, s_buildqualityInfo QualityInfo, float Intensity) { if (TypeInfo == null) { return(0); } float k2 = ConfigM.GetBuildUpParam(2); float add = (Intensity - TypeInfo.intensity * 0.01f) * k2; int value = TypeInfo.phy_attack + (int)add; if (QualityInfo != null) { value += QualityInfo.addphyattack; } return(value); }
/// <summary> /// 计算血量上限 /// </summary> private static int CalcHp(s_building_typeInfo TypeInfo, s_buildqualityInfo QualityInfo, float Solidity) { if (TypeInfo == null) { return(0); } float k1 = ConfigM.GetBuildUpParam(1); float add = (Solidity - TypeInfo.solidity * 0.01f) * k1; int value = TypeInfo.hp + (int)add; if (QualityInfo != null) { value += QualityInfo.addhp; } return(value); }
/// <summary> /// 获取升级需要的材料及等级 /// </summary> /// <param name="BuildType">类型</param> /// <param name="Quality">品阶</param> /// <param name="NeedMaterial">需要材料,key item id,value 数量</param> public static void GetUpQualityNeed(int BuildType, int Quality, ref Dictionary <int, int> NeedMaterial, ref int NeedLevel) { NeedLevel = 1; if (NeedMaterial == null) { NeedMaterial = new Dictionary <int, int>(); } NeedMaterial.Clear(); s_buildqualityInfo Info = GetBuildQuality(BuildType, Quality); if (Info != null) { NeedLevel = Info.levellimit; if (Info.num1 != 0 && Info.material1id > 0) { NeedMaterial.Add(Info.material1id, Info.num1); } if (Info.num2 > 0 && Info.material2id > 0) { NeedMaterial.Add(Info.material2id, Info.num2); } if (Info.num3 > 0 && Info.material3id > 0) { NeedMaterial.Add(Info.material3id, Info.num3); } if (Info.num4 > 0 && Info.material4id > 0) { NeedMaterial.Add(Info.material4id, Info.num4); } if (Info.num5 > 0 && Info.material5id > 0) { NeedMaterial.Add(Info.material5id, Info.num5); } if (Info.num6 > 0 && Info.material6id > 0) { NeedMaterial.Add(Info.material6id, Info.num6); } } }
/// <summary> /// 计算韧性 /// </summary> private static float CalcTenacity(s_building_typeInfo TypeInfo, s_buildstarInfo StarInfo, s_buildstarInfo original, s_buildqualityInfo QualityInfo, int level) { if (TypeInfo == null) { return(0); } float value = TypeInfo.tenacity * 0.01f; if (StarInfo != null) { value += StarInfo.tenacitygrow * (level - 1) * 0.01f; } if (original != null) { value += (StarInfo.tenacitygrow - original.tenacitygrow) * 0.01f; } if (QualityInfo != null) { value += QualityInfo.addtenacity * 0.01f; } return(value); }
/// <summary> /// 计算承受力 /// </summary> private static int CalcBear(s_building_typeInfo TypeInfo, s_buildstarInfo StarInfo, s_buildqualityInfo QualityInfo) { if (TypeInfo == null) { return(0); } int value = TypeInfo.bear; if (StarInfo != null) { value += StarInfo.bear; } if (QualityInfo != null) { value += QualityInfo.bear; } return(value); }