Esempio n. 1
0
        /// <summary>
        /// Finds an exit based on a keyword.  Use FindDoor if you are looking for a door.
        /// </summary>
        /// <param name="ch"></param>
        /// <param name="arg"></param>
        /// <returns></returns>
        public static Exit.Direction FindExit(CharData ch, string arg)
        {
            Exit exit;

            Exit.Direction door = Exit.DoorLookup(arg);
            if (door == Exit.Direction.invalid)
            {
                for (int doornum = 0; doornum < Limits.MAX_DIRECTION; doornum++)
                {
                    if ((exit = ch.InRoom.ExitData[doornum]) && exit.HasFlag(Exit.ExitFlag.is_door) &&
                        !(ch.Level < Limits.LEVEL_AVATAR && exit.ExitFlags != 0 &&
                          (exit.HasFlag(Exit.ExitFlag.secret) || exit.HasFlag(Exit.ExitFlag.blocked))) &&
                        exit.Keyword.Length != 0 && ("door".Equals(arg, StringComparison.CurrentCultureIgnoreCase) ||
                                                     MUDString.NameContainedIn(arg, exit.Keyword)))
                    {
                        return((Exit.Direction)doornum);
                    }
                }
                SocketConnection.Act("I see no $T here.", ch, null, arg, SocketConnection.MessageTarget.character);
                return(Exit.Direction.invalid);
            }

            if (!(exit = ch.InRoom.ExitData[(int)door]))
            {
                SocketConnection.Act("I see no door $T here.", ch, null, arg, SocketConnection.MessageTarget.character);
                return(Exit.Direction.invalid);
            }

            return(door);
        }
Esempio n. 2
0
        /// <summary>
        /// Finds a door based on a keyword or direction.  Use FindExit if you only need to get an exit,
        /// no door required.  This should _not_ tell the character anything; it is an internal function.
        /// </summary>
        /// <param name="ch"></param>
        /// <param name="arg"></param>
        /// <returns></returns>
        public static Exit.Direction FindDoor(CharData ch, string arg)
        {
            Exit exit;

            Exit.Direction door = Exit.DoorLookup(arg);
            if (door == Exit.Direction.invalid)
            {
                for (int doornum = 0; doornum < Limits.MAX_DIRECTION; doornum++)
                {
                    if ((exit = ch.InRoom.ExitData[doornum]) && exit.HasFlag(Exit.ExitFlag.is_door) &&
                        !(ch.Level < Limits.LEVEL_AVATAR && exit.ExitFlags != 0 &&
                          (exit.HasFlag(Exit.ExitFlag.secret) || exit.HasFlag(Exit.ExitFlag.blocked))) &&
                        exit.Keyword.Length != 0 && ("door".Equals(arg, StringComparison.CurrentCultureIgnoreCase) ||
                                                     MUDString.NameContainedIn(arg, exit.Keyword)))
                    {
                        return((Exit.Direction)doornum);
                    }
                }
                return(Exit.Direction.invalid);
            }

            exit = ch.InRoom.GetExit(door);
            if (!exit)
            {
                return(Exit.Direction.invalid);
            }

            if (!exit.HasFlag(Exit.ExitFlag.is_door))
            {
                return(Exit.Direction.invalid);
            }

            return(door);
        }
Esempio n. 3
0
        /// <summary>
        /// Checks whether the character is authorized to use a particular immortal skill.
        /// </summary>
        /// <param name="skllnm"></param>
        /// <returns></returns>
        public bool Authorized(string skllnm)
        {
            if (!MUDString.NameContainedIn(skllnm, _immortalSkills))
            {
                return(false);
            }

            return(true);
        }
Esempio n. 4
0
        /// <summary>
        /// Get an extra description from a list.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="ed"></param>
        /// <returns></returns>
        public static string GetExtraDescription(string name, List <ExtendedDescription> ed)
        {
            if (String.IsNullOrEmpty(name) || ed == null || ed.Count < 1)
            {
                return(String.Empty);
            }

            foreach (ExtendedDescription desc in ed)
            {
                if (MUDString.NameContainedIn(name, desc.Keyword))
                {
                    return(desc.Description);
                }
            }
            return(String.Empty);
        }
