public bool SetSleep(bool enabled) { LogicAvatar homeOwnerAvatar = this.m_parent.GetLevel().GetHomeOwnerAvatar(); int state = homeOwnerAvatar.GetHeroState(this.m_hero); if (state != 0) { int newState = enabled ? 2 : 3; if (state != newState) { homeOwnerAvatar.SetHeroState(this.m_hero, newState); homeOwnerAvatar.GetChangeListener().CommodityCountChanged(2, this.m_hero, newState); return(true); } } return(false); }
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); } }