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