Beispiel #1
0
 public UtilMonsterData.UnitReward GetReward(int type)
 {
     UtilMonsterData.UnitReward result = null;
     if (this._unitDics.TryGetValue(type, out result))
     {
         return(result);
     }
     return(null);
 }
Beispiel #2
0
 public void AddExp(Units attacker, Units dead)
 {
     if (attacker == null)
     {
         return;
     }
     if (dead == null)
     {
         return;
     }
     if (LevelManager.IsTestingLevel || Singleton <PvpManager> .Instance.IsInPvp)
     {
         return;
     }
     if (dead.isHero)
     {
         float num = 0f;
         if (!this.GetDeadExpByUnitId(dead.unique_id, dead.level, out num))
         {
             return;
         }
         if (attacker.isHero)
         {
             this.AddExpByUnitId(attacker.unique_id, num);
         }
         List <Units> list = new List <Units>();
         dead.GetHeroKillHelper(attacker, list);
         if (list == null)
         {
             return;
         }
         if (attacker.isHero)
         {
             list.Add(attacker);
         }
         if (list.Count > 0)
         {
             float sharedExpByUnitId = this.GetSharedExpByUnitId(num, list.Count);
             for (int i = 0; i < list.Count; i++)
             {
                 if (list[i] != null)
                 {
                     this.AddExpByUnitId(list[i].unique_id, sharedExpByUnitId);
                 }
             }
         }
     }
     else if (dead.isMonster || dead.isBuilding)
     {
         UtilMonsterData.UnitReward monsterReward = this.GetMonsterReward(dead.npc_id);
         if (monsterReward == null)
         {
             return;
         }
         List <Units> list2 = new List <Units>();
         if (monsterReward.Exp_share_type == 2)
         {
             this.GetShareExpRangeUnits(attacker, dead, (float)monsterReward.Exp_share_range, list2);
         }
         if (attacker.isHero)
         {
             list2.Add(attacker);
         }
         if (list2.Count > 0)
         {
             float inExpVal = (float)(monsterReward.Exp_kill / list2.Count);
             for (int j = 0; j < list2.Count; j++)
             {
                 if (list2[j] != null)
                 {
                     this.AddExpByUnitId(list2[j].unique_id, inExpVal);
                 }
             }
         }
     }
 }
Beispiel #3
0
    public void AddDeathGold(Units attacker, Units dead)
    {
        if (attacker == null)
        {
            return;
        }
        if (dead == null)
        {
            return;
        }
        if (LevelManager.IsTestingLevel || Singleton <PvpManager> .Instance.IsInPvp)
        {
            return;
        }
        if (!attacker.isHero)
        {
            return;
        }
        HeroKillData heroKillDataByUnitId = this.GetHeroKillDataByUnitId(dead.unique_id);
        int          num  = 0;
        float        num2 = 0f;
        int          num3 = (dead.level <= 1) ? 0 : (dead.level - 1);

        if (dead.isHero)
        {
            BattleConfigData battleConfigData = this._dataMgr.GetUtilDataByType(UtilDataType.Battle_config, SceneInfo.Current.BattleAttrIndex) as BattleConfigData;
            if (battleConfigData == null)
            {
                return;
            }
            int num4 = (heroKillDataByUnitId == null) ? 0 : heroKillDataByUnitId.ContinusKillCount;
            num += this.TryGetExtraGoldForFirstBlood(attacker.unique_id, battleConfigData);
            num += this.TryGetExtraGoldForStopKill(num4, battleConfigData);
            float num5;
            if (num4 > 0)
            {
                num5 = battleConfigData.GetRateByType(BattleConfigData.Rate_Type.Rate_Normal, 0) + battleConfigData.GetRateByType(BattleConfigData.Rate_Type.Rate_Enemy_Lv_Based, 0) * (float)num3 + battleConfigData.GetRateByType(BattleConfigData.Rate_Type.Rate_Enemy_Kill_Based, 0) * (float)(num4 - 1);
            }
            else
            {
                num5 = battleConfigData.GetRateByType(BattleConfigData.Rate_Type.Rate_Normal, 0) + battleConfigData.GetRateByType(BattleConfigData.Rate_Type.Rate_Enemy_Lv_Based, 0) * (float)num3;
                float num6 = battleConfigData.GetRateByType(BattleConfigData.Rate_Type.Rate_DeathRatio, 0) * (float)((heroKillDataByUnitId == null) ? 0 : heroKillDataByUnitId.DeathCount);
                num5 = ((num5 <= num6) ? 0f : (num5 - num6));
            }
            List <Units> list = ListPool.get <Units>();
            dead.GetHeroKillHelper(attacker, list);
            if (list != null && list.Count > 0)
            {
                num2 = num5 * battleConfigData.GetRateByType(BattleConfigData.Rate_Type.Rate_4_Gold, list.Count);
                for (int i = 0; i < list.Count; i++)
                {
                    if (list[i] != null)
                    {
                        this.AddGoldByUnitId(list[i].unique_id, (int)num2);
                    }
                }
            }
            ListPool.release <Units>(list);
            num = num + (int)num5 + (int)num2;
            this.AddGoldByUnitId(attacker.unique_id, num);
            if (dead.isVisible)
            {
                dead.JumpGoldFont(num, attacker);
            }
        }
        else if (dead.isMonster || dead.isBuilding)
        {
            UtilMonsterData.UnitReward monsterReward = this.GetMonsterReward(dead.npc_id);
            if (monsterReward == null)
            {
                return;
            }
            this.AddGoldByUnitId(attacker.unique_id, monsterReward.Gold_kill);
            if (monsterReward.Gold_extra > 0)
            {
                IList <Units> mapUnits = MapManager.Instance.GetMapUnits((TeamType)attacker.teamType, global::TargetTag.Hero);
                if (mapUnits != null && mapUnits.Count > 0)
                {
                    for (int j = 0; j < mapUnits.Count; j++)
                    {
                        if (mapUnits[j] != null)
                        {
                            this.AddGoldByUnitId(mapUnits[j].unique_id, monsterReward.Gold_extra);
                        }
                    }
                }
            }
            if (dead.isVisible)
            {
                dead.JumpGoldFont(monsterReward.Gold_kill, attacker);
                this.TryPlayGoldEff(attacker, dead, AddMoneyType.Kill);
            }
        }
    }