Exemple #1
0
    private HeroKillData GetHeroKillDataByUnitId(int inUnitId)
    {
        HeroKillData result = null;

        if (this._killDics.TryGetValue(inUnitId, out result))
        {
            return(result);
        }
        return(null);
    }
Exemple #2
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);
            }
        }
    }