Example #1
0
        public FieldMob(MobTemplate template)
        {
            Template = template;

            HP = template.MaxHP;
            MP = template.MaxMP;
        }
Example #2
0
 public FieldMob(MobTemplate template, bool left = true)
 {
     Template   = template;
     MoveAction = (byte)(
         Convert.ToByte(left) & 1 |
         2 * (byte)(Template.MoveAbility switch {
         MoveAbilityType.Fly => MoveActionType.Fly,
         MoveAbilityType.Stop => MoveActionType.Stand,
         _ => MoveActionType.Move,
     }
Example #3
0
 private void UpdateWindowContents(MobTemplate mob)
 {
     txtAlignment.Text        = mob.Alignment.ToString();
     txtDescription.Text      = mob.Description;
     txtFullDescription.Text  = mob.FullDescription;
     txtKeywords.Text         = mob.PlayerName;
     txtLevel.Text            = mob.Level.ToString();
     txtShortDescription.Text = mob.ShortDescription;
     txtIndexNumber.Text      = mob.IndexNumber.ToString();
     cbSex.SelectedIndex      = (int)mob.Gender;
     //cbPosition.Text = StringConversion.position_string(mob._position);
     cbPosition.SelectedItem = Position.PositionString(mob.DefaultPosition);
     //cbClass.Text = mob._characterClass._name;
     cbClass.SelectedItem = CharClass.ClassList[(int)mob.CharacterClass.ClassNumber].Name;
     //cbRace.Text = Race.RaceList[mob._race]._name;
     cbRace.SelectedItem   = Race.RaceList[mob.Race].Name;
     txtActFlags.Text      = mob.ActionFlags[0].ToString();
     txtActFlags2.Text     = mob.ActionFlags[1].ToString();
     txtAffectFlags1.Text  = mob.AffectedBy[0].ToString();
     txtAffectFlags2.Text  = mob.AffectedBy[1].ToString();
     txtAffectFlags3.Text  = mob.AffectedBy[2].ToString();
     txtAffectFlags4.Text  = mob.AffectedBy[3].ToString();
     txtAffectFlags5.Text  = mob.AffectedBy[4].ToString();
     btnEditShop.ForeColor = System.Drawing.Color.Gray;
     foreach (Shop shop in _area.Shops)
     {
         if (mob.IndexNumber == shop.Keeper)
         {
             btnEditShop.ForeColor = System.Drawing.Color.Black;
             break;
         }
     }
     btnEditQuests.ForeColor = System.Drawing.Color.Gray;
     foreach (QuestTemplate qst in _area.Quests)
     {
         if (mob.IndexNumber == qst.IndexNumber)
         {
             btnEditQuests.ForeColor = System.Drawing.Color.Black;
             break;
         }
     }
     if (mob.SpecFun.Count > 0)
     {
         btnEditSpecials.ForeColor = System.Drawing.Color.Black;
     }
     else
     {
         btnEditSpecials.ForeColor = System.Drawing.Color.Gray;
     }
 }
Example #4
0
        protected override Dictionary <string, string> ResolveCore(MobTemplate source)
        {
            var items = new Dictionary <string, string>();

            foreach (var key in source.Inventory)
            {
                var item      = Server.Current.Database.Get <Template>(key);
                var dupedItem = Mapper.Map <PlayerItem>(item);
                Server.Current.Database.Save(dupedItem);
                items[dupedItem.Key] = dupedItem.Name;
            }

            return(items);
        }
Example #5
0
        public override void Execute(Session session, CommandContext context)
        {
            if (string.IsNullOrEmpty(context.ArgumentString))
            {
                PrintSyntax(session);
                return;
            }

            var template = Server.Current.Database.Get <MobTemplate>(context.Arguments[0].ToLower());

            if (template != null)
            {
                session.WriteLine("{0} already exists...", context.Arguments[0]);
            }

            template = new MobTemplate()
            {
                Aggro        = false,
                AllowedRooms = new List <string>()
                {
                    session.Player.Location
                },
                BaseArmor           = 0,
                BaseCharisma        = 0,
                BaseConstitution    = 0,
                BaseDamRoll         = 1,
                BaseDexterity       = 0,
                BaseHitRoll         = 1,
                BaseHp              = 10,
                BaseIntelligence    = 0,
                BaseLuck            = 0,
                BaseStrength        = 0,
                BaseWisdom          = 0,
                Description         = "fix this description",
                HitPoints           = 10,
                IsShopkeeper        = false,
                Location            = session.Player.Location,
                MinimumTalkInterval = 0,
                Name        = context.Arguments[0],
                RespawnRoom = new string[] { },
                Status      = GameStatus.Standing,
            };

            Server.Current.Database.Save(template);

            session.WriteLine("Mob template saved. Please modify stats on disk");
        }
Example #6
0
        private void btnNew_Click(object sender, EventArgs e)
        {
            ApplyWindowContents();
            MobTemplate mob = new MobTemplate();

            if (_area.HighMobIndexNumber >= 0)
            {
                mob.IndexNumber = _area.HighMobIndexNumber + 1;
            }
            _area.Mobs.Add(mob);
            _area.RebuildIndexes();
            UpdateMobList();
            SetControlAvailability();
            mobList.SelectedIndex = mobList.Items.Count - 1;
            UpdateWindowContents(mob);
            _parent.UpdateStatusBar();
        }
Example #7
0
        protected override Dictionary <Wearlocation, WearSlot> ResolveCore(MobTemplate source)
        {
            var items = new Dictionary <Wearlocation, WearSlot>();

            foreach (var item in source.Equipped)
            {
                var template  = Server.Current.Database.Get <Template>(item.Value);
                var dupedItem = Mapper.Map <PlayerItem>(template);
                Server.Current.Database.Save(dupedItem);
                items[item.Key] = new WearSlot()
                {
                    Key  = dupedItem.Key,
                    Name = dupedItem.Name,
                };
            }

            return(items);
        }
Example #8
0
        private void btnClone_Click(object sender, EventArgs e)
        {
            if (mobList.SelectedIndex == -1 || mobList.SelectedIndex > (mobList.Items.Count - 1))
            {
                MessageBox.Show("Cannot clone a mob without a valid mob selected.");
                return;
            }
            ApplyWindowContents();
            MobTemplate mob = new MobTemplate(_area.Mobs[mobList.SelectedIndex]);

            if (_area.HighMobIndexNumber >= 0)
            {
                mob.IndexNumber = _area.HighMobIndexNumber + 1;
            }
            _area.Mobs.Add(mob);
            _area.RebuildIndexes();
            UpdateMobList();
            SetControlAvailability();
            mobList.SelectedIndex = mobList.Items.Count - 1;
            UpdateWindowContents(mob);
            _parent.UpdateStatusBar();
        }
Example #9
0
 /// <summary>
 /// Parameterized constructor.
 /// </summary>
 /// <param name="specname"></param>
 /// <param name="specfun"></param>
 public MobSpecial( string specname, MobTemplate.MobFun specfun )
 {
     _specName = specname;
     _specFunction = specfun;
 }
 public FieldMobNormalGenerator(
     FieldLifeTemplate lifeTemplate,
     MobTemplate mobTemplate
     ) : base(lifeTemplate, mobTemplate)
 {
 }
Example #11
0
 private void btnNew_Click(object sender, EventArgs e)
 {
     ApplyWindowContents();
     MobTemplate mob = new MobTemplate();
     if( _area.HighMobIndexNumber >= 0 )
     {
         mob.IndexNumber = _area.HighMobIndexNumber + 1;
     }
     _area.Mobs.Add( mob );
     _area.RebuildIndexes();
     UpdateMobList();
     SetControlAvailability();
     mobList.SelectedIndex = mobList.Items.Count - 1;
     UpdateWindowContents(mob);
     _parent.UpdateStatusBar();
 }
Example #12
0
 public void HandleMobTemplateUpdate(Dictionary<string, object> props)
 {
     mobTemplates.Clear ();
     int numTemplates = (int)props ["numTemplates"];
     for (int i = 0; i < numTemplates; i++) {
         MobTemplate template = new MobTemplate ();
         template.name = (string)props ["mob_" + i + "Name"];
         template.ID = (int)props ["mob_" + i + "ID"];
         template.subtitle = (string)props ["mob_" + i + "SubTitle"];
         template.species = (string)props ["mob_" + i + "Species"];
         template.subspecies = (string)props ["mob_" + i + "Subspecies"];
         template.level = (int)props ["mob_" + i + "Level"];
         template.attackable = (bool)props ["mob_" + i + "Attackable"];
         template.faction = (int)props ["mob_" + i + "Faction"];
         template.mobType = (int)props ["mob_" + i + "MobType"];
         //template.gender = (string)props["mob_" + i + "Gender"];
         template.scale = (float)props ["mob_" + i + "Scale"];
         List<string> displays = new List<string> ();
         int numDisplays = (int)props ["mob_" + i + "NumDisplays"];
         for (int j = 0; j < numDisplays; j++) {
             string display = (string)props ["mob_" + i + "Display" + j];
             displays.Add (display);
         }
         template.displays = displays;
         /*for itemID in props["mob_%dEquipment" % i]:
             template.equippedItems.append(GetItemTemplateByID(itemID))
         numLootTables = int(props["mob_%dNumLootTables" % i])
         for j in range(0, numLootTables):
             lootTableID = int(props["mob_%dLootTable%d" % (i, j)])
             lootTableChance = int(props["mob_%dLootTable%dChance" % (i, j)])
             lootTable = LootTableDropEntry()
             lootTable.itemID = lootTableID
             lootTable.dropChance = lootTableChance
             template.lootTables.append(lootTable)
             //ClientAPI.Write("Loot table %s for mob %s has chance: %s" % (lootTableID, template.name, lootTableChance))*/
         mobTemplates.Add (template);
     }
     ClientAPI.Write ("Number of mob templates added: " + mobTemplates.Count);
     //mobCreationState = MobCreationState.SelectTemplate;
     //selectedTemplate = -1;
 }
Example #13
0
        /// <summary>
        /// Create an instance of a mobile from the provided template.
        /// </summary>
        /// <param name="mobTemplate"></param>
        /// <returns></returns>
        public static CharData CreateMobile(MobTemplate mobTemplate)
        {
            int count;

            if (!mobTemplate)
            {
                Log.Error("CreateMobile: null MobTemplate.", 0);
                throw new NullReferenceException();
            }

            CharData mob = new CharData();

            mob.MobileTemplate       = mobTemplate;
            mob.Followers            = null;
            mob.Name                 = mobTemplate.PlayerName;
            mob.ShortDescription     = mobTemplate.ShortDescription;
            mob.FullDescription      = mobTemplate.FullDescription;
            mob.Description          = mobTemplate.Description;
            mob.SpecialFunction      = mobTemplate.SpecFun;
            mob.SpecialFunctionNames = mobTemplate.SpecFunNames;
            mob.CharacterClass       = mobTemplate.CharacterClass;
            mob.Level                = MUDMath.FuzzyNumber(mobTemplate.Level);
            mob.ActionFlags          = mobTemplate.ActionFlags;
            mob.CurrentPosition      = mobTemplate.DefaultPosition;
            mob.ChatterBotName       = mobTemplate.ChatterBotName;
            // TODO: Look up the chatter bot name and load a runtime bot into the variable.
            mob.ChatBot = null;
            for (count = 0; count < Limits.NUM_AFFECT_VECTORS; ++count)
            {
                mob.AffectedBy[count] = mobTemplate.AffectedBy[count];
            }
            mob.Alignment = mobTemplate.Alignment;
            mob.Gender    = mobTemplate.Gender;
            mob.SetPermRace(mobTemplate.Race);
            mob.CurrentSize = Race.RaceList[mob.GetRace()].DefaultSize;
            if (mob.HasActionBit(MobTemplate.ACT_SIZEMINUS))
            {
                mob.CurrentSize--;
            }
            if (mob.HasActionBit(MobTemplate.ACT_SIZEPLUS))
            {
                mob.CurrentSize++;
            }

            mob.CastingSpell         = 0;
            mob.CastingTime          = 0;
            mob.PermStrength         = MUDMath.Dice(2, 46) + 8;
            mob.PermIntelligence     = MUDMath.Dice(2, 46) + 8;
            mob.PermWisdom           = MUDMath.Dice(2, 46) + 8;
            mob.PermDexterity        = MUDMath.Dice(2, 46) + 8;
            mob.PermConstitution     = MUDMath.Dice(2, 46) + 7;
            mob.PermAgility          = MUDMath.Dice(2, 46) + 8;
            mob.PermCharisma         = MUDMath.Dice(2, 46) + 8;
            mob.PermPower            = MUDMath.Dice(2, 46) + 8;
            mob.PermLuck             = MUDMath.Dice(2, 46) + 8;
            mob.ModifiedStrength     = 0;
            mob.ModifiedIntelligence = 0;
            mob.ModifiedWisdom       = 0;
            mob.ModifiedDexterity    = 0;
            mob.ModifiedConstitution = 0;
            mob.ModifiedAgility      = 0;
            mob.ModifiedCharisma     = 0;
            mob.ModifiedPower        = 0;
            mob.ModifiedLuck         = 0;
            mob.Resistant            = mobTemplate.Resistant;
            mob.Immune      = mobTemplate.Immune;
            mob.Susceptible = mobTemplate.Susceptible;
            mob.Vulnerable  = mobTemplate.Vulnerable;
            mob.MaxMana     = mob.Level * 10;
            if (Race.RaceList[mobTemplate.Race].Coins)
            {
                int level = mobTemplate.Level;
                mob.ReceiveCopper(MUDMath.Dice(12, level) / 32);
                mob.ReceiveSilver(MUDMath.Dice(9, level) / 32);
                mob.ReceiveGold(MUDMath.Dice(5, level) / 32);
                mob.ReceivePlatinum(MUDMath.Dice(2, level) / 32);
            }
            else
            {
                mob.SetCoins(0, 0, 0, 0);
            }
            mob.ArmorPoints = MUDMath.Interpolate(mob.Level, 100, -100);

            // * MOB HITPOINTS *
            //
            // Was level d 8, upped it to level d 13
            // considering mobs *still* won't have as many hitpoints as some players until
            // at least level 10, this shouldn't be too big an upgrade.
            //
            // Mob hitpoints are not based on constitution *unless* they have a
            // constitution modifier from an item, spell, or other affect

            // In light of recent player dissatisfaction with the
            // mob hitpoints, I'm implementing a log curve, using
            //  hp = exp( 2.15135 + level*0.151231)
            // This will will result in the following hp matrix:
            //     Level    Hitpoints
            //      20        175
            //      30        803
            //      40        3643
            //      50        16528
            //      55        35207
            //      60        75000
            mob.MaxHitpoints = MUDMath.Dice(mob.Level, 13) + 1;
            // Mob hps are non-linear above level 10.
            if (mob.Level > 20)
            {
                int upper = (int)Math.Exp(1.85 + mob.Level * 0.151231);
                int lower = (int)Math.Exp(1.80 + mob.Level * 0.151231);
                mob.MaxHitpoints += MUDMath.NumberRange(lower, upper);
            }
            else if (mob.Level > 10)
            {
                mob.MaxHitpoints += MUDMath.NumberRange(mob.Level * 2, ((mob.Level - 8) ^ 2 * mob.Level) / 2);
            }

            // Demons/devils/dragons gain an extra 30 hitpoints per level (+1500 at lvl 50).
            if (mob.GetRace() == Race.RACE_DEMON || mob.GetRace() == Race.RACE_DEVIL || mob.GetRace() == Race.RACE_DRAGON)
            {
                mob.MaxHitpoints += (mob.Level * 30);
            }

            mob.Hitpoints = mob.GetMaxHit();

            // Horses get more moves, necessary for mounts.
            if (Race.RaceList[mob.GetRace()].Name.Equals("Horse", StringComparison.CurrentCultureIgnoreCase))
            {
                mob.MaxMoves     = 290 + MUDMath.Dice(4, 5);
                mob.CurrentMoves = mob.MaxMoves;
            }
            mob.LoadRoomIndexNumber = 0;

            // Insert in list.
            CharList.Add(mob);
            // Increment count of in-game instances of mob.
            mobTemplate.NumActive++;
            return(mob);
        }
Example #14
0
 public MobGenerator(MobTemplate _mobTemplate)
 {
     mobTemplate = _mobTemplate;
 }
Example #15
0
 public AbstractFieldMobGenerator(FieldLifeTemplate lifeTemplate, MobTemplate mobTemplate)
 {
     LifeTemplate = lifeTemplate;
     MobTemplate  = mobTemplate;
 }
Example #16
0
 private void UpdateWindowContents(MobTemplate mob)
 {
     txtAlignment.Text = mob.Alignment.ToString();
     txtDescription.Text = mob.Description;
     txtFullDescription.Text = mob.FullDescription;
     txtKeywords.Text = mob.PlayerName;
     txtLevel.Text = mob.Level.ToString();
     txtShortDescription.Text = mob.ShortDescription;
     txtIndexNumber.Text = mob.IndexNumber.ToString();
     cbSex.SelectedIndex = (int)mob.Gender;
     //cbPosition.Text = StringConversion.position_string(mob._position);
     cbPosition.SelectedItem = Position.PositionString( mob.DefaultPosition );
     //cbClass.Text = mob._characterClass._name;
     cbClass.SelectedItem = CharClass.ClassList[(int)mob.CharacterClass.ClassNumber].Name;
     //cbRace.Text = Race.RaceList[mob._race]._name;
     cbRace.SelectedItem = Race.RaceList[ mob.Race ].Name;
     txtActFlags.Text = mob.ActionFlags[0].ToString();
     txtActFlags2.Text = mob.ActionFlags[1].ToString();
     txtAffectFlags1.Text = mob.AffectedBy[0].ToString();
     txtAffectFlags2.Text = mob.AffectedBy[1].ToString();
     txtAffectFlags3.Text = mob.AffectedBy[2].ToString();
     txtAffectFlags4.Text = mob.AffectedBy[3].ToString();
     txtAffectFlags5.Text = mob.AffectedBy[4].ToString();
     btnEditShop.ForeColor = System.Drawing.Color.Gray;
     foreach (Shop shop in _area.Shops)
     {
         if (mob.IndexNumber == shop.Keeper)
         {
             btnEditShop.ForeColor = System.Drawing.Color.Black;
             break;
         }
     }
     btnEditQuests.ForeColor = System.Drawing.Color.Gray;
     foreach (QuestTemplate qst in _area.Quests)
     {
         if (mob.IndexNumber == qst.IndexNumber)
         {
             btnEditQuests.ForeColor = System.Drawing.Color.Black;
             break;
         }
     }
     if (mob.SpecFun.Count > 0)
     {
         btnEditSpecials.ForeColor = System.Drawing.Color.Black;
     }
     else
     {
         btnEditSpecials.ForeColor = System.Drawing.Color.Gray;
     }
 }
Example #17
0
 public MobFieldGenerator(FieldLifeTemplate lifeTemplate, MobTemplate mobTemplate)
 {
     _lifeTemplate = lifeTemplate;
     _mobTemplate  = mobTemplate;
 }
Example #18
0
        /// <summary>
        /// Create an instance of a mobile from the provided template.
        /// </summary>
        /// <param name="mobTemplate"></param>
        /// <returns></returns>
        public static CharData CreateMobile( MobTemplate mobTemplate )
        {
            int count;

            if( !mobTemplate )
            {
                Log.Error("CreateMobile: null MobTemplate.", 0);
                throw new NullReferenceException();
            }

            CharData mob = new CharData();

            mob.MobileTemplate = mobTemplate;
            mob.Followers = null;
            mob.Name = mobTemplate.PlayerName;
            mob.ShortDescription = mobTemplate.ShortDescription;
            mob.FullDescription = mobTemplate.FullDescription;
            mob.Description = mobTemplate.Description;
            mob.SpecialFunction = mobTemplate.SpecFun;
            mob.SpecialFunctionNames = mobTemplate.SpecFunNames;
            mob.CharacterClass = mobTemplate.CharacterClass;
            mob.Level = MUDMath.FuzzyNumber( mobTemplate.Level );
            mob.ActionFlags = mobTemplate.ActionFlags;
            mob.CurrentPosition = mobTemplate.DefaultPosition;
            mob.ChatterBotName = mobTemplate.ChatterBotName;
            // TODO: Look up the chatter bot name and load a runtime bot into the variable.
            mob.ChatBot = null;
            for( count = 0; count < Limits.NUM_AFFECT_VECTORS; ++count )
            {
                mob.AffectedBy[ count ] = mobTemplate.AffectedBy[ count ];
            }
            mob.Alignment = mobTemplate.Alignment;
            mob.Gender = mobTemplate.Gender;
            mob.SetPermRace( mobTemplate.Race );
            mob.CurrentSize = Race.RaceList[ mob.GetRace() ].DefaultSize;
            if (mob.HasActionBit(MobTemplate.ACT_SIZEMINUS))
                mob.CurrentSize--;
            if (mob.HasActionBit(MobTemplate.ACT_SIZEPLUS))
                mob.CurrentSize++;

            mob.CastingSpell = 0;
            mob.CastingTime = 0;
            mob.PermStrength = MUDMath.Dice( 2, 46 ) + 8;
            mob.PermIntelligence = MUDMath.Dice( 2, 46 ) + 8;
            mob.PermWisdom = MUDMath.Dice( 2, 46 ) + 8;
            mob.PermDexterity = MUDMath.Dice( 2, 46 ) + 8;
            mob.PermConstitution = MUDMath.Dice( 2, 46 ) + 7;
            mob.PermAgility = MUDMath.Dice( 2, 46 ) + 8;
            mob.PermCharisma = MUDMath.Dice( 2, 46 ) + 8;
            mob.PermPower = MUDMath.Dice( 2, 46 ) + 8;
            mob.PermLuck = MUDMath.Dice( 2, 46 ) + 8;
            mob.ModifiedStrength = 0;
            mob.ModifiedIntelligence = 0;
            mob.ModifiedWisdom = 0;
            mob.ModifiedDexterity = 0;
            mob.ModifiedConstitution = 0;
            mob.ModifiedAgility = 0;
            mob.ModifiedCharisma = 0;
            mob.ModifiedPower = 0;
            mob.ModifiedLuck = 0;
            mob.Resistant = mobTemplate.Resistant;
            mob.Immune = mobTemplate.Immune;
            mob.Susceptible = mobTemplate.Susceptible;
            mob.Vulnerable = mobTemplate.Vulnerable;
            mob.MaxMana = mob.Level * 10;
            if( Race.RaceList[mobTemplate.Race].Coins )
            {
                int level = mobTemplate.Level;
                mob.ReceiveCopper( MUDMath.Dice( 12, level ) / 32 );
                mob.ReceiveSilver( MUDMath.Dice( 9, level ) / 32 );
                mob.ReceiveGold( MUDMath.Dice( 5, level ) / 32 );
                mob.ReceivePlatinum( MUDMath.Dice( 2, level ) / 32 );
            }
            else
            {
                mob.SetCoins( 0, 0, 0, 0 );
            }
            mob.ArmorPoints = MUDMath.Interpolate( mob.Level, 100, -100 );

            // * MOB HITPOINTS *
            //
            // Was level d 8, upped it to level d 13
            // considering mobs *still* won't have as many hitpoints as some players until
            // at least level 10, this shouldn't be too big an upgrade.
            //
            // Mob hitpoints are not based on constitution *unless* they have a
            // constitution modifier from an item, spell, or other affect

            // In light of recent player dissatisfaction with the
            // mob hitpoints, I'm implementing a log curve, using
            //  hp = exp( 2.15135 + level*0.151231)
            // This will will result in the following hp matrix:
            //     Level    Hitpoints
            //      20        175
            //      30        803
            //      40        3643
            //      50        16528
            //      55        35207
            //      60        75000
            mob.MaxHitpoints = MUDMath.Dice( mob.Level, 13 ) + 1;
            // Mob hps are non-linear above level 10.
            if( mob.Level > 20 )
            {
                int upper = (int)Math.Exp( 1.85 + mob.Level * 0.151231 );
                int lower = (int)Math.Exp( 1.80 + mob.Level * 0.151231 );
                mob.MaxHitpoints += MUDMath.NumberRange( lower, upper );
            }
            else if (mob.Level > 10)
            {
                mob.MaxHitpoints += MUDMath.NumberRange(mob.Level * 2, ((mob.Level - 8) ^ 2 * mob.Level) / 2);
            }

            // Demons/devils/dragons gain an extra 30 hitpoints per level (+1500 at lvl 50).
            if (mob.GetRace() == Race.RACE_DEMON || mob.GetRace() == Race.RACE_DEVIL || mob.GetRace() == Race.RACE_DRAGON)
            {
                mob.MaxHitpoints += (mob.Level * 30);
            }

            mob.Hitpoints = mob.GetMaxHit();

            // Horses get more moves, necessary for mounts.
            if(Race.RaceList[ mob.GetRace() ].Name.Equals( "Horse", StringComparison.CurrentCultureIgnoreCase ))
            {
                mob.MaxMoves = 290 + MUDMath.Dice( 4, 5 );
                mob.CurrentMoves = mob.MaxMoves;
            }
            mob.LoadRoomIndexNumber = 0;

            // Insert in list.
            CharList.Add( mob );
            // Increment count of in-game instances of mob.
            mobTemplate.NumActive++;
            return mob;
        }
Example #19
0
 public MobTemplate(MobTemplate tmpl)
 {
     ID = tmpl.ID;
     name = tmpl.name;
     subtitle = tmpl.subtitle;
     species = tmpl.species;
     subspecies = tmpl.subspecies;
     displayType = tmpl.displayType;
     gender = tmpl.gender;
     displays = tmpl.displays;
     scale = tmpl.scale;
     level = tmpl.level;
     attackable = tmpl.attackable;
     mobType = tmpl.mobType;
     faction = tmpl.faction;
 }
Example #20
0
 private void btnClone_Click(object sender, EventArgs e)
 {
     if (mobList.SelectedIndex == -1 || mobList.SelectedIndex > (mobList.Items.Count - 1))
     {
         MessageBox.Show("Cannot clone a mob without a valid mob selected.");
         return;
     }
     ApplyWindowContents();
     MobTemplate mob = new MobTemplate(_area.Mobs[mobList.SelectedIndex]);
     if (_area.HighMobIndexNumber >= 0)
     {
         mob.IndexNumber = _area.HighMobIndexNumber + 1;
     }
     _area.Mobs.Add(mob);
     _area.RebuildIndexes();
     UpdateMobList();
     SetControlAvailability();
     mobList.SelectedIndex = mobList.Items.Count - 1;
     UpdateWindowContents(mob);
     _parent.UpdateStatusBar();
 }