Esempio n. 5
0
        /// <summary>
        /// Converts mob innate string to a value.
        /// </summary>
        /// <param name="innate"></param>
        /// <param name="text"></param>
        public static void InnateLookup(int[] innate, string text)
        {
            int index;

            if (!MUDString.StringsNotEqual(text, "none"))
            {
                return;
            }

            for (index = 0; BitvectorFlagType.InnateFlags[index].BitvectorData; index++)
            {
                if (MUDString.NameContainedIn(BitvectorFlagType.InnateFlags[index].Name, text))
                {
                    Macros.SetBit(ref innate[BitvectorFlagType.InnateFlags[index].BitvectorData.Group], BitvectorFlagType.InnateFlags[index].BitvectorData.Vector);
                }
            }
        }
Esempio n. 6
0
        /// <summary>
        /// Translates a dragon breath type _name into its special function.
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        static MobSpecial GetBreathType(string name)
        {
            if (string.IsNullOrEmpty(name))
            {
                return(null);
            }

            if (MUDString.NameContainedIn("br_f", name))
            {
                return(MobSpecial.SpecMobLookup("spec_breath_fire")[0]);
            }
            if (MUDString.NameContainedIn("br_a", name))
            {
                return(MobSpecial.SpecMobLookup("spec_breath_acid")[0]);
            }
            if (MUDString.NameContainedIn("br_c", name))
            {
                return(MobSpecial.SpecMobLookup("spec_breath_frost")[0]);
            }
            if (MUDString.NameContainedIn("br_g", name))
            {
                return(MobSpecial.SpecMobLookup("spec_breath_gas")[0]);
            }
            if (MUDString.NameContainedIn("br_l", name))
            {
                return(MobSpecial.SpecMobLookup("spec_breath_lightning")[0]);
            }
            if (MUDString.NameContainedIn("br_w", name))
            {
                return(MobSpecial.SpecMobLookup("spec_breath_water")[0]);
            }
            if (MUDString.NameContainedIn("br_s", name))
            {
                return(MobSpecial.SpecMobLookup("spec_breath_shadow")[0]);
            }

            return(MobSpecial.SpecMobLookup("spec_breath_any")[0]);
        }
Esempio n. 7
0
        /// <summary>
        /// Converts spell mana string to a value.
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        public static int ManaLookup(string text)
        {
            int mana = 0;

            if (!MUDString.StringsNotEqual(text, "none"))
            {
                return(0);
            }

            if (!MUDString.StringsNotEqual(text, "any"))
            {
                return(-1);
            }

            if (MUDString.NameContainedIn("earth", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_EARTH);
            }
            if (MUDString.NameContainedIn("air", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_AIR);
            }
            if (MUDString.NameContainedIn("fire", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_FIRE);
            }
            if (MUDString.NameContainedIn("water", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_WATER);
            }
            if (MUDString.NameContainedIn("time", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_TIME);
            }
            if (MUDString.NameContainedIn("horn", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_HORN);
            }
            if (MUDString.NameContainedIn("flute", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_FLUTE);
            }
            if (MUDString.NameContainedIn("mandolin", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_MANDOLIN);
            }
            if (MUDString.NameContainedIn("lyre", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_LYRE);
            }
            if (MUDString.NameContainedIn("drums", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_DRUMS);
            }
            if (MUDString.NameContainedIn("harp", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_HARP);
            }
            if (MUDString.NameContainedIn("pipes", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_PIPES);
            }
            if (MUDString.NameContainedIn("fiddle", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_FIDDLE);
            }
            if (MUDString.NameContainedIn("dulcimer", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_DULCIMER);
            }
            if (MUDString.NameContainedIn("instrument", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_INSTRUMENT);
            }
            if (MUDString.NameContainedIn("voice", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_VOICE);
            }
            if (MUDString.NameContainedIn("dance", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_DANCE);
            }
            if (MUDString.NameContainedIn("instr_augment", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_INSTR_AUGMENT);
            }
            if (MUDString.NameContainedIn("dance_augment", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_DANCE_AUGMENT);
            }
            if (MUDString.NameContainedIn("voice_augment", text))
            {
                Macros.SetBit(ref mana, Magic.MANA_VOICE_AUGMENT);
            }

            if (mana == 0)
            {
                Log.Error("Mana keyword not found:", 0);
                Log.Trace(text);
            }

            return(mana);
        }
