Ejemplo n.º 1
0
 /// <summary>
 /// Parameterized constructor that lets us set the visible to mortals flag.
 /// </summary>
 /// <param name="nam"></param>
 /// <param name="bitv"></param>
 /// <param name="set"></param>
 /// <param name="visible"></param>
 public BitvectorFlagType(string nam, Bitvector bitv, bool set, bool visible)
 {
     _name            = nam;
     _bitvector       = bitv;
     Settable         = set;
     VisibleToMortals = visible;
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Checks for an action flag on this mobile type.
 /// </summary>
 /// <param name="bvect"></param>
 /// <returns></returns>
 public bool HasActBit(Bitvector bvect)
 {
     if ((_actionFlags[bvect.Group] & bvect.Vector) != 0)
     {
         return(true);
     }
     return(false);
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Checks to see whether a bitvector is set.
        /// </summary>
        /// <param name="bvect"></param>
        /// <returns></returns>
        public bool HasBitvector(Bitvector bvect)
        {
            if ((_bitVectors[bvect.Group] & bvect.Vector) != 0)
            {
                return(true);
            }

            return(false);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Checks whether an area has a specific flag set.
 /// </summary>
 /// <param name="bvect"></param>
 /// <returns></returns>
 public bool HasFlag(Bitvector bvect)
 {
     // Protect against index out of range exceptions.
     if (_areaFlags.Length <= bvect.Group)
     {
         return(false);
     }
     if ((_areaFlags[bvect.Group] & bvect.Vector) != 0)
     {
         return(true);
     }
     return(false);
 }
Ejemplo n.º 5
0
        /// <summary>
        /// Checks a race for a specific innate ability.
        /// </summary>
        /// <param name="bit"></param>
        /// <returns></returns>
        public bool HasInnate(Bitvector bit)
        {
            if (_innateAbilities == null || _innateAbilities.Length < 1)
            {
                return(false);
            }

            if ((_innateAbilities[bit.Group] & bit.Vector) != 0)
            {
                return(true);
            }
            return(false);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Sets which bitvector is active on an affect. Only allows one bitvector
        /// per affect data and sets everything else to 0.
        /// </summary>
        /// <param name="bvect"></param>
        public void SetBitvector(Bitvector bvect)
        {
            int count;

            for (count = 0; count < Limits.NUM_AFFECT_VECTORS; ++count)
            {
                if (count == bvect.Group)
                {
                    _bitVectors[count] = bvect.Vector;
                }
                else
                {
                    _bitVectors[count] = 0;
                }
            }

            return;
        }
Ejemplo n.º 7
0
 public WearData( Bitvector wearflag, int wearloc1, int wearloc2, int wearloc3, string wearmsg1, string wearmsg2, int partneeded, int racenotallowed )
 {
     WearFlag = wearflag;
     WearLocations = new List<int>();
     if (wearloc1 != 0)
     {
         WearLocations.Add(wearloc1);
     }
     if (wearloc2 != 0)
     {
         WearLocations.Add(wearloc2);
     }
     if (wearloc3 != 0)
     {
         WearLocations.Add(wearloc3);
     }
     WearMessageToWearer = wearmsg1;
     WearMessageToRoom = wearmsg2;
     BodyPartNeeded = partneeded;
     RacesNotAllowed = racenotallowed;
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Toggles an affect bit on the character.
 /// </summary>
 /// <param name="bvect"></param>
 public void ToggleAffectBit( Bitvector bvect )
 {
     AffectedBy[ bvect.Group ] ^= bvect.Vector;
     return;
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Constructor that takes a spell argument to create an affect and set its paramters.
 /// </summary>
 /// <param name="type"></param>
 /// <param name="name"></param>
 /// <param name="duration"></param>
 /// <param name="location"></param>
 /// <param name="modifier"></param>
 /// <param name="bitvector"></param>
 public Affect(AffectType type, string name, int duration, Apply location, int modifier, Bitvector bitvector)
 {
     _modifiers = new List<AffectApplyType>();
     _value = name;
     _type = type;
     _duration = duration;
     AffectApplyType apply = new AffectApplyType();
     apply.Amount = modifier;
     apply.Location = location;
     _modifiers.Add(apply);
     SetBitvector(bitvector);
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Toggles an action bit on the character.
 /// </summary>
 /// <param name="bvect"></param>
 public void ToggleActionBit(Bitvector bvect)
 {
     ActionFlags[bvect.Group] ^= bvect.Vector;
     return;
 }
Ejemplo n.º 11
0
 /// <summary>
 /// Adds an affect to an object based on its bitvector.
 /// </summary>
 /// <param name="bvect"></param>
 public void AddAffect( Bitvector bvect )
 {
     Macros.SetBit( ref _affectedBy[ bvect.Group ], bvect.Vector );
     return;
 }
Ejemplo n.º 12
0
 /// <summary>
 /// Parameterized constructor that lets us set the visible to mortals flag.
 /// </summary>
 /// <param name="nam"></param>
 /// <param name="bitv"></param>
 /// <param name="set"></param>
 /// <param name="visible"></param>
 public BitvectorFlagType(string nam, Bitvector bitv, bool set, bool visible)
 {
     _name = nam;
     _bitvector = bitv;
     Settable = set;
     VisibleToMortals = visible;
 }
Ejemplo n.º 13
0
 /// <summary>
 /// Checks whether a room has a particular flag set.
 /// </summary>
 /// <param name="bvect"></param>
 /// <returns></returns>
 public bool HasFlag( Bitvector bvect )
 {
     if( Macros.IsSet( CurrentRoomFlags[ bvect.Group ], bvect.Vector ) )
     {
         return true;
     }
     return false;
 }
Ejemplo n.º 14
0
        /// <summary>
        /// Checks a race for a specific innate ability.
        /// </summary>
        /// <param name="bit"></param>
        /// <returns></returns>
        public bool HasInnate( Bitvector bit )
        {
            if (_innateAbilities == null || _innateAbilities.Length < 1)
            {
                return false;
            }

            if( ( _innateAbilities[ bit.Group ] & bit.Vector ) != 0 )
            {
                return true;
            }
            return false;
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Immortal command to set or display game-wide configuration settings.
        /// </summary>
        /// <param name="ch"></param>
        /// <param name="str"></param>
        public static void MudConfig(CharData ch, string[] str)
        {
            if( ch == null ) return;

            CharData realChar = ch.GetChar();

            if (!realChar.Authorized("world"))
                return;

            if (str.Length == 0)
            {
                ch.SendText("&+L+--------------+----------------------------------------------------------+&n\r\n");
                ch.SendText("&+L|&n&+m   Option&+L     |&n&+r Description&n                                              &+L|&n\r\n");
                ch.SendText("&+L+--------------+----------------------------------------------------------+&n\r\n");

                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.newlock)
                            ? "&+L[&+WX&+L]&n Newlock    &+L|&+c The mud is locked to new players.                        &+L|&n\r\n"
                            : "&+L[ ]&n Newlock    &+L|&+c The mud allows new players.                              &+L|&n\r\n"
                            );
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.turbolevel)
                            ? "&+L[&+WX&+L]&n Turbolevel &+L|&+c Players get up to 10 levels at a time.                   &+L|&n\r\n"
                            : "&+L[ ]&n Turbolevel &+L|&+c Players level as normal.                                 &+L|&n\r\n"
                            );
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.equipmentdamage)
                            ? "&+L[&+WX&+L]&n Eqdamage   &+L|&+c Equipment will take damage.                              &+L|&n\r\n"
                            : "&+L[ ]&n Eqdamage   &+L|&+c Equipment is practically indestructible.                 &+L|&n\r\n");
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.capturetheflag)
                            ? "&+L[&+WX&+L]&n CTF        &+L|&+c Capture the flag is enabled.                             &+L|&n\r\n"
                            : "&+L[ ]&n CTF        &+L|&+c Capture the flag is not enabled.                         &+L|&n\r\n");
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.equipmentpvp)
                            ? "&+L[&+WX&+L]&n EqPVP      &+L|&+c Equipment effects ability in PvP and stealing (NYI).     &+L|&n\r\n"
                            : "&+L[ ]&n EqPVP      &+L|&+c Equipment doesn't effect PvP and stealing (NYI).         &+L|&n\r\n");
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.stricteqpvp)
                            ? "&+L[&+WX&+L]&n StrictEQ   &+L|&+c Strict equipment PvP requirements.                       &+L|&n\r\n"
                            : "&+L[ ]&n StrictEQ   &+L|&+c Lenient equipment PvP requirements.                      &+L|&n\r\n");
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.mobcastslots)
                            ? "&+L[&+WX&+L]&n Mobcast    &+L|&+c Mobs use slots for spellcasting.                         &+L|&n\r\n"
                            : "&+L[ ]&n Mobcast    &+L|&+c Mobs have unlimited spells.                              &+L|&n\r\n");
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.mobslootplayers)
                            ? "&+L[&+WX&+L]&n Mobloot    &+L|&+c Mobs will loot PC corpses.                               &+L|&n\r\n"
                            : "&+L[ ]&n Mobloot    &+L|&+c Mobs will not loot PC corpses.                           &+L|&n\r\n");
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.autoprice)
                            ? "&+L[&+WX&+L]&n Autoprice  &+L|&+c The MUD overrides prices set on EQ in the area file.     &+L|&n\r\n"
                            : "&+L[ ]&n Autoprice  &+L|&+c The MUD doesn't override EQ prices in the area file.     &+L|&n\r\n");
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.walkableocean)
                            ? "&+L[&+WX&+L]&n Walkocean  &+L|&+c Players can walk on the ocean. (NYI)                     &+L|&n\r\n"
                            : "&+L[ ]&n Walkocean  &+L|&+c Players can't travel the ocean without a boat. (NYI).    &+L|&n\r\n");
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.powerlevel)
                            ? "&+L[&+WX&+L]&n Plevel     &+L|&+c Power leveling is enabled.                               &+L|&n\r\n"
                            : "&+L[ ]&n Plevel     &+L|&+c Power leveling is disabled.                              &+L|&n\r\n");
                ch.SendText(CommandType.fLogAll
                            ? "&+L[&+WX&+L]&n Logall     &+L|&+c The MUD logs every command.                              &+L|&n\r\n"
                            : "&+L[ ]&n Logall     &+L|&+c The MUD does not log all commands.                       &+L|&n\r\n");
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.candelete)
                            ? "&+L[&+WX&+L]&n Candelete  &+L|&+c Players can delete their characters.                     &+L|&n\r\n"
                            : "&+L[ ]&n Candelete  &+L|&+c Players cannot delete their characters.                  &+L|&n\r\n");
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.levelrestrictedeq)
                            ? "&+L[&+WX&+L]&n Eqrestrict &+L|&+c Players cannot use equipment 25+ levels above them.      &+L|&n\r\n"
                            : "&+L[ ]&n Eqrestrict &+L|&+c Players can use equipment of any level.                  &+L|&n\r\n");
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.nameapproval)
                            ? "&+L[&+WX&+L]&n Nameapprove&+L|&+c Players have to wait for name approval.                  &+L|&n\r\n"
                            : "&+L[ ]&n Nameapprove&+L|&+c Players don't have to wait for name approval.            &+L|&n\r\n");
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.disablemccp)
                            ? "&+L[&+WX&+L]&n DisableMCCP&+L|&+c MCCP is disabled MUD-wide.                               &+L|&n\r\n"
                            : "&+L[ ]&n DisableMCCP&+L|&+c The MUD supports MCCP.                                   &+L|&n\r\n");
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.disablemsp)
                            ? "&+L[&+WX&+L]&n DisableMSP &+L|&+c The MUD Sound Protocol (MSP) is disabled MUD-wide.       &+L|&n\r\n"
                            : "&+L[ ]&n DisableMSP &+L|&+c The MUD supports MSP.                                    &+L|&n\r\n");
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.disablefaction)
                            ? "&+L[&+WX&+L]&n Faction    &+L|&+c Faction is disabled.                                     &+L|&n\r\n"
                            : "&+L[ ]&n Faction    &+L|&+c Faction is enabled.                                      &+L|&n\r\n");
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.checkfactionbit)
                            ? "&+L[&+WX&+L]&n Factionbit &+L|&+c Checking of faction bit on mobs is enabled.              &+L|&n\r\n"
                            : "&+L[ ]&n Factionbit &+L|&+c Checking of faction bit on mobs is disabled.             &+L|&n\r\n");
                ch.SendText(Macros.IsSet((int)Database.SystemData.ActFlags, (int)Sysdata.MudFlags.alwaysequip)
                            ? "&+L[&+WX&+L]&n Alwaysequip&+L|&+c Players always get newbie equipment when they die.       &+L|&n\r\n"
                            : "&+L[ ]&n Alwaysequip&+L|&+c Players over lvl 5 don't get newbie eq after death.      &+L|&n\r\n");

                ch.SendText("&+L+--------------+----------------------------------------------------------+&n\r\n");
                ch.SendText("World save to save sysdata, the fraglist, corpses, and crimes.\r\n");
                ch.SendText("World stat to show mud stats.\r\n");

            }
            else
            {
                string text;
                Sysdata.MudFlags bit;
                bool setting;

                if (str[0][0] == '+')
                {
                    setting = true;
                }
                else if (str[0][0] == '-')
                {
                    setting = false;
                }
                else
                {
                    if (!MUDString.StringsNotEqual(str[0], "save"))
                    {
                        Sysdata.Save();
                        FraglistData.Fraglist.Save();
                        Database.CorpseList.Save();
                        Crime.Save();
                        ch.SendText("Sysdata, Fraglist, Corpses, and Crimes saved.\r\n");
                        return;
                    }

                    if (!MUDString.StringsNotEqual(str[0], "stat"))
                    {
                        ch.SendText(String.Format("Players: {0}  MaxPlayers:    {1}\r\n",
                                        MUDString.PadInt(Database.SystemData.NumPlayers, 5), MUDString.PadInt(Database.SystemData.MaxPlayers, 5)));
                        ch.SendText(String.Format("MaxEver: {0}  Recorded at:   {1}\r\n",
                                       MUDString.PadInt(Database.SystemData.MaxPlayersEver, 5), Database.SystemData.MaxPlayersTime));
                        ch.SendText(String.Format("Mobs:    {0}  MobTemplates:  {1}\r\n",
                                        MUDString.PadInt(CharData.Count, 5), MUDString.PadInt(MobTemplate.Count, 5)));
                        ch.SendText(String.Format("Rooms:   {0}\r\n",
                                        MUDString.PadInt(RoomTemplate.Count, 5)));
                        ch.SendText(String.Format("Objects: {0}  ObjTemplates:  {1}\r\n",
                                        MUDString.PadInt(Object.Count, 5), MUDString.PadInt(ObjTemplate.Count, 5)));
                        ch.SendText(String.Format("Shops:   {0}\r\n",
                                        MUDString.PadInt(Shop.Count, 5)));
                        ch.SendText(String.Format("Traps:   {0}\r\n",
                                        MUDString.PadInt(Trap.Count, 5)));
                        ch.SendText(String.Format("Skills:  {0}\r\n",
                                        MUDString.PadInt(Skill.Count, 5)));
                        ch.SendText(String.Format("Spells:  {0}\r\n",
                                        MUDString.PadInt(Spell.Count, 5)));
                        ch.SendText(String.Format("Resets:  {0}\r\n",
                                        MUDString.PadInt(Reset.Count, 5)));
                        ch.SendText(String.Format("Races:   {0}\r\n",
                                        MUDString.PadInt(Race.Count, 5)));
                        ch.SendText(String.Format("Exits:   {0}\r\n",
                                        MUDString.PadInt(Exit.Count, 5)));
                        ch.SendText(String.Format("Classes: {0}\r\n",
                                        MUDString.PadInt(CharClass.Count, 5)));
                        ch.SendText(String.Format("Areas:   {0}\r\n",
                                        MUDString.PadInt(Area.Count, 5)));
                        ch.SendText(String.Format("Affects: {0}\r\n",
                                        MUDString.PadInt(Affect.Count, 5)));
                        ch.SendText(String.Format("Bounties:{0}\r\n",
                                        MUDString.PadInt(Bounty.Count, 5)));
                        ch.SendText(String.Format("QuestTemplates:   {0}\r\n",
                                        MUDString.PadInt(QuestTemplate.Count, 5)));
                        ch.SendText(String.Format("QuestItems:       {0}\r\n",
                                        MUDString.PadInt(QuestItem.Count, 5)));
                        ch.SendText(String.Format("QuestData:        {0}\r\n",
                                        MUDString.PadInt(QuestData.Count, 5)));

                        Assembly assembly = Assembly.GetExecutingAssembly();
                        AssemblyCopyrightAttribute copyright =
                            (AssemblyCopyrightAttribute)AssemblyCopyrightAttribute.GetCustomAttribute(
                                assembly, typeof(AssemblyCopyrightAttribute));
                        AssemblyTitleAttribute title =
                            (AssemblyTitleAttribute)AssemblyTitleAttribute.GetCustomAttribute(
                                assembly, typeof(AssemblyTitleAttribute));
                        FileInfo info = new FileInfo(assembly.Location);
                        DateTime date = info.LastWriteTime;

                        // Create a bitvector class just so we can get info about the base assembly.
                        Bitvector bv = new Bitvector();
                        string baseName = bv.GetType().Assembly.GetName().Name;
                        string baseVersion = bv.GetType().Assembly.GetName().Version.ToString();
                        FileInfo baseInfo = new FileInfo(bv.GetType().Assembly.Location);
                        DateTime baseDate = baseInfo.LastWriteTime;

                        Spell spell = new Spell();
                        string baseName2 = spell.GetType().Assembly.GetName().Name;
                        string baseVersion2 = spell.GetType().Assembly.GetName().Version.ToString();
                        FileInfo baseInfo2 = new FileInfo(spell.GetType().Assembly.Location);
                        DateTime baseDate2 = baseInfo2.LastWriteTime;

                        string version = title.Title +
                            " version " +
                            assembly.GetName().Version +
                            " built on " +
                            date.ToShortDateString() +
                            ".\r\nBased on version " +
                            baseVersion +
                            " of " +
                            baseName +
                            " built on " +
                            baseDate.ToShortDateString() +
                            ".\r\nBased on version " +
                            baseVersion2 +
                            " of " +
                            baseName2 +
                            " built on " +
                            baseDate2.ToShortDateString() + "\r\n";
                        ch.SendText(version);
                        return;
                    }

                    ch.SendText("World -option or +option?\r\n");
                    ch.SendText("or:        save              \r\n");
                    ch.SendText("or:        stat              \r\n");
                    return;
                }

                string tmparg = str[0];
                if ("newlock".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.newlock;
                else if ("turbolevel".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.turbolevel;
                else if ("eqdamage".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.equipmentdamage;
                else if ("ctf".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.capturetheflag;
                else if ("eqpvp".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.equipmentpvp;
                else if ("mobloot".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.mobslootplayers;
                else if ("walkocean".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.walkableocean;
                else if ("autoprice".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.autoprice;
                else if ("stricteq".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.stricteqpvp;
                else if ("mobcast".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.mobcastslots;
                else if ("plevel".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.powerlevel;
                else if ("eqrestrict".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.levelrestrictedeq;
                else if ("nameapprove".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.nameapproval;
                else if ("candelete".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.candelete;
                else if ("disablemccp".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.disablemccp;
                else if ("disablemsp".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.disablemsp;
                else if ("faction".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.disablefaction;
                else if ("factionbit".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.checkfactionbit;
                else if ("alwaysequip".StartsWith(tmparg.Substring(1), StringComparison.CurrentCultureIgnoreCase))
                    bit = Sysdata.MudFlags.alwaysequip;
                else
                {
                    ch.SendText("World which option?\r\n");
                    return;
                }

                // Convert to int so we can use SET_BIT.
                int flags = (int)Database.SystemData.ActFlags;
                if (setting)
                {
                    Macros.SetBit(ref flags, (int)bit);
                    text = String.Format("{0} is now ON.\r\n", tmparg);
                    ch.SendText(text.ToUpper());
                }
                else
                {
                    Macros.RemoveBit(ref flags, (int)bit);
                    text = String.Format("{0} is now OFF.\r\n", tmparg);
                    ch.SendText(text.ToUpper());
                }
                // Store modified value in our act flags.
                Database.SystemData.ActFlags = (Sysdata.MudFlags)flags;

            }

            return;
        }
Ejemplo n.º 16
0
 /// <summary>
 /// Check whether an exit flag is set.  Currently only handles a single set
 /// of bitvectors, which is fine since we haven't filled it even halfway yet.
 /// </summary>
 /// <param name="bvect"></param>
 /// <returns></returns>
 public bool HasFlag(Bitvector bvect)
 {
     return(HasFlag(bvect.Vector));
 }
Ejemplo n.º 17
0
 /// <summary>
 /// Removes an affect from an object based on its bitvector.
 /// </summary>
 /// <param name="bvect"></param>
 public void RemoveAffect( Bitvector bvect )
 {
     Macros.RemoveBit( ref _affectedBy[ bvect.Group ], bvect.Vector );
     return;
 }
Ejemplo n.º 18
0
 /// <summary>
 /// Removes a flag from an item.
 /// </summary>
 /// <param name="bvect"></param>
 public void RemoveFlag( Bitvector bvect )
 {
     Macros.RemoveBit( ref _extraFlags[ bvect.Group ], bvect.Vector );
     return;
 }
Ejemplo n.º 19
0
 /// <summary>
 /// Checks an object for a specific wear flag.
 /// </summary>
 /// <param name="bvect"></param>
 /// <returns></returns>
 public bool HasWearFlag(Bitvector bvect)
 {
     if ((_wearFlags.Length - 1) < bvect.Group)
     {
         Log.Error("HasWearFlag: Called on object with too few wear flags. BV: " + bvect + ", Object: " +
             this, ", NumFlags: " + _wearFlags.Length);
         return false;
     }
     if (Macros.IsSet(_wearFlags[bvect.Group], bvect.Vector))
     {
         return true;
     }
     return false;
 }
Ejemplo n.º 20
0
        /// <summary>
        /// Checks for an affect on an object based on its bitvector.
        /// </summary>
        /// <param name="bvect"></param>
        /// <returns></returns>
        public bool HasAffect( Bitvector bvect )
        {
            if( Macros.IsSet( _affectedBy[ bvect.Group ], bvect.Vector ) )
                return true;

            return false;
        }
Ejemplo n.º 21
0
 public void AddFlag( Bitvector bvect )
 {
     Macros.SetBit( ref _extraFlags[ bvect.Group ], bvect.Vector );
     return;
 }
Ejemplo n.º 22
0
 /// <summary>
 /// Called by RemoveAffect() method.  If you want to remove an affect bit, do so
 /// through RemoveAffect().
 /// </summary>
 /// <param name="bvect"></param>
 private void RemoveAffectBit( Bitvector bvect )
 {
     AffectedBy[ bvect.Group ] &= ~( bvect.Vector );
     return;
 }
Ejemplo n.º 23
0
 /// <summary>
 /// Removes an action flag from this mobile type.
 /// </summary>
 /// <param name="bvect"></param>
 public void RemoveActBit(Bitvector bvect)
 {
     _actionFlags[bvect.Group] &= ~(bvect.Vector);
     return;
 }
Ejemplo n.º 24
0
 /// <summary>
 /// Add a bitvector flag to a room.
 /// </summary>
 /// <param name="bvect"></param>
 public void AddFlag( Bitvector bvect )
 {
     Macros.SetBit( ref CurrentRoomFlags[ bvect.Group ], bvect.Vector );
     return;
 }
Ejemplo n.º 25
0
 /// <summary>
 /// Check whether an exit flag is set.  Currently only handles a single set
 /// of bitvectors, which is fine since we haven't filled it even halfway yet.
 /// </summary>
 /// <param name="bvect"></param>
 /// <returns></returns>
 public bool HasFlag(Bitvector bvect)
 {
     return HasFlag(bvect.Vector);
 }
Ejemplo n.º 26
0
 /// <summary>
 /// Remove a bitvector flag from a room.
 /// </summary>
 /// <param name="bvect"></param>
 public void RemoveFlag( Bitvector bvect )
 {
     Macros.RemoveBit( ref CurrentRoomFlags[ bvect.Group ], bvect.Vector );
     return;
 }
Ejemplo n.º 27
0
 /// <summary>
 /// Parameterized constructor.
 /// </summary>
 /// <param name="loc"></param>
 /// <param name="bit"></param>
 public WearInfo(ObjTemplate.WearLocation loc, Bitvector bit)
 {
     WornLocation = loc;
     WearBit = bit;
 }
Ejemplo n.º 28
0
 /// <summary>
 /// Checks whether the character has an action bit set.
 /// </summary>
 /// <param name="bvect"></param>
 /// <returns></returns>
 public bool HasActionBit(Bitvector bvect)
 {
     if( Macros.IsSet( ActionFlags[ bvect.Group ], bvect.Vector ) )
     {
         return true;
     }
     return false;
 }
Ejemplo n.º 29
0
 /// <summary>
 /// Checks whether an area has a specific flag set.
 /// </summary>
 /// <param name="bvect"></param>
 /// <returns></returns>
 public bool HasFlag(Bitvector bvect)
 {
     // Protect against index out of range exceptions.
     if (_areaFlags.Length <= bvect.Group)
         return false;
     if ((_areaFlags[bvect.Group] & bvect.Vector) != 0)
     {
         return true;
     }
     return false;
 }
Ejemplo n.º 30
0
        /// <summary>
        /// Immortal command to look up an object template.
        /// </summary>
        /// <param name="ch"></param>
        /// <param name="str"></param>
        public static void FindObject(CharData ch, string[] str)
        {
            if( ch == null ) return;

            ObjTemplate objTemplate;
            string text;
            int indexNumber, bottom, top;
            ObjTemplate.ObjectType type = 0;
            Bitvector bvect = new Bitvector();
            int total = 0;
            Affect.Apply stat = Affect.Apply.none;

            ch.GetChar();

            if (str.Length < 2)
            {
                ch.SendText("Syntax: find o world <object>\r\n");
                ch.SendText("or:     find o area  <object>\r\n");
                ch.SendText("or:     find o bitvector   <bitvector name>\r\n");
                ch.SendText("or:     find o type  <type number>\r\n");
                ch.SendText("or:     find o stat  <stat name> (optional: area)\r\n");
                return;
            }
            if (MUDString.StringsNotEqual(str[0], "world") && MUDString.StringsNotEqual(str[0], "area") &&
                MUDString.StringsNotEqual(str[0], "bitvector") && MUDString.StringsNotEqual(str[0], "type") &&
                    MUDString.StringsNotEqual(str[0], "stat"))
            {
            }

            if (String.IsNullOrEmpty(str[1]))
            {
                ch.SendText("Find what object?\r\n");
                return;
            }

            bool all = !MUDString.StringsNotEqual(str[1], "all");
            bool found = false;
            Area area = ch.InRoom.Area;
            bool bit = !MUDString.StringsNotEqual(str[0], "bit");
            bool fType = !MUDString.StringsNotEqual(str[0], "type");
            bool fArea = !MUDString.StringsNotEqual(str[0], "area");
            bool fArea2 = (str.Length > 2 && !MUDString.StringsNotEqual(str[2], "area"));
            if (fArea2)
            {
                fArea = true;
            }
            bool fStat = !MUDString.StringsNotEqual(str[0], "stat");

            if (fStat)
            {
                if (!MUDString.StringsNotEqual(str[1], "maxstr"))
                    stat = Affect.Apply.max_strength;
                else if (!MUDString.StringsNotEqual(str[1], "maxint"))
                    stat = Affect.Apply.max_intelligence;
                else if (!MUDString.StringsNotEqual(str[1], "maxwis"))
                    stat = Affect.Apply.max_wisdom;
                else if (!MUDString.StringsNotEqual(str[1], "maxdex"))
                    stat = Affect.Apply.max_dexterity;
                else if (!MUDString.StringsNotEqual(str[1], "maxagi"))
                    stat = Affect.Apply.max_agility;
                else if (!MUDString.StringsNotEqual(str[1], "maxcon"))
                    stat = Affect.Apply.max_constitution;
                else if (!MUDString.StringsNotEqual(str[1], "maxcha"))
                    stat = Affect.Apply.max_charisma;
                else if (!MUDString.StringsNotEqual(str[1], "maxpow"))
                    stat = Affect.Apply.max_power;
                else if (!MUDString.StringsNotEqual(str[1], "maxluck"))
                    stat = Affect.Apply.max_luck;
                else if (!MUDString.StringsNotEqual(str[1], "racestr"))
                    stat = Affect.Apply.race_strength;
                else if (!MUDString.StringsNotEqual(str[1], "raceint"))
                    stat = Affect.Apply.race_intelligence;
                else if (!MUDString.StringsNotEqual(str[1], "racewis"))
                    stat = Affect.Apply.race_wisdom;
                else if (!MUDString.StringsNotEqual(str[1], "racedex"))
                    stat = Affect.Apply.race_dexterity;
                else if (!MUDString.StringsNotEqual(str[1], "raceagi"))
                    stat = Affect.Apply.race_agility;
                else if (!MUDString.StringsNotEqual(str[1], "racecon"))
                    stat = Affect.Apply.race_constitution;
                else if (!MUDString.StringsNotEqual(str[1], "racecha"))
                    stat = Affect.Apply.race_charisma;
                else if (!MUDString.StringsNotEqual(str[1], "racepow"))
                    stat = Affect.Apply.race_power;
                else if (!MUDString.StringsNotEqual(str[1], "raceluck"))
                    stat = Affect.Apply.race_luck;
                else if (!MUDString.StringsNotEqual(str[1], "str"))
                    stat = Affect.Apply.strength;
                else if (!MUDString.StringsNotEqual(str[1], "int"))
                    stat = Affect.Apply.intelligence;
                else if (!MUDString.StringsNotEqual(str[1], "wis"))
                    stat = Affect.Apply.wisdom;
                else if (!MUDString.StringsNotEqual(str[1], "dex"))
                    stat = Affect.Apply.dexterity;
                else if (!MUDString.StringsNotEqual(str[1], "agi"))
                    stat = Affect.Apply.agility;
                else if (!MUDString.StringsNotEqual(str[1], "con"))
                    stat = Affect.Apply.constitution;
                else if (!MUDString.StringsNotEqual(str[1], "cha"))
                    stat = Affect.Apply.charisma;
                else if (!MUDString.StringsNotEqual(str[1], "pow"))
                    stat = Affect.Apply.power;
                else if (!MUDString.StringsNotEqual(str[1], "luck"))
                    stat = Affect.Apply.luck;
                else if (!MUDString.StringsNotEqual(str[1], "svpara"))
                    stat = Affect.Apply.save_paralysis;
                else if (!MUDString.StringsNotEqual(str[1], "svpoi"))
                    stat = Affect.Apply.save_poison;
                else if (!MUDString.StringsNotEqual(str[1], "svdis"))
                    stat = Affect.Apply.save_petrification;
                else if (!MUDString.StringsNotEqual(str[1], "svbreath"))
                    stat = Affect.Apply.save_breath;
                else if (!MUDString.StringsNotEqual(str[1], "svspell"))
                    stat = Affect.Apply.save_spell;
                else if (!MUDString.StringsNotEqual(str[1], "mana"))
                    stat = Affect.Apply.mana;
                else if (!MUDString.StringsNotEqual(str[1], "hitpoints"))
                    stat = Affect.Apply.hitpoints;
                else if (!MUDString.StringsNotEqual(str[1], "move"))
                    stat = Affect.Apply.move;
                else if (!MUDString.StringsNotEqual(str[1], "hitroll"))
                    stat = Affect.Apply.hitroll;
                else if (!MUDString.StringsNotEqual(str[1], "damroll"))
                    stat = Affect.Apply.damroll;
                else
                {
                    ch.SendText("Valid stats for a stat lookup are: str, int, wis, dex, agi, con, cha, pow, luck,\r\n" +
                                  "  maxstr, maxint, maxwis, maxdex, maxagi, maxcon, maxcha, maxpow, maxluck, svpara,\r\n" +
                                  "  svpoi, svdis, svbreath, svspell, mana, hitpoints, move, hitroll, damroll, bit.\r\n");
                    return;
                }
            }

            if (bit)
            {
                int count;
                for (count = 0; BitvectorFlagType.ItemFlags[count].BitvectorData; ++count)
                {
                    if (!MUDString.StringsNotEqual(str[1], BitvectorFlagType.ItemFlags[count].Name))
                    {
                        bvect = BitvectorFlagType.ItemFlags[count].BitvectorData;
                        break;
                    }
                }
                if (bvect == null)
                {
                    ch.SendText("No such item flag.\r\n");
                    return;
                }
            }

            if (fType)
            {
                try
                {
                    type = (ObjTemplate.ObjectType)Enum.Parse(typeof(ObjTemplate.ObjectType), str[2], false);
                    text = String.Format("Looking for object type {0}:\r\n", type);
                    ch.SendText(text);
                }
                catch (Exception)
                {
                    ch.SendText("Invalid object type.");
                    return;
                }
            }

            if (fArea)
            {
                bottom = area.LowObjIndexNumber;
                top = area.HighObjIndexNumber + 1;
            }
            else
            {
                bottom = 0;
                top = Database.HighestObjIndexNumber;
            }

            for (indexNumber = bottom; indexNumber < top; indexNumber++)
            {
                if (total > 5000)
                {
                    ch.SendText("Greater than 5000 items found.  List truncated.\r\n");
                    break;
                }

                if (!(objTemplate = Database.GetObjTemplate(indexNumber)))
                {
                    continue;
                }

                if (fArea && area != objTemplate.Area)
                {
                    continue;
                }

                if (bit)
                {
                    if (Macros.IsSet(objTemplate.ExtraFlags[bvect.Group], bvect.Vector))
                    {
                        found = true;
                        text = String.Format("[{0}]:{1} of {2}: {3} &n({4}&+yc&n)\r\n",
                                 MUDString.PadInt(objTemplate.IndexNumber, 5),
                                 MUDString.PadInt(objTemplate.QuantityLoaded, 5),
                                 MUDString.PadInt(objTemplate.MaxNumber, 5),
                                 objTemplate.ShortDescription.ToUpper(),
                                 objTemplate.Cost);
                        ch.SendText(text);
                        total++;
                    }
                }
                else if (fType)
                {
                    if (objTemplate.ItemType == type)
                    {
                        found = true;
                        text = String.Format("[{0}]:{1} of {2}: {3} &n({4}&+yc&n)\r\n",
                                 MUDString.PadInt(objTemplate.IndexNumber, 5),
                                 MUDString.PadInt(objTemplate.QuantityLoaded, 5),
                                 MUDString.PadInt(objTemplate.MaxNumber, 5),
                                 objTemplate.ShortDescription.ToUpper(),
                                 objTemplate.Cost);
                        ch.SendText(text);
                        total++;
                    }
                }
                else if (fStat)
                {
                    foreach (Affect affect in objTemplate.Affected)
                    {
                        foreach (AffectApplyType apply in affect.Modifiers)
                        {
                            if (apply.Location == stat)
                            {
                                found = true;
                                text = String.Format("[{0}] {1}&n (modifier {2})\r\n",
                                    MUDString.PadInt(objTemplate.IndexNumber, 5),
                                    objTemplate.ShortDescription.ToUpper(),
                                    apply.Amount);
                                ch.SendText(text);
                                total++;
                                break;
                            }
                        }
                    }
                }
                else
                {
                    if (all || MUDString.NameContainedIn(str[1], objTemplate.Name))
                    {
                        found = true;
                        text = String.Format("[{0}]:{1} of {2}: {3} &n({4}&+yc&n)\r\n",
                                 MUDString.PadInt(objTemplate.IndexNumber, 5),
                                 MUDString.PadInt(objTemplate.QuantityLoaded, 5),
                                 MUDString.PadInt(objTemplate.MaxNumber, 5),
                                 objTemplate.ShortDescription.ToUpper(),
                                 objTemplate.Cost);
                        ch.SendText(text);
                        total++;
                    }
                }
            }

            if (!found)
            {
                ch.SendText("Nothing like that in this universe.\r\n");
                return;
            }

            return;
        }
Ejemplo n.º 31
0
        public bool HasInnate( Bitvector bit )
        {
            int race = GetRace();

            if( Macros.IsSet( Race.RaceList[ race ].InnateAbilities[ bit.Group ], bit.Vector ) )
            {
                return true;
            }

            return false;
        }
Ejemplo n.º 32
0
 /// <summary>
 /// Sets an action flag on this mobile type.
 /// </summary>
 /// <param name="bvect"></param>
 public void SetActBit(Bitvector bvect)
 {
     _actionFlags[bvect.Group] |= bvect.Vector;
     return;
 }
Ejemplo n.º 33
0
 /// <summary>
 /// Check whether a character is affected by a particular affect vector.
 /// </summary>
 /// <param name="bvect"></param>
 /// <returns></returns>
 public bool IsAffected(Bitvector bvect)
 {
     if (Macros.IsSet(AffectedBy[bvect.Group], bvect.Vector))
     {
         return true;
     }
     foreach (Affect affect in Affected)
     {
         if (affect.HasBitvector(bvect))
         {
             return true;
         }
     }
     return false;
 }
Ejemplo n.º 34
0
 /// <summary>
 /// Toggles an action bit for this mobile type.
 /// </summary>
 /// <param name="bvect"></param>
 public void ToggleActBit(Bitvector bvect)
 {
     _actionFlags[bvect.Group] ^= bvect.Vector;
     return;
 }
Ejemplo n.º 35
0
 /// <summary>
 /// Removes an action bit from the character.
 /// </summary>
 /// <param name="bvect"></param>
 public void RemoveActionBit(Bitvector bvect)
 {
     ActionFlags[bvect.Group] &= ~(bvect.Vector);
     return;
 }
Ejemplo n.º 36
0
        /// <summary>
        /// Gets a bitvector's string values.
        /// </summary>
        /// <param name="bvect"></param>
        /// <param name="flags"></param>
        /// <returns></returns>
        public static string BitvectorString( ref Bitvector bvect, BitvectorFlagType[] flags )
        {
            int i;

            for( i = 0; flags[ i ].BitvectorData.Vector > 0; i++ )
            {
                if( flags[ i ].BitvectorData.Group == bvect.Group && flags[ i ].BitvectorData.Vector == bvect.Vector )
                    return flags[ i ].Name;
            }
            return null;
        }
Ejemplo n.º 37
0
 /// <summary>
 /// Utility function to remove all affects from a char based on type.
 /// </summary>
 /// <param name="bvect"></param>
 public void RemoveAffect( Bitvector bvect )
 {
     for (int i = (Affected.Count - 1); i >= 0; i--)
     {
         if( Affected[i].HasBitvector( bvect ) )
         {
             RemoveAffect( Affected[i] );
         }
     }
     RemoveAffectBit(bvect);
 }
Ejemplo n.º 38
0
 /// <summary>
 /// Sets an action bit on the character.
 /// </summary>
 /// <param name="bvect"></param>
 public void SetActionBit(Bitvector bvect)
 {
     ActionFlags[bvect.Group] |= bvect.Vector;
     return;
 }
Ejemplo n.º 39
0
 /// <summary>
 /// Sets an affect bit on the character.
 /// </summary>
 /// <param name="bvect"></param>
 public void SetAffectBit(Bitvector bvect)
 {
     AffectedBy[ bvect.Group ] |= bvect.Vector;
     return;
 }
Ejemplo n.º 40
0
        /// <summary>
        /// Constructor that takes a spell argument to create an affect and set its paramters.
        /// </summary>
        /// <param name="type"></param>
        /// <param name="name"></param>
        /// <param name="duration"></param>
        /// <param name="location"></param>
        /// <param name="modifier"></param>
        /// <param name="bitvector"></param>
        public Affect(AffectType type, string name, int duration, Apply location, int modifier, Bitvector bitvector)
        {
            _modifiers = new List <AffectApplyType>();
            _value     = name;
            _type      = type;
            _duration  = duration;
            AffectApplyType apply = new AffectApplyType();

            apply.Amount   = modifier;
            apply.Location = location;
            _modifiers.Add(apply);
            SetBitvector(bitvector);
        }
Ejemplo n.º 41
0
        /// <summary>
        /// Sets which bitvector is active on an affect. Only allows one bitvector
        /// per affect data and sets everything else to 0.
        /// </summary>
        /// <param name="bvect"></param>
        public void SetBitvector( Bitvector bvect )
        {
            int count;
            for( count = 0; count < Limits.NUM_AFFECT_VECTORS; ++count )
            {
                if( count == bvect.Group )
                {
                    _bitVectors[ count ] = bvect.Vector;
                }
                else
                {
                    _bitVectors[ count ] = 0;
                }
            }

            return;
        }