Exemple #1
0
        /** Spawns a specific monster to this area (along with companions) and returns the "main" instance created. */
        private MDRMonsterInstance spawnMonster(MDRMonster selectedMonster)
        {
            if (selectedMonster == null)
            {
                return(null);
            }

            if (selectedMonster.SpawnCount == 0)
            {
                return(null);
            }

            var mainInstance = placeMonster(selectedMonster);

            // Add additional monster instances.
            for (int lp = 1; lp < selectedMonster.SpawnCount; lp++)
            {
                placeMonster(selectedMonster);
            }

            // Add companions.
            if (selectedMonster.Companion != null)
            {
                for (int lp = 0; lp < selectedMonster.Companion.SpawnCount; lp++)
                {
                    placeMonster(selectedMonster.Companion);
                }
            }

            return(mainInstance);
        }
Exemple #2
0
        /**
         * Create a new monster instance of given type.
         *
         * @param monsterType The type of monster to spawn.
         *
         */
        public static MDRMonsterInstance Create(MDRMonster monsterType)
        {
            var result = new MDRMonsterInstance();

            result.MonsterType = monsterType;
            return(result);
        }
Exemple #3
0
 /** Causes party to receive given loot.  Loot will be distributed randomly amoung party memembers */
 public void ReceiveLoot(MDRItem[] itemList, MDRMonster sourceMonster = null)
 {
     if (itemList == null)
     {
         return;
     }
     foreach (MDRItem item in itemList)
     {
         ReceiveLoot(item, sourceMonster);
     }
 }
Exemple #4
0
        public override void ReadNode(XElement node)
        {
            base.ReadNode(node);

            int lairedMonsterId = ReadInt(node, "LairedMonster", 0);

            if (lairedMonsterId > 0)
            {
                LairedMonster = CoM.Monsters.ByID(lairedMonsterId);
            }

            SpawnMask.Mask = ReadBitArray(node, "SpawnMask");

            Origion = new MDRLocation(ReadAttributeInt(node, "LocationX"), ReadAttributeInt(node, "LocationY"), ReadAttributeInt(node, "Floor"));
        }
Exemple #5
0
        public MDRItemInstance ReceiveLoot(MDRItem item, MDRMonster sourceMonster, ref MDRCharacter giveToCharacter)
        {
            var instance = MDRItemInstance.Create(item, IdentificationLevel.Auto);

            giveToCharacter = giveToCharacter ?? RandomMember();

            giveToCharacter.GiveItem(instance);

            if (sourceMonster != null)
            {
                CoM.GameStats.RegisterItemFound(giveToCharacter, instance, sourceMonster);
            }

            return(instance);
        }
Exemple #6
0
        //--------------------------------------------------------------------------------------------------------
        // Private
        //--------------------------------------------------------------------------------------------------------

        /**
         * Places a new instance of specific monster at a random location in this area. Will return with null if no
         * spaces are avalaible in this area.
         */
        private MDRMonsterInstance placeMonster(MDRMonster monster)
        {
            if (monster == null)
            {
                return(null);
            }

            var location = getNextEmptyTile();

            if (location.Floor == -1)
            {
                return(null);
            }

            var instance = MDRMonsterInstance.Create(monster);

            CoM.State.AddMonster(instance, this, location);
            return(instance);
        }
Exemple #7
0
        /**
         * Gives a new item to party.
         *
         * @sourceMonster The monster that dropped this item.
         * @giveToCharacter The character that should receive the item, if null a random character will be selected.
         *
         * @returns the item instance created.
         *
         */
        public MDRItemInstance ReceiveLoot(MDRItem item, MDRMonster sourceMonster = null)
        {
            MDRCharacter characterReceiving = null;

            return(ReceiveLoot(item, sourceMonster, ref characterReceiving));
        }