public override int Execute(LogicLevel level) { LogicBuilding allianceCastle = level.GetGameObjectManagerAt(0).GetAllianceCastle(); if (allianceCastle != null) { LogicBunkerComponent bunkerComponent = allianceCastle.GetBunkerComponent(); if (bunkerComponent != null) { if (bunkerComponent.GetReplayShareCooldownTime() == 0) { bunkerComponent.StartReplayShareCooldownTime(); if (this.m_duelReplay) { level.GetGameListener().DuelReplayShared(this.m_battleEntryId); level.GetHomeOwnerAvatar().GetChangeListener().ShareDuelReplay(this.m_battleEntryId, this.m_message); } else { level.GetHomeOwnerAvatar().GetChangeListener().ShareReplay(this.m_battleEntryId, this.m_message); } return(0); } } } return(-1); }
public override int Execute(LogicLevel level) { LogicBuilding allianceCastle = level.GetGameObjectManagerAt(0).GetAllianceCastle(); if (allianceCastle != null) { LogicBunkerComponent bunkerComponent = allianceCastle.GetBunkerComponent(); if (bunkerComponent != null && bunkerComponent.GetRequestCooldownTime() == 0) { LogicAvatar homeOwnerAvatar = level.GetHomeOwnerAvatar(); homeOwnerAvatar.GetChangeListener().RequestAllianceUnits(allianceCastle.GetUpgradeLevel(), bunkerComponent.GetUsedCapacity(), bunkerComponent.GetMaxCapacity(), homeOwnerAvatar.GetAllianceCastleUsedSpellCapacity(), homeOwnerAvatar.GetAllianceCastleTotalSpellCapacity(), this.m_message); bunkerComponent.StartRequestCooldownTime(); return(0); } } return(-1); }
public override int Execute(LogicLevel level) { LogicAvatarAllianceRole allianceRole = level.GetHomeOwnerAvatar().GetAllianceRole(); if (allianceRole == LogicAvatarAllianceRole.LEADER || allianceRole == LogicAvatarAllianceRole.CO_LEADER) { LogicBuilding allianceCastle = level.GetGameObjectManagerAt(0).GetAllianceCastle(); if (allianceCastle != null) { LogicBunkerComponent bunkerComponent = allianceCastle.GetBunkerComponent(); if (bunkerComponent != null && bunkerComponent.GetClanMailCooldownTime() == 0) { bunkerComponent.StartClanMailCooldownTime(); level.GetHomeOwnerAvatar().GetChangeListener().SendClanMail(this.m_message); return(0); } } return(-2); } return(-1); }
public override int Execute(LogicLevel level) { LogicAvatar homeOwnerAvatar = level.GetHomeOwnerAvatar(); LogicAvatarAllianceRole allianceRole = homeOwnerAvatar.GetAllianceRole(); if (allianceRole != LogicAvatarAllianceRole.MEMBER) { if (allianceRole == LogicAvatarAllianceRole.LEADER || allianceRole == LogicAvatarAllianceRole.CO_LEADER) { level.GetHomeOwnerAvatar().GetChangeListener().KickPlayer(this.m_playerId, this.m_message); return(0); } LogicBuilding allianceCastle = level.GetGameObjectManagerAt(0).GetAllianceCastle(); if (allianceCastle != null) { LogicBunkerComponent bunkerComponent = allianceCastle.GetBunkerComponent(); if (bunkerComponent != null) { if (bunkerComponent.GetElderCooldownTime() == 0) { bunkerComponent.StartElderKickCooldownTime(); level.GetHomeOwnerAvatar().GetChangeListener().KickPlayer(this.m_playerId, this.m_message); return(0); } } } return(-2); } return(-1); }
public override int Execute(LogicLevel level) { if (this.m_excludeMemberList == null || this.m_excludeMemberList.Size() <= LogicDataTables.GetGlobals().GetWarMaxExcludeMembers()) { if (this.m_enemyAllianceId != null) { LogicAvatar homeOwnerAvatar = level.GetHomeOwnerAvatar(); if (homeOwnerAvatar.IsInAlliance()) { if (homeOwnerAvatar.GetAllianceRole() == LogicAvatarAllianceRole.LEADER || homeOwnerAvatar.GetAllianceRole() == LogicAvatarAllianceRole.CO_LEADER) { LogicBuilding allianceCastle = level.GetGameObjectManagerAt(0).GetAllianceCastle(); if (allianceCastle != null) { LogicBunkerComponent bunkerComponent = allianceCastle.GetBunkerComponent(); if (bunkerComponent != null && bunkerComponent.GetArrangedWarCooldownTime() == 0) { bunkerComponent.StartArrangedWarCooldownTime(); homeOwnerAvatar.GetChangeListener().StartArrangedWar(this.m_excludeMemberList, this.m_enemyAllianceId, 0, 0, 0); return(0); } return(-5); } return(-4); } return(-3); } return(-2); } return(-3); } return(-1); }
public void AddAvatarAllianceUnitsToCastle() { LogicGameObjectManager gameObjectManager = this.m_level.GetGameObjectManagerAt(0); LogicBuilding allianceCastle = gameObjectManager.GetAllianceCastle(); if (allianceCastle != null) { LogicBunkerComponent bunkerComponent = allianceCastle.GetBunkerComponent(); if (bunkerComponent != null) { bunkerComponent.RemoveAllUnits(); LogicArrayList <LogicUnitSlot> units = this.m_level.GetHomeOwnerAvatar().GetAllianceUnits(); for (int i = 0; i < units.Size(); i++) { LogicUnitSlot unitSlot = units[i]; LogicCombatItemData data = (LogicCombatItemData)unitSlot.GetData(); int count = unitSlot.GetCount(); if (data != null) { if (data.GetCombatItemType() == LogicCombatItemData.COMBAT_ITEM_TYPE_CHARACTER) { for (int j = 0; j < count; j++) { if (bunkerComponent.GetUnusedCapacity() >= data.GetHousingSpace()) { bunkerComponent.AddUnitImpl(data, unitSlot.GetLevel()); } } } } else { Debugger.Error("LogicComponentManager::addAvatarAllianceUnitsToCastle - NULL character"); } } } } }
public override int Execute(LogicLevel level) { if (LogicDataTables.GetGlobals().UseTroopRequestSpeedUp()) { LogicClientAvatar playerAvatar = level.GetPlayerAvatar(); LogicGameObjectManager gameObjectManager = level.GetGameObjectManagerAt(0); LogicBuilding allianceCastle = gameObjectManager.GetAllianceCastle(); if (allianceCastle != null) { LogicBunkerComponent bunkerComponent = allianceCastle.GetBunkerComponent(); if (bunkerComponent != null) { if (playerAvatar.GetAllianceCastleUsedCapacity() < playerAvatar.GetAllianceCastleTotalCapacity() || playerAvatar.GetAllianceCastleUsedSpellCapacity() < playerAvatar.GetAllianceCastleTotalSpellCapacity()) { int speedUpCost = LogicGamePlayUtil.GetSpeedUpCost(bunkerComponent.GetRequestCooldownTime(), 3, 0); if (playerAvatar.HasEnoughDiamonds(speedUpCost, true, level)) { playerAvatar.UseDiamonds(speedUpCost); playerAvatar.GetChangeListener().DiamondPurchaseMade(11, 0, 0, speedUpCost, level.GetVillageType()); bunkerComponent.StopRequestCooldownTime(); return(0); } return(-6); } return(-5); } return(-4); } return(-3); } return(-1); }
public override int Execute(LogicLevel level) { if (this.m_layoutId == 7) { return(-21); } if (this.m_village2) { if (this.m_layoutId != 0 && this.m_layoutId != 2 && this.m_layoutId != 3) { return(-22); } } if (LogicDataTables.GetGlobals().UseVersusBattle()) { int villageType = this.m_village2 ? 1 : 0; if (level.GetTownHallLevel(villageType) < level.GetRequiredTownHallLevelForLayout(this.m_layoutId, villageType)) { return(-3); } if (level.GetPlayerAvatar() == null) { return(-10); } LogicArrayList <LogicGameObject> gameObjects = new LogicArrayList <LogicGameObject>(500); LogicGameObjectFilter filter = new LogicGameObjectFilter(); filter.AddGameObjectType(LogicGameObjectType.BUILDING); filter.AddGameObjectType(LogicGameObjectType.TRAP); filter.AddGameObjectType(LogicGameObjectType.DECO); level.GetGameObjectManagerAt(this.m_village2 ? 1 : 0).GetGameObjects(gameObjects, filter); for (int i = 0; i < gameObjects.Size(); i++) { LogicVector2 position = gameObjects[i].GetPositionLayout(this.m_layoutId, false); if ((this.m_layoutId & 0xFFFFFFFE) != 6 && (position.m_x == -1 || position.m_y == -1)) { return(-5); } } gameObjects.Destruct(); filter.Destruct(); if (!this.m_village2) { LogicAvatar homeOwnerAvatar = level.GetHomeOwnerAvatar(); if (homeOwnerAvatar == null || homeOwnerAvatar.IsChallengeStarted()) { if (level.GetLayoutCooldown(this.m_layoutId) > 0) { return(-7); } } } LogicBuilding allianceCastle = level.GetGameObjectManagerAt(0).GetAllianceCastle(); if (allianceCastle != null) { LogicBunkerComponent bunkerComponent = allianceCastle.GetBunkerComponent(); if (bunkerComponent == null || bunkerComponent.GetChallengeCooldownTime() != 0) { return(-6); } LogicClientAvatar playerAvatar = level.GetPlayerAvatar(); if (!this.m_challenge) { if (playerAvatar.GetChallengeId() != null) { int challengeState = playerAvatar.GetChallengeState(); if (challengeState != 2 && challengeState != 4) { Debugger.Warning("chal state: " + challengeState); return(-8); } } } int friendlyCost = LogicDataTables.GetGlobals().GetFriendlyBattleCost(playerAvatar.GetTownHallLevel()); if (friendlyCost != 0) { if (!playerAvatar.HasEnoughResources(LogicDataTables.GetGoldData(), friendlyCost, true, this, false)) { return(0); } if (friendlyCost > 0) { playerAvatar.CommodityCountChangeHelper(0, LogicDataTables.GetGoldData(), friendlyCost); } } bunkerComponent.StartChallengeCooldownTime(); bool warLayout = this.m_layoutId == 1 || this.m_layoutId == 4 || this.m_layoutId == 5; if (this.m_village2) { if (this.m_challenge) { playerAvatar.GetChangeListener().SendChallengeRequest(this.m_message, this.m_layoutId, warLayout, villageType); } else { playerAvatar.GetChangeListener().SendFriendlyBattleRequest(this.m_message, this.m_battleId, this.m_layoutId, warLayout, villageType); } } else { this.SaveChallengeLayout(level, warLayout); if (this.m_challenge) { playerAvatar.GetChangeListener().SendChallengeRequest(this.m_message, this.m_layoutId, warLayout, villageType); } else { playerAvatar.GetChangeListener().SendFriendlyBattleRequest(this.m_message, this.m_battleId, this.m_layoutId, warLayout, villageType); } playerAvatar.SetVariableByName("ChallengeStarted", 1); } return(0); } return(-3); } return(2); }
/// <summary> /// Executes this instance. /// </summary> public override int Execute(LogicLevel level) { for (int i = 0; i < this._unitsCount.Count; i++) { if (this._unitsCount[i] < 0) { return(-1); } } if (LogicDataTables.GetGlobals().EnableTroopDeletion() && level.GetState() == 1 && this._unitsData.Count > 0) { LogicClientAvatar playerAvatar = level.GetPlayerAvatar(); Int32 removedUnits = 0; for (int i = 0; i < this._unitsData.Count; i++) { LogicCombatItemData data = this._unitsData[i]; Int32 unitCount = this._unitsCount[i]; if (this._removeType[i] != 0) { Int32 upgLevel = this._unitsUpgLevel[i]; if (data.GetCombatItemType() != 0) { if (data.GetCombatItemType() == 1) { playerAvatar.SetAllianceUnitCount(data, upgLevel, LogicMath.Max(0, playerAvatar.GetAllianceUnitCount(data, upgLevel) - unitCount)); if (unitCount > 0) { do { playerAvatar.GetChangeListener().AllianceUnitRemoved(data, upgLevel); } while (--unitCount != 0); } removedUnits |= 2; } } else { LogicBuilding allianceCastle = level.GetGameObjectManagerAt(0).GetAllianceCastle(); if (allianceCastle != null) { LogicBunkerComponent bunkerComponent = allianceCastle.GetBunkerComponent(); Int32 unitTypeIndex = bunkerComponent.GetUnitTypeIndex(data); if (unitTypeIndex != -1) { Int32 cnt = bunkerComponent.GetUnitCount(unitTypeIndex); if (cnt > 0) { bunkerComponent.RemoveUnits(data, upgLevel, cnt); playerAvatar.SetAllianceUnitCount(data, upgLevel, LogicMath.Max(0, playerAvatar.GetAllianceUnitCount(data, upgLevel) - unitCount)); removedUnits |= 1; if (unitCount > 0) { do { playerAvatar.GetChangeListener().AllianceUnitRemoved(data, upgLevel); } while (--unitCount != 0); } } } } } } else { if (playerAvatar != null && data != null) { playerAvatar.CommodityCountChangeHelper(0, data, -unitCount); } LogicArrayList <LogicComponent> components = level.GetComponentManager().GetComponents(0); for (int j = 0; j < components.Count; j++) { if (unitCount > 0) { LogicUnitStorageComponent storageComponent = (LogicUnitStorageComponent)components[j]; Int32 unitTypeIndex = storageComponent.GetUnitTypeIndex(data); if (unitTypeIndex != -1) { Int32 cnt = storageComponent.GetUnitCount(unitTypeIndex); if (cnt > 0) { cnt = LogicMath.Min(cnt, unitCount); storageComponent.RemoveUnits(data, cnt); int type = 2; if (data.GetCombatItemType() == 0) { if (storageComponent.GetParentListener() != null) { LogicGameObjectListener listener = storageComponent.GetParentListener(); for (int k = 0; k < cnt; k++) { listener.UnitRemoved(data); } } type = 1; } unitCount -= cnt; removedUnits |= type; } } } } } } switch (removedUnits) { case 3: if (LogicDataTables.GetGlobals().UseNewTraining()) { level.GetGameObjectManager().GetUnitProduction().MergeSlots(); level.GetGameObjectManager().GetSpellProduction().MergeSlots(); } break; case 2: if (LogicDataTables.GetGlobals().UseNewTraining()) { level.GetGameObjectManager().GetSpellProduction().MergeSlots(); } break; case 1: if (LogicDataTables.GetGlobals().UseNewTraining()) { level.GetGameObjectManager().GetUnitProduction().MergeSlots(); } break; default: Debugger.Print("WTF: " + removedUnits); break; } } return(0); }