示例#1
0
        private void DoMove(CharacterData character, string argument, int command, SubCommands subcommand)
        {
            DirectionTypes direction = DirectionTypes.Index;

            switch (subcommand)
            {
                case SubCommands.North:
                    direction = DirectionTypes.North;
                    break;

                case SubCommands.South:
                    direction = DirectionTypes.South;
                    break;

                case SubCommands.East:
                    direction = DirectionTypes.East;
                    break;

                case SubCommands.West:
                    direction = DirectionTypes.West;
                    break;

                case SubCommands.Up:
                    direction = DirectionTypes.Up;
                    break;

                case SubCommands.Down:
                    direction = DirectionTypes.Down;
                    break;
            }

            PerformMove(character, direction, false);
        }
示例#2
0
        internal bool RemovePlayer(CharacterData character)
        {
            int toRemove = -1;

            foreach (int key in _players.Keys)
            {
                PlayerData player = _players[key];
                if (player.Name.CompareTo(character.Player.Name) == 0)
                {
                    Log("PCLEAN: " + player.Name + " Lev: " + player.Level + " Last: " + player.Last.ToLongDateString());
                    toRemove = key;
                    break;
                }
            }

            if (toRemove > -1)
            {
                _players.Remove(toRemove);

                SavePlayerIndex();

                return true;
            }

            Log("ERROR: Unable to find player index to remove for: " + character.GetName());

            return false;
        }
示例#3
0
        internal string HeShe(CharacterData character)
        {
            switch (character.Player.Sex)
            {
                case SexTypes.Male:
                    return "he";
                case SexTypes.Female:
                    return "she";
                case SexTypes.Neutral:
                    return "it";
            }

            return "<ERROR>";
        }
示例#4
0
        internal string HisHer(CharacterData character)
        {
            switch (character.Player.Sex)
            {
                case SexTypes.Male:
                    return "his";
                case SexTypes.Female:
                    return "her";
                case SexTypes.Neutral:
                    return "it's";
            }

            return "<ERROR>";
        }
示例#5
0
        private WearTypes FindEquipmentPosition(CharacterData character, ObjectData obj, string arg)
        {
            WearTypes where = WearTypes.Index;

            string[] keywords = new string[] {
                "!RESERVED!",
                "finger",
                "!RESERVED!",
                "neck",
                "!RESERVED!",
                "body",
                "head",
                "legs",
                "feet",
                "hands",
                "arms",
                "shield",
                "about",
                "waist",
                "wrist",
                "!RESERVED!",
                "!RESERVED!",
                "!RESERVED!",
                "\n"
            };

            if (String.IsNullOrEmpty (arg))
            {
                if (obj.WearFlagged (ObjectWearFlags.Finger)) where = WearTypes.RightFinger;
                if (obj.WearFlagged (ObjectWearFlags.Neck)) where = WearTypes.Neck1;
                if (obj.WearFlagged (ObjectWearFlags.Body)) where = WearTypes.Body;
                if (obj.WearFlagged (ObjectWearFlags.Head)) where = WearTypes.Head;
                if (obj.WearFlagged (ObjectWearFlags.Legs)) where = WearTypes.Legs;
                if (obj.WearFlagged (ObjectWearFlags.Feet)) where = WearTypes.Feet;
                if (obj.WearFlagged (ObjectWearFlags.Hands)) where = WearTypes.Hands;
                if (obj.WearFlagged (ObjectWearFlags.Arms)) where = WearTypes.Arms;
                if (obj.WearFlagged (ObjectWearFlags.Shield)) where = WearTypes.Shield;
                if (obj.WearFlagged (ObjectWearFlags.About)) where = WearTypes.About;
                if (obj.WearFlagged (ObjectWearFlags.Waist)) where = WearTypes.Waist;
                if (obj.WearFlagged (ObjectWearFlags.Wrist)) where = WearTypes.RightWrist;
            }
            else if (((where = (WearTypes)GlobalUtilities.SearchBlock(arg, keywords, false)) < 0) || (String.IsNullOrEmpty(arg) && arg[0] == '!'))
            {
                SendToCharacter (character, "'%s'? What part of your body is THAT?\r\n", arg);
                return WearTypes.None;
            }

            return (where);
        }
