private HeroKillData GetHeroKillDataByUnitId(int inUnitId) { HeroKillData result = null; if (this._killDics.TryGetValue(inUnitId, out result)) { return(result); } return(null); }
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); } } }