public override void Execute(Level level) { ClientAvatar ca = level.GetPlayerAvatar(); GameObject go = level.GameObjectManager.GetGameObjectByID(BuildingId); if(go != null) { Building b = (Building)go; HeroBaseComponent hbc = b.GetHeroBaseComponent(); if(hbc != null) { if(hbc.CanStartUpgrading()) { HeroData hd = ObjectManager.DataTables.GetHeroByName(b.GetBuildingData().HeroType); int currentLevel = ca.GetUnitUpgradeLevel(hd); ResourceData rd = hd.GetUpgradeResource(currentLevel); int cost = hd.GetUpgradeCost(currentLevel); if(ca.HasEnoughResources(rd, cost)) { if(level.HasFreeWorkers()) { hbc.StartUpgrading(); } } } } } }
//00 00 02 25 00 00 00 00 07 1D CD 65 0A 1D CD 65 09 1D CD 65 0B 1D CD 65 08 1D CD 65 0C 1D CD 65 07 1D CD 65 06 00 00 1B 07 //public uint Unknown1 { get; set; } //00 00 2D 7F some client tick public override void Execute(Level level) { ClientAvatar ca = level.GetPlayerAvatar(); foreach(var buildingId in m_vBuildingIdList) { Building b = (Building)level.GameObjectManager.GetGameObjectByID(buildingId); if (b.CanUpgrade()) { BuildingData bd = b.GetBuildingData(); int cost = bd.GetBuildCost(b.GetUpgradeLevel() + 1); ResourceData rd; if(m_vIsAltResource == 0) rd = bd.GetBuildResource(b.GetUpgradeLevel() + 1); else rd = bd.GetAltBuildResource(b.GetUpgradeLevel() + 1); if (ca.HasEnoughResources(rd, cost)) { if (level.HasFreeWorkers()) { ca.SetResourceCount(rd, ca.GetResourceCount(rd) - cost); b.StartUpgrading(); } } } } }
public override void Execute(Level level) { ClientAvatar ca = level.GetPlayerAvatar(); TrapData td = (TrapData)ObjectManager.DataTables.GetDataById(TrapId); Trap t = new Trap(td, level); if (ca.HasEnoughResources(td.GetBuildResource(0), td.GetBuildCost(0))) { if (level.HasFreeWorkers()) { ResourceData rd = td.GetBuildResource(0); ca.CommodityCountChangeHelper(0, rd, -td.GetBuildCost(0)); t.StartConstructing(X, Y); level.GameObjectManager.AddGameObject(t); } } }
public uint Unknown1 { get; set; } //00 00 2D 7F some client tick public override void Execute(Level level) { ClientAvatar ca = level.GetPlayerAvatar(); BuildingData bd = (BuildingData)ObjectManager.DataTables.GetDataById(BuildingId); Building b = new Building(bd, level); if (ca.HasEnoughResources(bd.GetBuildResource(0), bd.GetBuildCost(0))) { if (bd.IsWorkerBuilding() || level.HasFreeWorkers()) { //Ajouter un check sur le réservoir d'élixir noir ResourceData rd = bd.GetBuildResource(0); ca.CommodityCountChangeHelper(0, rd, -bd.GetBuildCost(0)); b.StartConstructing(X, Y); level.GameObjectManager.AddGameObject(b); } } }
public override void Execute(Level level) { ClientAvatar ca = level.GetPlayerAvatar(); GameObject go = level.GameObjectManager.GetGameObjectByID(BuildingId); ConstructionItem b = (ConstructionItem)go; if(b.CanUpgrade()) { var bd = b.GetConstructionItemData(); if (ca.HasEnoughResources(bd.GetBuildResource(b.GetUpgradeLevel() + 1), bd.GetBuildCost(b.GetUpgradeLevel() + 1))) { if (level.HasFreeWorkers()) { ResourceData rd = bd.GetBuildResource(b.GetUpgradeLevel() + 1); ca.SetResourceCount(rd, ca.GetResourceCount(rd) - bd.GetBuildCost(b.GetUpgradeLevel() + 1)); b.StartUpgrading(); } } } }