Ejemplo n.º 1
0
        }                                  //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);
            }
        }
Ejemplo n.º 2
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();
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
        /// <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);
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
        }                                  //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);
            }
        }