} //FF FF FF FF public override void Execute(Level level) { GameObject go = level.GameObjectManager.GetGameObjectByID(BuildingId); if (Count > 0) { Building b = (Building)go; UnitProductionComponent c = b.GetUnitProductionComponent(); CombatItemData cid = (CombatItemData)ObjectManager.DataTables.GetDataById(UnitType); do { if (!c.CanAddUnitToQueue(cid)) { break; } ResourceData trainingResource = cid.GetTrainingResource(); ClientAvatar ca = level.GetHomeOwnerAvatar(); int trainingCost = cid.GetTrainingCost(ca.GetUnitUpgradeLevel(cid)); if (!ca.HasEnoughResources(trainingResource, trainingCost)) { break; } ca.SetResourceCount(trainingResource, ca.GetResourceCount(trainingResource) - trainingCost); c.AddUnitToProductionQueue(cid); Count--; }while (Count > 0); } }
//00 00 02 01 1D CD 65 10 00 00 38 A6 public override void Execute(Level level) { ClientAvatar ca = level.GetPlayerAvatar(); GameObject go = level.GameObjectManager.GetGameObjectByID(m_vBuildingId); if (go != null) { if (go.ClassId == 0) { Building b = (Building)go; UnitProductionComponent upc = b.GetUnitProductionComponent(); if (upc != null) { int totalRemainingTime = upc.GetTotalRemainingSeconds(); int cost = GamePlayUtil.GetSpeedUpCost(totalRemainingTime); if (upc.IsSpellForge()) { int multiplier = ObjectManager.DataTables.GetGlobals().GetGlobalData("SPELL_SPEED_UP_COST_MULTIPLIER").NumberValue; cost = (int)(((long)cost * (long)multiplier * (long)1374389535) >> 32); cost = Math.Max((cost >> 5) + (cost >> 31), 1); } if (ca.HasEnoughDiamonds(cost)) { if (upc.HasHousingSpaceForSpeedUp()) { ca.UseDiamonds(cost); upc.SpeedUp(); } } } } } }
/// <summary> /// Executes this command. /// </summary> /// <param name="Level">The levl.</param> internal override void Execute(Level Level) { if (Level.Player.Home.GameObjectManager.GetGameObjectById(this.BoatID) is Building Building) { CharacterData UnitData = (CharacterData)this.UnitData; UnitProductionComponent UnitProductionComponent = (UnitProductionComponent)Building.GetComponent(3); UnitStorageComponent UnitStorageComponent = (UnitStorageComponent)Building.GetComponent(0); if (UnitProductionComponent != null && UnitStorageComponent != null) { CharacterData PreviousUnitData = null; int PreviousUnitCount = 0; ResourceBundle ResourceBundle = UnitData.GetResourceBundle(Level.Player.UnitUpgrades.GetCount(this.UnitData)); if (UnitStorageComponent.HasUnits) { PreviousUnitData = UnitStorageComponent.Unit; PreviousUnitCount += UnitStorageComponent.UnitCount; if (PreviousUnitData != this.UnitData) { ResourceBundle.Removes(1, PreviousUnitData.GetResourceBundle(Level.Player.UnitUpgrades.GetCount(PreviousUnitData)).Resources[1].Count); UnitStorageComponent.Unit = null; UnitStorageComponent.UnitCount = 0; PreviousUnitData = null; PreviousUnitCount = 0; } } int TrainCount = UnitStorageComponent.MaxCapacity / UnitData.HousingSpace - PreviousUnitCount; if (TrainCount > 0) { ResourceBundle.Multiply(TrainCount); if (Level.Player.HasEnoughResources(ResourceBundle)) { Level.Player.Resources.Remove(ResourceBundle.Resources[1].Data, ResourceBundle.Resources[1].Count); } } } } }
} //00 00 34 E4 //00 00 01 FD 1D CD 65 05 00 00 00 00 00 3D 09 09 00 00 00 01 00 00 00 00 00 00 04 24 public override void Execute(Level level) { GameObject go = level.GameObjectManager.GetGameObjectByID(BuildingId); if (Count > 0) { Building b = (Building)go; UnitProductionComponent c = b.GetUnitProductionComponent(); CombatItemData cd = (CombatItemData)ObjectManager.DataTables.GetDataById(UnitType); do { //Ajouter gestion remboursement ressources c.RemoveUnit(cd); Count--; }while (Count > 0); } }