/// <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++; } }
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); }