Beispiel #1
0
    /// <summary>
    /// 炮弹兵是否能增加经验 0:可以增加,1:已经满级不能增加
    /// </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>
    public static int CheckCanAddExp(int SoldireTypeID, int AddExpNum)
    {
        SoldierInfo info = SoldierDC.GetSoldiers(SoldireTypeID);

        if (info == null)
        {
            return(0);
        }

        s_soldier_experienceInfo expInfo = GetSoldierExpData(info.Level);

        if (expInfo.exp == 0)
        {
            return(1);
        }

        int MaxLvl = UserM.GetUserMaxHeroLevel(info.Level);
        int MaxExp = GetSoldierTotalExpAtLevel(MaxLvl);


        if (info.EXP >= MaxExp)
        {
            return(1);
        }
        else if (info.EXP + AddExpNum < MaxExp)
        {
            return(0);
        }
        else if (info.EXP + AddExpNum > MaxExp && info.EXP < MaxExp)
        {
            return(0);
        }
        return(0);
    }
Beispiel #2
0
    /// <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);
    }
Beispiel #3
0
    /// <summary>
    /// 获取升级所需经验
    /// </summary>
    /// <param name="SoldierType">炮弹兵类型</param>
    /// <param name="Star">星级</param>
    /// <param name="NeedMaterial">需要材料,key item id,value 数量</param>
    /// <param name="Star">建筑星级</param>
    /// <returns>建筑数据,null 获取失败</returns>
    public static int GetUpLevelNeedExp(int Level)
    {
        s_soldier_experienceInfo Info = GetSoldierExpData(Level);

        if (Info != null)
        {
            return(Info.exp);
        }
        return(0);
    }
Beispiel #4
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);
            }
        }
    }
Beispiel #5
0
    /// <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);
    }