public void SetFullHealth() { LogicAvatar homeOwnerAvatar = this.m_parent.GetLevel().GetHomeOwnerAvatar(); homeOwnerAvatar.SetHeroHealth(this.m_hero, 0); homeOwnerAvatar.GetChangeListener().CommodityCountChanged(0, this.m_hero, 0); }
public void UpdateHeroHealthToAvatar(int hitpoint) { LogicAvatar avatar = this.m_team == 1 ? this.m_parent.GetLevel().GetHomeOwnerAvatar() : this.m_parent.GetLevel().GetVisitorAvatar(); LogicHeroData data = null; int upgLevel = 0; if (this.m_parent.IsHero()) { LogicCharacter character = (LogicCharacter)this.m_parent; data = (LogicHeroData)character.GetCharacterData(); upgLevel = character.GetUpgradeLevel(); } else if (this.m_parent.GetGameObjectType() == LogicGameObjectType.BUILDING) { LogicBuilding building = (LogicBuilding)this.m_parent; LogicHeroBaseComponent heroBaseComponent = building.GetHeroBaseComponent(); if (heroBaseComponent == null) { return; } LogicBuildingData buildingData = building.GetBuildingData(); if (!buildingData.GetShareHeroCombatData()) { return; } LogicCombatComponent combatComponent = building.GetCombatComponent(); if (combatComponent == null || !combatComponent.IsEnabled()) { return; } data = buildingData.GetHeroData(); upgLevel = avatar.GetUnitUpgradeLevel(data); } if (data != null) { int secs = LogicMath.Min(data.GetSecondsToFullHealth(hitpoint, upgLevel), data.GetFullRegenerationTimeSec(upgLevel)); if (avatar != null) { avatar.GetChangeListener().CommodityCountChanged(0, data, secs); avatar.SetHeroHealth(data, secs); } } }
public override void LoadingFinished() { if (this.m_parent.GetLevel().IsInCombatState()) { if (this.m_parent.GetVillageType() == this.m_parent.GetLevel().GetVillageType()) { if (this.m_parent.GetLevel().GetVillageType() == this.m_parent.GetVillageType()) { this.m_patrolPath = this.CreatePatrolPath(); } } } LogicAvatar homeOwnerAvatar = this.m_parent.GetLevel().GetHomeOwnerAvatar(); LogicBuilding building = (LogicBuilding)this.m_parent; if (!building.IsLocked() && homeOwnerAvatar.GetHeroState(this.m_hero) == 0) { homeOwnerAvatar.SetHeroState(this.m_hero, 3); homeOwnerAvatar.GetChangeListener().CommodityCountChanged(2, this.m_hero, 3); } if (this.m_timer != null) { int remainingSecs = this.m_timer.GetRemainingSeconds(this.m_parent.GetLevel().GetLogicTime()); int totalSecs = this.GetTotalSeconds(); if (LogicDataTables.GetGlobals().ClampUpgradeTimes()) { if (remainingSecs > totalSecs) { this.m_timer.StartTimer(totalSecs, this.m_parent.GetLevel().GetLogicTime(), true, this.m_parent.GetLevel().GetHomeOwnerAvatarChangeListener().GetCurrentTimestamp()); } } else { this.m_timer.StartTimer(LogicMath.Min(remainingSecs, totalSecs), this.m_parent.GetLevel().GetLogicTime(), false, -1); } if (!building.IsLocked() && homeOwnerAvatar.GetHeroState(this.m_hero) != 1) { homeOwnerAvatar.SetHeroState(this.m_hero, 1); homeOwnerAvatar.GetChangeListener().CommodityCountChanged(2, this.m_hero, 1); } } else { if (!building.IsLocked() && homeOwnerAvatar.GetHeroState(this.m_hero) == 1) { homeOwnerAvatar.SetHeroState(this.m_hero, 3); homeOwnerAvatar.GetChangeListener().CommodityCountChanged(2, this.m_hero, 3); } } if (this.m_hero.HasNoDefence() && !this.m_parent.GetLevel().IsInCombatState() && homeOwnerAvatar.GetHeroState(this.m_hero) == 3) { homeOwnerAvatar.SetHeroState(this.m_hero, 2); homeOwnerAvatar.GetChangeListener().CommodityCountChanged(2, this.m_hero, 2); } if (homeOwnerAvatar.GetHeroState(this.m_hero) == 3) { if (this.m_parent.GetLevel().IsInCombatState()) { if (!this.m_sharedHeroCombatData && !this.m_hero.HasNoDefence()) { if (this.m_parent.GetVillageType() == this.m_parent.GetLevel().GetVillageType()) { this.AddDefendingHero(); } } } } int heroHealth = homeOwnerAvatar.GetHeroHealth(this.m_hero); int fullRegenerationTime = this.m_hero.GetFullRegenerationTimeSec(homeOwnerAvatar.GetUnitUpgradeLevel(this.m_hero)); if (fullRegenerationTime < heroHealth) { homeOwnerAvatar.GetChangeListener().CommodityCountChanged(0, this.m_hero, fullRegenerationTime); homeOwnerAvatar.SetHeroHealth(this.m_hero, fullRegenerationTime); } }