示例#6
0
        private void CharacterFromRoom(CharacterData character)
        {
            if (character == null || character.InRoom == GlobalConstants.NOWHERE)
            {
                Log ("SYSERR: Null character or NOWHERE in CharacterFromRoom()");
                return;
            }

            //if (character.Fighting != null)
                //StopFighting (character);

            if (character.Equipment[(int)WearTypes.Light] != null)
                if (character.Equipment[(int)WearTypes.Light].Type == ObjectTypes.Light)
                    if (character.Equipment[(int)WearTypes.Light].Flags.Values[2] > 0)
                        _rooms[character.InRoom].Light--;

            _rooms[character.InRoom].People.Remove (character);
            character.InRoom = GlobalConstants.NOWHERE;
        }
示例#7
0
		private void DoReturn(CharacterData character, string argument, int command, SubCommands subcommand)
		{
			if (character.Descriptor != null && character.Descriptor.Original != null)
			{
				SendToCharacter(character, "You return to your original body.\r\n");

				if (character.Descriptor.Original.Descriptor != null)
				{
					character.Descriptor.Original.Descriptor.Character = null;
					character.Descriptor.Original.Descriptor.ConnectState = ConnectState.Disconnect;
				}

				character.Descriptor.Character = character.Descriptor.Original;
				character.Descriptor.Original = null;

				character.Descriptor.Character.Descriptor = character.Descriptor;
				character.Descriptor = null;
			}
		}
示例#8
0
		private bool HouseCanEnter (CharacterData character, int house)
		{
			int houseNumber = FindHouse(house);

			if (character.Level >= GlobalConstants.LVL_GRGOD || houseNumber == GlobalConstants.NOWHERE)
				return true;

			switch (_houses[houseNumber].Type)
			{
				case HouseTypes.Private:
					if (character.IDNumber == _houses[houseNumber].Owner)
						return true;

					for (int i = 0; i < _houses[houseNumber].NumberOfGuests; i++)
						if (character.IDNumber == _houses[houseNumber].Guests[i])
							return true;
					break;
			}

			return false;
		}
示例#9
0
        private void CharacterToRoom(CharacterData character, int number)
        {
            if (character == null || number == GlobalConstants.NOWHERE || number > _topOfRoomTable)
            {
                Log ("SYSERR: Illegal values passed to CharacterToRoom.");
                return;
            }

            _rooms[number].People.Add(character);
            character.InRoom = number;

            if (character.Equipment[(int)WearTypes.Light] != null)
                if (character.Equipment[(int)WearTypes.Light].Type == ObjectTypes.Light)
                    if (character.Equipment[(int)WearTypes.Light].Flags.Values[2] > 0)
                        _rooms[number].Light++;

            if (character.Fighting != null && character.InRoom != character.Fighting.InRoom)
            {
                //StopFighting (character.Fighting);
                //StopFighting (character);
            }
        }
示例#10
0
 public static string ColorYellow(CharacterData data, int level)
 {
     return Color(data, level) ? GlobalConstants.KYEL : GlobalConstants.KNUL;
 }
示例#11
0
 public static string ColorWhite(CharacterData data, int level)
 {
     return Color(data, level) ? GlobalConstants.KWHT : GlobalConstants.KNUL;
 }
示例#12
0
 public static string ColorRed(CharacterData data, int level)
 {
     return Color(data, level) ? GlobalConstants.KRED : GlobalConstants.KNUL;
 }
示例#13
0
 public static string ColorNormal(CharacterData data, int level)
 {
     return Color(data, level) ? GlobalConstants.KNRM : GlobalConstants.KNUL;
 }
示例#14
0
 public static string ColorMagenta(CharacterData data, int level)
 {
     return Color(data, level) ? GlobalConstants.KMAG : GlobalConstants.KNUL;
 }
