/// <summary> /// Spawns mob in place. /// </summary> /// <param name="place"></param> /// <param name="name"></param> /// <param name="group"></param> /// <param name="spawnPosition"></param> public void AllocateAndSpawnMob(PuzzlePlace place, string name, DungeonMonsterGroupData group, Placement spawnPosition) { var mob = new MonsterGroup(name, this, place, spawnPosition); _monsterGroups.Add(name, mob); mob.Allocate(group); mob.Spawn(); }
/// <summary> /// Creates mob in puzzle, in place. /// </summary> /// <param name="mobGroupName">Name of the mob, for reference.</param> /// <param name="raceId">Race to spawn.</param> /// <param name="amount">Number of monsters to spawn.</param> /// <param name="placement"></param> public void SpawnSingleMob(string mobGroupName, int raceId, int amount, Placement placement = Placement.Random) { if (amount < 1) { amount = 1; } var group = new DungeonMonsterGroupData(); group.Add(new DungeonMonsterData() { RaceId = raceId, Amount = amount }); this.Puzzle.AllocateAndSpawnMob(this, mobGroupName, group, placement); }
/// <summary> /// Creates monsters from group data and adds them to internal list. /// </summary> /// <param name="groupData"></param> public void Allocate(DungeonMonsterGroupData groupData) { foreach (var monsterData in groupData) { for (int i = 0; i < monsterData.Amount; ++i) { var monster = new NPC(monsterData.RaceId); monster.State |= CreatureStates.Spawned | CreatureStates.InstantNpc; monster.Death += this.OnDeath; _monsters.Add(monster); } } _remaining = this.Count; this.Puzzle.Script.OnMobAllocated(this.Puzzle, this); }
/// <summary> /// Creates mob in puzzle, in place. /// </summary> /// <param name="mobGroupName">Name of the mob, for reference.</param> /// <param name="raceId">Race to spawn.</param> /// <param name="amount">Number of monsters to spawn.</param> /// <param name="placement"></param> public void SpawnSingleMob(string mobGroupName, int raceId, int amount, Placement placement = Placement.Random) { if (amount < 1) amount = 1; var group = new DungeonMonsterGroupData(); group.Add(new DungeonMonsterData() { RaceId = raceId, Amount = amount }); this.Puzzle.AllocateAndSpawnMob(this, mobGroupName, group, placement); }