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