Esempio n. 8
0
        /// <summary>
        /// Converts spell school string to a value.
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        public static int SchoolLookup(string text)
        {
            int school = 0;

            if (!MUDString.StringsNotEqual(text, "none"))
            {
                return(0);
            }

            if (MUDString.NameContainedIn("abjuration", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_ABJURATION);
            }
            if (MUDString.NameContainedIn("alteration", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_ALTERATION);
            }
            if (MUDString.NameContainedIn("conjuration", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_CONJURATION);
            }
            if (MUDString.NameContainedIn("summoning", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_SUMMONING);
            }
            if (MUDString.NameContainedIn("illusion", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_ILLUSION);
            }
            if (MUDString.NameContainedIn("phantasm", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_PHANTASM);
            }
            if (MUDString.NameContainedIn("invocation", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_INVOCATION);
            }
            if (MUDString.NameContainedIn("evocation", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_EVOCATION);
            }
            if (MUDString.NameContainedIn("enchantment", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_ENCHANTMENT);
            }
            if (MUDString.NameContainedIn("charm", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_CHARM);
            }
            if (MUDString.NameContainedIn("divination", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_DIVINATION);
            }
            if (MUDString.NameContainedIn("necromancy", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_NECROMANCY);
            }
            if (MUDString.NameContainedIn("martial_offensive", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_OFFENSIVE);
            }
            if (MUDString.NameContainedIn("martial_defensive", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_DEFENSIVE);
            }
            if (MUDString.NameContainedIn("skill_stealth", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_STEALTH);
            }
            if (MUDString.NameContainedIn("skill_survival", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_SURVIVAL);
            }
            if (MUDString.NameContainedIn("sham_elemental", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_ELEMENTAL);
            }
            if (MUDString.NameContainedIn("sham_spiritual", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_SPIRITUAL);
            }
            if (MUDString.NameContainedIn("sham_animal", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_ANIMAL);
            }
            if (MUDString.NameContainedIn("instr_horn", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_HORN);
            }
            if (MUDString.NameContainedIn("instr_flute", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_FLUTE);
            }
            if (MUDString.NameContainedIn("instr_mandolin", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_MANDOLIN);
            }
            if (MUDString.NameContainedIn("instr_lyre", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_LYRE);
            }
            if (MUDString.NameContainedIn("instr_drums", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_DRUMS);
            }
            if (MUDString.NameContainedIn("instr_harp", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_HARP);
            }
            if (MUDString.NameContainedIn("instr_pipes", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_PIPES);
            }
            if (MUDString.NameContainedIn("instr_fiddle", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_FIDDLE);
            }
            if (MUDString.NameContainedIn("instr_dulcimer", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_DULCIMER);
            }
            if (MUDString.NameContainedIn("chronomancy", text))
            {
                Macros.SetBit(ref school, Magic.SCHOOL_CHRONOMANCY);
            }

            if (school == 0)
            {
                Log.Error("School/realm keyword not found:", 0);
                Log.Trace(text);
            }

            return(school);
        }