示例#15
0
        void PerformAct(string text, CharacterData character, ObjectData obj, object victimObject, CharacterData to)
        {
            string str = "";
            CharacterData scriptVictim = null;
            ObjectData scriptTarget = null;

            string buffer = String.Empty;

            for (int i = 0; i < text.Length; i++)
            {
                if (text[i] == '$')
                {
                    switch (text[++i])
                    {
                        case 'n':
                            str = PersonString(character, to);
                            break;

                        case 'N':
                            scriptVictim = victimObject as CharacterData;

                            if (scriptVictim == null)
                                str = "<NULL>";
                            else
                                str = PersonString(scriptVictim, to);
                            break;

                        case 'm':
                            str = HimHer(character);
                            break;

                        case 'M':
                            scriptVictim = victimObject as CharacterData;

                            if (scriptVictim == null)
                                str = "<NULL>";
                            else
                                str = HimHer(scriptVictim);
                            break;

                        case 's':
                            str = HisHer(character);
                            break;

                        case 'S':
                            scriptVictim = victimObject as CharacterData;

                            if (scriptVictim == null)
                                str = "<NULL>";
                            else
                                str = HisHer(scriptVictim);
                            break;

                        case 'e':
                            str = HeShe(character);
                            break;

                        case 'E':
                            scriptVictim = victimObject as CharacterData;

                            if (scriptVictim == null)
                                str = "<NULL>";
                            else
                                str = HeShe(scriptVictim);
                            break;

                        case 'o':
                            if (obj == null)
                                str = "<NULL>";
                            else
                                str = ObjectName(obj, to);
                            break;

                        case 'O':
                            scriptTarget = victimObject as ObjectData;

                            if (scriptTarget == null)
                                str = "<NULL>";
                            else
                                str = ObjectName(scriptTarget, to);
                            break;

                        case 'p':
                            if (obj == null)
                                str = "<NULL>";
                            else
                                str = ObjectString(obj, to);
                            break;

                        case 'P':
                            scriptTarget = victimObject as ObjectData;

                            if (scriptTarget == null)
                                str = "<NULL>";
                            else
                                str = ObjectString(scriptTarget, to);
                            break;

                        case 'a':
                            if (obj == null)
                                str = "<NULL>";
                            else
                                str = SAnA(obj);
                            break;

                        case 'A':
                            scriptTarget = victimObject as ObjectData;

                            if (scriptTarget == null)
                                str = "<NULL>";
                            else
                                str = SAnA(scriptTarget);
                            break;

                        case 't':
                            if (obj == null)
                                str = "<NULL>";
                            else
                                str = obj.Name;
                            break;

                        case 'T':
                            scriptTarget = victimObject as ObjectData;

                            if (scriptTarget == null)
                                str = "<NULL>";
                            else
                                str = scriptTarget.Name;
                            break;

                        case 'F':
                            if (obj == null)
                                str = "<NULL>";
                            else
                                str = GlobalUtilities.FirstName(obj.Name);
                            break;

                        case 'u':
                            //for (j=buf; j > lbuf && !isspace((int) *(j-1)); j--);
                            //if (j != buf)
                            //  *j = UPPER(*j);
                            //i = "";
                            break;

                        case 'U':
                            //uppercasenext = TRUE;
                            //i = "";
                            break;

                        case '$':
                            str = "$";
                            break;

                        default:
                            Log("SYSERR: Illegal $-code to act(): " + text[i]);
                            Log("SYSERR: " + text);
                            str = "";
                            break;
                    }

                    buffer += str;
                }
                else
                {
                    buffer += text[i];
                }
                //else if (!(*(buf++) = *(orig++)))
                //{
                //    break;
                //}
                //else if (uppercasenext && !isspace((int) *(buf-1)))
                //{
                //    *(buf-1) = UPPER(*(buf-1));
                    //uppercasenext = FALSE;
                //}
            }

            buffer += "r\n\0";

            if (to.Descriptor != null)
                WriteToOutput(to.Descriptor, buffer);

            //if ((to.IsNPC && scriptActTrigger > 0) && (to != character))
              //act_mtrigger(to, lbuf, ch, dg_victim, obj, dg_target, dg_arg);
        }
示例#16
0
        private bool PerformMove(CharacterData character, DirectionTypes direction, bool needSpecialsCheck)
        {
            int wasInRoom = 0;

            if (character == null || character.Fighting != null)
                return false;
            else if (GetExit(character, direction) == null || GetExit(character, direction).ToRoom == GlobalConstants.NOWHERE)
                SendToCharacter (character, "Alas, you cannot go that way...\r\n");
            else if (GetExit(character, direction).ExitFlagged(DirectionOptionFlags.Closed))
            {
                if (!String.IsNullOrEmpty(GetExit(character, direction).Keyword))
                    SendToCharacter (character, "The " + GlobalUtilities.FirstName(GetExit(character, direction).Keyword) + " seems to be closed.\r\n");
                else
                    SendToCharacter (character, "It seems to be closed.\r\n");
            }
            else
            {
                if (!character.HasFollowers)
                    return (DoSimpleMove (character, direction, needSpecialsCheck));

                wasInRoom = character.InRoom;

                if (!DoSimpleMove (character, direction, needSpecialsCheck))
                    return false;

                foreach (CharacterData follower in character.Followers)
                {
                    if ((follower.InRoom == wasInRoom) && follower.Position >= PositionTypes.Standing)
                    {
                        Act("You follow $N.\r\n", false, follower, null, character, GlobalConstants.TO_CHAR);
                        PerformMove (follower, direction, true);
                    }
                }

                return true;
            }

            return false;
        }
