Example #1
0
        /// <summary>
        /// Checks the conditions of the gambit. updates IsReady
        /// </summary>
        public void CheckConditions()
        {
            if ((MaxUse != -1) && (UsageNumber >= MaxUse))
            {
                IsReady = false;
                return;
            }

            if (Skill == null)
            {
                IsReady = false;
                return;
            }

            if (!Skill.IsPrerequisitesMet())
            {
                IsReady = false;
                return;
            }

            IHasLevel levelledOwner = Owner.GetComponent <IHasLevel>();

            if (levelledOwner == null)
            {
                IsReady = false;
                return;
            }
            else if (levelledOwner.GetLevel() < Skill.RequiredLevel)
            {
                IsReady = false;
                return;
            }

            if (Skill.CurrentCooldown < Skill.Cooldown)
            {
                IsReady = false;
                return;
            }

            IsReady = true;
            int i = 0;

            while (IsReady && (i < Conditions.Count))
            {
                IsReady = IsReady && Conditions [i].GetStatus();
                i++;
            }
        }
Example #2
0
        public static void AddToPacket(ISimpleGameObject obj, Packet packet, bool forRegion = false)
        {
            packet.AddUInt16(obj.Type);

            packet.AddUInt16((ushort)(obj.PrimaryPosition.X % Config.region_width));
            packet.AddUInt16((ushort)(obj.PrimaryPosition.Y % Config.region_height));
            packet.AddByte(obj.Size);

            packet.AddUInt32(obj.GroupId);
            packet.AddUInt32(obj.ObjectId);

            var gameObj = obj as IGameObject;

            if (gameObj != null)
            {
                packet.AddUInt32(gameObj.City.Owner.PlayerId);
            }

            var troopObj = obj as ITroopObject;

            if (troopObj != null)
            {
                packet.AddString(troopObj.Theme);
            }

            IHasLevel objHasLevel = obj as IHasLevel;

            if (objHasLevel != null)
            {
                packet.AddByte(objHasLevel.Lvl);
            }

            var stronghold = obj as IStronghold;

            if (stronghold != null)
            {
                packet.AddUInt32(stronghold.StrongholdState == StrongholdState.Occupied ? stronghold.Tribe.Id : 0);
                packet.AddInt32(stronghold.GateMax);
                packet.AddString(stronghold.Theme);
            }

            var structure = obj as IStructure;

            if (structure != null)
            {
                packet.AddString(structure.Theme);

                if (!forRegion)
                {
                    packet.AddUInt16(structure.Stats.Labor);
                }

                if (structure.IsMainBuilding)
                {
                    packet.AddByte(gameObj.City.Radius);
                    packet.AddString(gameObj.City.WallTheme);
                }
            }

            var barbarianTribe = obj as IBarbarianTribe;

            if (barbarianTribe != null)
            {
                packet.AddByte(barbarianTribe.CampRemains);
            }

            AddToPacket(obj.State, packet);
        }