Esempio n. 9
0
        /// <summary>
        /// Look a damage type based on its name.
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        public static Race.DamageType DamageTypeLookup(string text)
        {
            int value = 0;

            if (!MUDString.StringsNotEqual(text, "none"))
            {
                return(0);
            }

            if (MUDString.NameContainedIn("fire", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.fire);
            }
            if (MUDString.NameContainedIn("cold", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.cold);
            }
            if (MUDString.NameContainedIn("electricity", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.electricity);
            }
            if (MUDString.NameContainedIn("energy", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.energy);
            }
            if (MUDString.NameContainedIn("acid", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.acid);
            }
            if (MUDString.NameContainedIn("poison", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.poison);
            }
            if (MUDString.NameContainedIn("charm", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.charm);
            }
            if (MUDString.NameContainedIn("mental", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.mental);
            }
            if (MUDString.NameContainedIn("white_mana", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.whiteMana);
            }
            if (MUDString.NameContainedIn("black_mana", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.blackMana);
            }
            if (MUDString.NameContainedIn("disease", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.disease);
            }
            if (MUDString.NameContainedIn("drowning", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.drowning);
            }
            if (MUDString.NameContainedIn("light", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.light);
            }
            if (MUDString.NameContainedIn("sound", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.sound);
            }
            if (MUDString.NameContainedIn("magic", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.magic);
            }
            if (MUDString.NameContainedIn("nonmagic", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.nonmagic);
            }
            if (MUDString.NameContainedIn("silver", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.silver);
            }
            if (MUDString.NameContainedIn("iron", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.iron);
            }
            if (MUDString.NameContainedIn("wood", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.wood);
            }
            if (MUDString.NameContainedIn("weapon", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.weapon);
            }
            if (MUDString.NameContainedIn("bash", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.bash);
            }
            if (MUDString.NameContainedIn("pierce", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.pierce);
            }
            if (MUDString.NameContainedIn("slash", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.slash);
            }
            if (MUDString.NameContainedIn("gas", text))
            {
                Macros.SetBit(ref value, (int)Race.DamageType.gas);
            }

            return((Race.DamageType)value);
        }
Esempio n. 10
0
        /// <summary>
        /// Convert parts string to a value
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        public static Race.Parts PartsLookup(string text)
        {
            int part = 0;

            if (!MUDString.StringsNotEqual(text, "none"))
            {
                return(Race.Parts.none);
            }

            if (MUDString.NameContainedIn("skull", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.skull);
            }
            if (MUDString.NameContainedIn("arms", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.arms);
            }
            if (MUDString.NameContainedIn("legs", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.legs);
            }
            if (MUDString.NameContainedIn("heart", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.heart);
            }
            if (MUDString.NameContainedIn("brains", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.brains);
            }
            if (MUDString.NameContainedIn("guts", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.guts);
            }
            if (MUDString.NameContainedIn("hands", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.hands);
            }
            if (MUDString.NameContainedIn("feet", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.feet);
            }
            if (MUDString.NameContainedIn("fingers", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.fingers);
            }
            if (MUDString.NameContainedIn("ears", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.ears);
            }
            if (MUDString.NameContainedIn("eyes", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.eyes);
            }
            if (MUDString.NameContainedIn("hooves", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.hooves);
            }
            if (MUDString.NameContainedIn("tongue", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.tongue);
            }
            if (MUDString.NameContainedIn("eyestalks", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.eyestalks);
            }
            if (MUDString.NameContainedIn("tentacles", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.tentacles);
            }
            if (MUDString.NameContainedIn("fins", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.fins);
            }
            if (MUDString.NameContainedIn("wings", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.wings);
            }
            if (MUDString.NameContainedIn("tail", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.tail);
            }
            if (MUDString.NameContainedIn("claws", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.claws);
            }
            if (MUDString.NameContainedIn("fangs", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.fangs);
            }
            if (MUDString.NameContainedIn("horns", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.horns);
            }
            if (MUDString.NameContainedIn("scales", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.scales);
            }
            if (MUDString.NameContainedIn("tusks", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.tusks);
            }
            if (MUDString.NameContainedIn("bark", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.bark);
            }
            if (MUDString.NameContainedIn("leaves", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.leaves);
            }
            if (MUDString.NameContainedIn("branches", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.branches);
            }
            if (MUDString.NameContainedIn("trunk", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.trunk);
            }
            if (MUDString.NameContainedIn("scalp", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.scalp);
            }
            if (MUDString.NameContainedIn("cranial_chitin", text))
            {
                Macros.SetBit(ref part, (int)Race.Parts.cranial_chitin);
            }

            return((Race.Parts)part);
        }