示例#17
0
 public static string ColorBlue(CharacterData data, int level)
 {
     return Color(data, level) ? GlobalConstants.KBLU : GlobalConstants.KNUL;
 }
示例#18
0
 internal bool SaveCharacter(CharacterData character)
 {
     return true;
 }
示例#19
0
 private void CommandInterpreter(CharacterData character, string command)
 {
     Console.WriteLine("CommandInterpreter");
 }
示例#20
0
        private bool DoSimpleMove(CharacterData character, DirectionTypes direction, bool needsSpecialsCheck)
        {
            int needMovement;

            if (needsSpecialsCheck && Special (character, (int)direction + 1, String.Empty))
                return false;

            /* blocked by a leave trigger ? */
            //if (!leave_mtrigger (ch, dir))
            //	return 0;
            //if (!leave_wtrigger (&world[IN_ROOM (ch)], ch, dir))
            //	return 0;

            if (character.AffectFlagged (AffectFlags.Charm) && character.Master != null &&
                character.InRoom == character.Master.InRoom)
            {
                SendToCharacter (character, "The thought of leaving your master makes you weep.\r\n");
                Act("$n bursts into tears.", false, character, null, null, GlobalConstants.TO_ROOM);
                return false;
            }

            if ((GetRoomSector (character.InRoom) == SectorTypes.WaterNoSwim) ||
                GetRoomSector (GetExit (character, direction).ToRoom) == SectorTypes.WaterNoSwim)
            {
                if (!HasBoat (character))
                {
                    SendToCharacter (character, "You need a boat to go there.\r\n");
                    return false;
                }
            }

            needMovement = (MovementLoss[(int)GetRoomSector (character.InRoom)] +
                MovementLoss[(int)GetRoomSector (GetExit (character, direction).ToRoom)]) / 2;

            if (character.Points.Move < needMovement && !character.IsNPC)
            {
                if (needsSpecialsCheck && character.Master != null)
                    SendToCharacter (character, "You are too exhausted to follow.\r\n");
                else
                    SendToCharacter (character, "You are too exhausted.\r\n");

                return false;
            }

            if (_rooms[character.InRoom].RoomFlagged (RoomFlags.Atrium))
            {
                if (!HouseCanEnter (character, GetRoomVirtualNumber (GetExit (character, direction).ToRoom)))
                {
                    SendToCharacter (character, "That's private property -- no trespassing!\r\n");
                    return false;
                }
            }

            if (_rooms[GetExit (character, direction).ToRoom].RoomFlagged (RoomFlags.Tunnel) &&
                NumberOfPCInRoom (_rooms[GetExit (character, direction).ToRoom]) >= GlobalSettings.TunnelSize)
            {
                if (GlobalSettings.TunnelSize > 1)
                    SendToCharacter (character, "There isn't enough room for you to go there!\r\n");
                else
                    SendToCharacter (character, "There isn't enough room there for more than one person!\r\n");

                return false;
            }

            if (_rooms[GetExit (character, direction).ToRoom].RoomFlagged (RoomFlags.GodRoom) &&
                character.Level < GlobalConstants.LVL_GRGOD)
            {
                SendToCharacter (character, "You aren't godly enough to use that room!\r\n");
                return false;
            }

            if (character.Level < GlobalConstants.LVL_IMMORT && !character.IsNPC)
                character.Points.Move -= needMovement;

            if (!character.AffectFlagged (AffectFlags.Sneak))
            {
                Act("$n leaves "+GlobalConstants.Directions[(int)direction], true, character, null, null, GlobalConstants.TO_ROOM);
            }

            int wasInRoom = character.InRoom;
            CharacterFromRoom (character);
            CharacterToRoom (character, _rooms[wasInRoom].DirectionOptions[(int)direction].ToRoom);

            // Trigger Stuff
            /* move them first, then move them back if they aren't allowed to go. */
            /* see if an entry trigger disallows the move */
            //if (!entry_mtrigger(ch) || !enter_wtrigger(&world[IN_ROOM(ch)], ch, dir))
            //{
            //char_from_room(ch);
            //char_to_room(ch, was_in);
            //return 0;
            //}

            if (!character.AffectFlagged (AffectFlags.Sneak))
                Act ("$n has arrived.", true, character, null, null, GlobalConstants.TO_ROOM);

            if (character.Descriptor != null)
                //LookAtRoom (character, 0);

            if (_rooms[character.InRoom].RoomFlagged (RoomFlags.Death) && character.Level < GlobalConstants.LVL_IMMORT)
            {
                //LogDeathTrap (character);
                //DeathCry (character);
                //ExtractCharacter (character);
                return false;
            }

            //entry_memory_mtrigger (ch);

            //if (!greet_mtrigger (ch, dir))
            //{
            //	char_from_room (ch);
            //	char_to_room (ch, was_in);
            //	look_at_room (ch, 0);
            //}
            //else
            //	greet_memory_mtrigger (ch);

            return true;
        }
示例#21
0
 internal bool LoadCharacter(string name, CharacterData character)
 {
     return false;
 }
示例#22
0
        private bool SendToCharacter(CharacterData character, string message, params object[] vars)
        {
            if (character.Descriptor != null && !String.IsNullOrEmpty(message))
            {
                string text = String.Format(message, vars);

                WriteToOutput(character.Descriptor, text);

                return true;
            }

            return false;
        }
示例#23
0
		private bool DumpSpecial (CharacterData character, object me, int command, string argument)
		{
			return false;
		}
示例#24
0
 public static string ColorGreen(CharacterData data, int level)
 {
     return Color(data, level) ? GlobalConstants.KGRN : GlobalConstants.KNUL;
 }
示例#25
0
        private bool HasBoat(CharacterData character)
        {
            if (character.Level > GlobalConstants.LVL_IMMORT)
                return true;

            if (character.AffectFlagged (AffectFlags.Waterwalk))
                return true;

            foreach (ObjectData obj in character.Inventory)
            {
                if (obj.Type == ObjectTypes.Boat && FindEquipmentPosition (character, obj, null) < WearTypes.None)
                    return true;
            }

            for (int i = 0; i < (int)WearTypes.Index; i++)
                if (character.Equipment[i] != null && character.Equipment[i].Type == ObjectTypes.Boat)
                    return true;

            return false;
        }
示例#26
0
 public static int ColorLevel(CharacterData data)
 {
     return !data.IsNPC ? (data.PreferenceFlagged(PreferenceFlags.Color1) ? 1 : 0) + (data.PreferenceFlagged(PreferenceFlags.Color2) ? 2 : 0) : 0;
 }
示例#27
0
        private void ExtractCharacterFinal(CharacterData character)
        {
            if (character.InRoom == GlobalConstants.NOWHERE)
            {
                //Log("SYSERR: NOWHERE extracting char %s. (ExtractCharFinal)", character.GetName());
                return;
            }

            if (!character.IsNPC && character.Descriptor == null)
            {
                foreach (DescriptorData descriptor in _descriptors)
                {
                    if (descriptor.Original == character)
                    {
                        //DoReturn(descriptor.Character, null, 0, 0);
                        break;
                    }
                }
            }

            if (character.Descriptor != null)
            {
                //if (character.Descriptor.Original != null)
                    //DoReturn(character, null, 0, 0);
                //else
                {
                    foreach (DescriptorData descriptor in _descriptors)
                    {
                        if (descriptor == character.Descriptor)
                            continue;
                        if (descriptor.Character != null && character.IDNumber == descriptor.Character.IDNumber)
                            descriptor.ConnectState = ConnectState.Close;
                    }

                    character.Descriptor.ConnectState = ConnectState.Menu;
                    WriteToOutput(character.Descriptor, _textMenu);
                }
            }

            // On with the character's assets.

            //if (character.Followers.Count > 0 || character.Master != null)
                //DieFollower(character);

            // Transfer objects to room, if any.
            foreach (ObjectData obj in character.Inventory)
            {
                //ObjectFromCharacter(obj);
                //ObjectToRoom(obj, character.InRoom);
            }

            // Transfer equipment to room, if any.
            //for (int i = 0; i < GlobalConstants.NUM_WEARS; i++)
                //if (character.GetEQ(i) != null)
                    //ObjectToRoom(UnEquipCharacter(character, i), character.InRoom);

            //if (character.Fighting != null)
                //StopFighting(character);

            //foreach (CharacterData fighter in _combatters)
                //if (fighter.Fighting == character)
                    //StopFighting(fighter);

            foreach (CharacterData hunter in _characters)
                if (hunter.Hunting == character)
                    hunter.Hunting = null;

            //CharacterFromRoom(character);

            if (character.IsNPC)
            {
                //if (character.MobileRealNumber != GlobalConstants.NOTHING)
                    //_mobileIndex[character.MobileRealNumber].Number--;

                //ClearMemory(character);

                //if (character.Script != null)
                    //ExtractScript(character.Script);
                //if (character.ScriptMemory != null)
                    //ExtractScriptMemory(character.ScriptMemory);
            }
            else
            {
                //SaveCharacter(character);
                //CrashDeleteCrashFile(character);
            }

            //if (character.IsNPC || character.Descriptor != null)
                //FreeCharacter(character);
        }
示例#28
0
        private void Act(string text, bool hideInvisible, CharacterData character, ObjectData obj, object victim, int type)
        {
            int toSleeping;

            if (String.IsNullOrEmpty(text))
                return;

            if ((toSleeping = (type & GlobalConstants.TO_SLEEP)) != 0)
                type &= ~GlobalConstants.TO_SLEEP;

            /* this is a hack as well - DG_NO_TRIG is 256 -- Welcor */
            if ((_actCheck = (type & GlobalConstants.DG_NO_TRIG)) != 0)
                type &= ~GlobalConstants.DG_NO_TRIG;

            if (type == GlobalConstants.TO_CHAR)
            {
                if (character != null && SendOK(character, toSleeping))
                    PerformAct(text, character, obj, victim, character);

                return;
            }

            if (type == GlobalConstants.TO_VICT)
            {
                CharacterData to = victim as CharacterData;

                if (to != null && SendOK(to, toSleeping))
                {
                    PerformAct(text, character, obj, victim, to);
                }

                return;
            }

            if (type == GlobalConstants.TO_GMOTE)
            {
                DescriptorData i;

                foreach (DescriptorData data in _descriptors)
                {
                    if (data.Character != null && data.Character.PreferenceFlagged(PreferenceFlags.NoGossip) && data.Character.PlayerFlagged(PlayerFlags.Writing) &&
                        _rooms[data.Character.InRoom].RoomFlagged(RoomFlags.Soundproof))
                    {
                        SendToCharacter(data.Character, "%s", CharacterData.ColorYellow(data.Character, GlobalConstants.C_NRM));
                        PerformAct(text, character, obj, victim, data.Character);
                        SendToCharacter(data.Character, "%s", CharacterData.ColorNormal(data.Character, GlobalConstants.C_NRM));
                    }
                }

                return;
            }

            List<CharacterData> people = null;

            if (character != null && character.InRoom != GlobalConstants.NOWHERE)
                people = _rooms[character.InRoom].People;
            else if (obj != null && obj.InRoom != GlobalConstants.NOWHERE)
                people = _rooms[obj.InRoom].People;
            else
            {
                Log("SYSERR: no valid target to Act()!");
                return;
            }

            foreach (CharacterData person in people)
            {
                if (!SendOK(person, toSleeping) || person == character)
                    continue;
                if (hideInvisible && character != null && !CanSee(person, character))
                    continue;
                if (type != GlobalConstants.TO_ROOM && person == victim)
                    continue;
                PerformAct(text, character, obj, victim, person);
            }
        }
示例#29
0
        private bool Special(CharacterData character, int command, string arg)
        {
            if (GetRoomSpecial(character.InRoom) != null)
                if (GetRoomSpecial(character.InRoom)(character, _rooms[character.InRoom], command, arg))
                    return true;

            for (int j = 0; j < (int)WearTypes.Index; j++)
                if (character.Equipment[j] != null && GetObjectSpecial(character.Equipment[j]) != null)
                    if (GetObjectSpecial(character.Equipment[j])(character, character.Equipment[j], command, arg))
                        return true;

            foreach (ObjectData obj in character.Inventory)
                if (GetObjectSpecial(obj) != null)
                    if (GetObjectSpecial(obj)(character, obj, command, arg))
                        return true;

            foreach (CharacterData person in _rooms[character.InRoom].People)
                if (!person.MobileFlagged(MobileFlags.NotDeadYet))
                    if (GetMobileSpecial(person) != null)
                        if (GetMobileSpecial(person)(character, person, command, arg))
                            return true;

            foreach (ObjectData obj in _rooms[character.InRoom].Contents)
                if (GetObjectSpecial(obj) != null)
                    if (GetObjectSpecial(obj)(character, obj, command, arg))
                        return true;

            return false;
        }
示例#30
0
 public static bool Color(CharacterData data, int level)
 {
     return ColorLevel(data) >= level;
 }