/// <summary> /// Makes this item persistent. /// </summary> /// <param name="repositoryManager">The repository manager.</param> /// <returns>The persistent item.</returns> public Item MakePersistent(IRepositoryManager repositoryManager) { var persistentItem = repositoryManager.CreateNew <Item>(); persistentItem.AssignValues(this); return(persistentItem); }
/// <summary> /// Creates a new <see cref="MonsterSpawnArea"/> with the specified data. /// </summary> /// <param name="repositoryManager">The repository manager.</param> /// <param name="map">The map.</param> /// <param name="monsterDefinition">The monster definition.</param> /// <param name="quantity">The quantity.</param> /// <param name="direction">The direction.</param> /// <param name="spawnTrigger">The spawn trigger.</param> /// <param name="x1">The x1 coordinate.</param> /// <param name="x2">The x2 coordinate.</param> /// <param name="y1">The y1 coordinate.</param> /// <param name="y2">The y2 coordinate.</param> /// <returns>The created monster spawn area.</returns> protected MonsterSpawnArea CreateMonsterSpawn(IRepositoryManager repositoryManager, GameMapDefinition map, MonsterDefinition monsterDefinition, short quantity, byte direction, SpawnTrigger spawnTrigger, byte x1, byte x2, byte y1, byte y2) { var area = repositoryManager.CreateNew <MonsterSpawnArea>(); area.GameMap = map; area.MonsterDefinition = monsterDefinition; area.Quantity = quantity; area.Direction = (Direction)direction; area.SpawnTrigger = spawnTrigger; area.X1 = x1; area.X2 = x2; area.Y1 = y1; area.Y2 = y2; return(area); }
/// <inheritdoc /> public GameMapDefinition Initialize(IRepositoryManager repositoryManager, GameConfiguration gameConfiguration) { this.CreateMonsters(repositoryManager, gameConfiguration); var mapDefinition = repositoryManager.CreateNew <GameMapDefinition>(); mapDefinition.Number = this.MapNumber; mapDefinition.Name = this.MapName; mapDefinition.TerrainData = Terrains.ResourceManager.GetObject("Terrain" + (this.MapNumber + 1)) as byte[]; mapDefinition.ExpMultiplier = 1; foreach (var spawn in this.CreateSpawns(repositoryManager, mapDefinition, gameConfiguration)) { mapDefinition.MonsterSpawns.Add(spawn); } return(mapDefinition); }
/// <inheritdoc/> protected override void CreateMonsters(IRepositoryManager repositoryManager, GameConfiguration gameConfiguration) { { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 69; monster.Designation = "Alquamos"; monster.MoveRange = 3; monster.AttackRange = 5; monster.ViewRange = 5; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 75 }, { Stats.MaximumHealth, 11500 }, { Stats.MinimumPhysBaseDmg, 255 }, { Stats.MaximumPhysBaseDmg, 290 }, { Stats.DefenseBase, 195 }, { Stats.AttackRatePvm, 385 }, { Stats.DefenseRatePvm, 125 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 9 }, { Stats.IceResistance, 9 }, { Stats.WaterResistance, 11 }, { Stats.FireResistance, 9 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 70; monster.Designation = "Queen Rainer"; monster.MoveRange = 3; monster.AttackRange = 3; monster.ViewRange = 5; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 82 }, { Stats.MaximumHealth, 19000 }, { Stats.MinimumPhysBaseDmg, 305 }, { Stats.MaximumPhysBaseDmg, 350 }, { Stats.DefenseBase, 230 }, { Stats.AttackRatePvm, 475 }, { Stats.DefenseRatePvm, 160 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 9 }, { Stats.IceResistance, 11 }, { Stats.WaterResistance, 12 }, { Stats.FireResistance, 9 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 71; monster.Designation = "Mega Crust"; monster.MoveRange = 3; monster.AttackRange = 1; monster.ViewRange = 5; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(3 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 78 }, { Stats.MaximumHealth, 15000 }, { Stats.MinimumPhysBaseDmg, 270 }, { Stats.MaximumPhysBaseDmg, 320 }, { Stats.DefenseBase, 210 }, { Stats.AttackRatePvm, 430 }, { Stats.DefenseRatePvm, 140 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 9 }, { Stats.IceResistance, 9 }, { Stats.WaterResistance, 12 }, { Stats.FireResistance, 9 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 72; monster.Designation = "Phantom Knight"; monster.MoveRange = 3; monster.AttackRange = 2; monster.ViewRange = 5; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(3 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 96 }, { Stats.MaximumHealth, 41000 }, { Stats.MinimumPhysBaseDmg, 560 }, { Stats.MaximumPhysBaseDmg, 610 }, { Stats.DefenseBase, 425 }, { Stats.AttackRatePvm, 690 }, { Stats.DefenseRatePvm, 270 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 14 }, { Stats.IceResistance, 14 }, { Stats.WaterResistance, 16 }, { Stats.FireResistance, 14 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 73; monster.Designation = "Drakan"; monster.MoveRange = 3; monster.AttackRange = 5; monster.ViewRange = 5; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(20 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 86 }, { Stats.MaximumHealth, 29000 }, { Stats.MinimumPhysBaseDmg, 425 }, { Stats.MaximumPhysBaseDmg, 480 }, { Stats.DefenseBase, 305 }, { Stats.AttackRatePvm, 570 }, { Stats.DefenseRatePvm, 210 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 12 }, { Stats.IceResistance, 12 }, { Stats.WaterResistance, 13 }, { Stats.FireResistance, 12 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 74; monster.Designation = "Alpha Crust"; monster.MoveRange = 3; monster.AttackRange = 1; monster.ViewRange = 5; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(3 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 92 }, { Stats.MaximumHealth, 34500 }, { Stats.MinimumPhysBaseDmg, 489 }, { Stats.MaximumPhysBaseDmg, 540 }, { Stats.DefenseBase, 360 }, { Stats.AttackRatePvm, 620 }, { Stats.DefenseRatePvm, 240 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 13 }, { Stats.IceResistance, 13 }, { Stats.WaterResistance, 14 }, { Stats.FireResistance, 13 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 75; monster.Designation = "Great Drakan"; monster.MoveRange = 3; monster.AttackRange = 5; monster.ViewRange = 5; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(3 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 100 }, { Stats.MaximumHealth, 50000 }, { Stats.MinimumPhysBaseDmg, 650 }, { Stats.MaximumPhysBaseDmg, 700 }, { Stats.DefenseBase, 495 }, { Stats.AttackRatePvm, 800 }, { Stats.DefenseRatePvm, 305 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 15 }, { Stats.IceResistance, 15 }, { Stats.WaterResistance, 17 }, { Stats.FireResistance, 18 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 76; monster.Designation = "Dark Phoenix Shield"; monster.MoveRange = 3; monster.AttackRange = 3; monster.ViewRange = 5; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 106 }, { Stats.MaximumHealth, 73000 }, { Stats.MinimumPhysBaseDmg, 850 }, { Stats.MaximumPhysBaseDmg, 960 }, { Stats.DefenseBase, 580 }, { Stats.AttackRatePvm, 840 }, { Stats.DefenseRatePvm, 305 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 30 }, { Stats.IceResistance, 30 }, { Stats.WaterResistance, 35 }, { Stats.FireResistance, 30 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 77; monster.Designation = "Dark Phoenix"; monster.MoveRange = 1; monster.AttackRange = 6; monster.ViewRange = 7; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1500 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(15 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 108 }, { Stats.MaximumHealth, 95000 }, { Stats.MinimumPhysBaseDmg, 950 }, { Stats.MaximumPhysBaseDmg, 1000 }, { Stats.DefenseBase, 600 }, { Stats.AttackRatePvm, 900 }, { Stats.DefenseRatePvm, 350 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 30 }, { Stats.IceResistance, 30 }, { Stats.WaterResistance, 35 }, { Stats.FireResistance, 30 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } }
/// <inheritdoc/> protected override void CreateMonsters(IRepositoryManager repositoryManager, GameConfiguration gameConfiguration) { { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 64; monster.Designation = "Orc Archer"; monster.MoveRange = 3; monster.AttackRange = 4; monster.ViewRange = 7; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1600 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 70 }, { Stats.MaximumHealth, 10000 }, { Stats.MinimumPhysBaseDmg, 220 }, { Stats.MaximumPhysBaseDmg, 250 }, { Stats.DefenseBase, 170 }, { Stats.AttackRatePvm, 350 }, { Stats.DefenseRatePvm, 115 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 7 }, { Stats.IceResistance, 7 }, { Stats.WaterResistance, 7 }, { Stats.FireResistance, 7 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 65; monster.Designation = "Elite Orc"; monster.MoveRange = 3; monster.AttackRange = 1; monster.ViewRange = 7; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(2000 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(100 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 74 }, { Stats.MaximumHealth, 14000 }, { Stats.MinimumPhysBaseDmg, 260 }, { Stats.MaximumPhysBaseDmg, 290 }, { Stats.DefenseBase, 190 }, { Stats.AttackRatePvm, 400 }, { Stats.DefenseRatePvm, 125 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 8 }, { Stats.IceResistance, 8 }, { Stats.WaterResistance, 8 }, { Stats.FireResistance, 8 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } }
/// <inheritdoc/> protected override void CreateMonsters(IRepositoryManager repositoryManager, GameConfiguration gameConfiguration) { { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 57; monster.Designation = "Iron Wheel"; monster.MoveRange = 3; monster.AttackRange = 4; monster.ViewRange = 7; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 80 }, { Stats.MaximumHealth, 17000 }, { Stats.MinimumPhysBaseDmg, 280 }, { Stats.MaximumPhysBaseDmg, 330 }, { Stats.DefenseBase, 215 }, { Stats.AttackRatePvm, 446 }, { Stats.DefenseRatePvm, 150 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 9 }, { Stats.IceResistance, 9 }, { Stats.WaterResistance, 9 }, { Stats.FireResistance, 9 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 58; monster.Designation = "Tantallos"; monster.MoveRange = 3; monster.AttackRange = 2; monster.ViewRange = 7; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(20 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 83 }, { Stats.MaximumHealth, 22000 }, { Stats.MinimumPhysBaseDmg, 335 }, { Stats.MaximumPhysBaseDmg, 385 }, { Stats.DefenseBase, 250 }, { Stats.AttackRatePvm, 500 }, { Stats.DefenseRatePvm, 175 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 9 }, { Stats.IceResistance, 9 }, { Stats.WaterResistance, 9 }, { Stats.FireResistance, 9 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 59; monster.Designation = "Zaikan"; monster.MoveRange = 3; monster.AttackRange = 5; monster.ViewRange = 7; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(150 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 90 }, { Stats.MaximumHealth, 34000 }, { Stats.MinimumPhysBaseDmg, 510 }, { Stats.MaximumPhysBaseDmg, 590 }, { Stats.DefenseBase, 400 }, { Stats.AttackRatePvm, 550 }, { Stats.DefenseRatePvm, 185 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 13 }, { Stats.IceResistance, 13 }, { Stats.WaterResistance, 13 }, { Stats.FireResistance, 15 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 60; monster.Designation = "Bloody Wolf"; monster.MoveRange = 3; monster.AttackRange = 2; monster.ViewRange = 7; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 76 }, { Stats.MaximumHealth, 13500 }, { Stats.MinimumPhysBaseDmg, 260 }, { Stats.MaximumPhysBaseDmg, 300 }, { Stats.DefenseBase, 200 }, { Stats.AttackRatePvm, 410 }, { Stats.DefenseRatePvm, 130 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 8 }, { Stats.IceResistance, 8 }, { Stats.WaterResistance, 8 }, { Stats.FireResistance, 8 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 61; monster.Designation = "Beam Knight"; monster.MoveRange = 3; monster.AttackRange = 4; monster.ViewRange = 7; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(20 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 84 }, { Stats.MaximumHealth, 25000 }, { Stats.MinimumPhysBaseDmg, 375 }, { Stats.MaximumPhysBaseDmg, 425 }, { Stats.DefenseBase, 275 }, { Stats.AttackRatePvm, 530 }, { Stats.DefenseRatePvm, 190 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 10 }, { Stats.IceResistance, 10 }, { Stats.WaterResistance, 10 }, { Stats.FireResistance, 10 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 62; monster.Designation = "Mutant"; monster.MoveRange = 3; monster.AttackRange = 1; monster.ViewRange = 7; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 72 }, { Stats.MaximumHealth, 10000 }, { Stats.MinimumPhysBaseDmg, 250 }, { Stats.MaximumPhysBaseDmg, 280 }, { Stats.DefenseBase, 190 }, { Stats.AttackRatePvm, 365 }, { Stats.DefenseRatePvm, 120 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 8 }, { Stats.IceResistance, 8 }, { Stats.WaterResistance, 8 }, { Stats.FireResistance, 8 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 63; monster.Designation = "Death Beam Knight"; monster.MoveRange = 3; monster.AttackRange = 5; monster.ViewRange = 7; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(150 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 93 }, { Stats.MaximumHealth, 40000 }, { Stats.MinimumPhysBaseDmg, 590 }, { Stats.MaximumPhysBaseDmg, 650 }, { Stats.DefenseBase, 420 }, { Stats.AttackRatePvm, 575 }, { Stats.DefenseRatePvm, 220 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 13 }, { Stats.IceResistance, 13 }, { Stats.WaterResistance, 13 }, { Stats.FireResistance, 17 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } }
/// <inheritdoc/> protected override void CreateMonsters(IRepositoryManager repositoryManager, GameConfiguration gameConfiguration) { { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 26; monster.Designation = "Goblin"; monster.MoveRange = 2; monster.AttackRange = 1; monster.ViewRange = 4; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1800 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 3 }, { Stats.MaximumHealth, 45 }, { Stats.MinimumPhysBaseDmg, 7 }, { Stats.MaximumPhysBaseDmg, 10 }, { Stats.DefenseBase, 2 }, { Stats.AttackRatePvm, 13 }, { Stats.DefenseRatePvm, 2 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 27; monster.Designation = "Chain Scorpion"; monster.MoveRange = 3; monster.AttackRange = 1; monster.ViewRange = 4; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1800 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 5 }, { Stats.MaximumHealth, 80 }, { Stats.MinimumPhysBaseDmg, 13 }, { Stats.MaximumPhysBaseDmg, 17 }, { Stats.DefenseBase, 4 }, { Stats.AttackRatePvm, 23 }, { Stats.DefenseRatePvm, 4 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 28; monster.Designation = "Beetle Monster"; monster.MoveRange = 3; monster.AttackRange = 1; monster.ViewRange = 5; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1600 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 10 }, { Stats.MaximumHealth, 165 }, { Stats.MinimumPhysBaseDmg, 26 }, { Stats.MaximumPhysBaseDmg, 31 }, { Stats.DefenseBase, 10 }, { Stats.AttackRatePvm, 44 }, { Stats.DefenseRatePvm, 10 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 29; monster.Designation = "Hunter"; monster.MoveRange = 3; monster.AttackRange = 4; monster.ViewRange = 4; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1600 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 13 }, { Stats.MaximumHealth, 220 }, { Stats.MinimumPhysBaseDmg, 36 }, { Stats.MaximumPhysBaseDmg, 41 }, { Stats.DefenseBase, 13 }, { Stats.AttackRatePvm, 56 }, { Stats.DefenseRatePvm, 13 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 30; monster.Designation = "Forest Monster"; monster.MoveRange = 3; monster.AttackRange = 1; monster.ViewRange = 4; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1600 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 15 }, { Stats.MaximumHealth, 295 }, { Stats.MinimumPhysBaseDmg, 46 }, { Stats.MaximumPhysBaseDmg, 51 }, { Stats.DefenseBase, 15 }, { Stats.AttackRatePvm, 68 }, { Stats.DefenseRatePvm, 15 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 31; monster.Designation = "Agon"; monster.MoveRange = 2; monster.AttackRange = 1; monster.ViewRange = 4; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 16 }, { Stats.MaximumHealth, 340 }, { Stats.MinimumPhysBaseDmg, 51 }, { Stats.MaximumPhysBaseDmg, 57 }, { Stats.DefenseBase, 16 }, { Stats.AttackRatePvm, 74 }, { Stats.DefenseRatePvm, 16 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 32; monster.Designation = "Stone Golem"; monster.MoveRange = 2; monster.AttackRange = 2; monster.ViewRange = 3; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(2200 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 18 }, { Stats.MaximumHealth, 465 }, { Stats.MinimumPhysBaseDmg, 62 }, { Stats.MaximumPhysBaseDmg, 68 }, { Stats.DefenseBase, 20 }, { Stats.AttackRatePvm, 86 }, { Stats.DefenseRatePvm, 20 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 33; monster.Designation = "Elite Goblin"; monster.MoveRange = 3; monster.AttackRange = 1; monster.ViewRange = 5; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1600 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 8 }, { Stats.MaximumHealth, 120 }, { Stats.MinimumPhysBaseDmg, 19 }, { Stats.MaximumPhysBaseDmg, 23 }, { Stats.DefenseBase, 8 }, { Stats.AttackRatePvm, 33 }, { Stats.DefenseRatePvm, 8 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } }
/// <inheritdoc/> protected override void CreateMonsters(IRepositoryManager repositoryManager, GameConfiguration gameConfiguration) { { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 19; monster.Designation = "Yeti"; monster.MoveRange = 2; monster.AttackRange = 4; monster.ViewRange = 6; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(2000 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(3 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 30 }, { Stats.MaximumHealth, 900 }, { Stats.MinimumPhysBaseDmg, 105 }, { Stats.MaximumPhysBaseDmg, 110 }, { Stats.DefenseBase, 37 }, { Stats.AttackRatePvm, 150 }, { Stats.DefenseRatePvm, 37 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 3 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 20; monster.Designation = "Elite Yeti"; monster.MoveRange = 3; monster.AttackRange = 1; monster.ViewRange = 6; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(3 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 36 }, { Stats.MaximumHealth, 1200 }, { Stats.MinimumPhysBaseDmg, 120 }, { Stats.MaximumPhysBaseDmg, 125 }, { Stats.DefenseBase, 50 }, { Stats.AttackRatePvm, 180 }, { Stats.DefenseRatePvm, 43 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 1 }, { Stats.IceResistance, 4 }, { Stats.WaterResistance, 1 }, { Stats.FireResistance, 1 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 21; monster.Designation = "Assassin"; monster.MoveRange = 2; monster.AttackRange = 1; monster.ViewRange = 7; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(2000 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 26 }, { Stats.MaximumHealth, 800 }, { Stats.MinimumPhysBaseDmg, 95 }, { Stats.MaximumPhysBaseDmg, 100 }, { Stats.DefenseBase, 33 }, { Stats.AttackRatePvm, 130 }, { Stats.DefenseRatePvm, 33 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 22; monster.Designation = "Ice Monster"; monster.MoveRange = 2; monster.AttackRange = 1; monster.ViewRange = 5; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(2000 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 22 }, { Stats.MaximumHealth, 650 }, { Stats.MinimumPhysBaseDmg, 80 }, { Stats.MaximumPhysBaseDmg, 85 }, { Stats.DefenseBase, 27 }, { Stats.AttackRatePvm, 110 }, { Stats.DefenseRatePvm, 27 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 3 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 23; monster.Designation = "Hommerd"; monster.MoveRange = 3; monster.AttackRange = 1; monster.ViewRange = 5; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1600 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 24 }, { Stats.MaximumHealth, 700 }, { Stats.MinimumPhysBaseDmg, 85 }, { Stats.MaximumPhysBaseDmg, 90 }, { Stats.DefenseBase, 29 }, { Stats.AttackRatePvm, 120 }, { Stats.DefenseRatePvm, 29 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 3 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 24; monster.Designation = "Worm"; monster.MoveRange = 3; monster.AttackRange = 1; monster.ViewRange = 4; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1600 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 20 }, { Stats.MaximumHealth, 600 }, { Stats.MinimumPhysBaseDmg, 75 }, { Stats.MaximumPhysBaseDmg, 80 }, { Stats.DefenseBase, 25 }, { Stats.AttackRatePvm, 100 }, { Stats.DefenseRatePvm, 25 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 2 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } { var monster = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(monster); monster.Number = 25; monster.Designation = "Ice Queen"; monster.MoveRange = 3; monster.AttackRange = 4; monster.ViewRange = 7; monster.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); monster.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); monster.RespawnDelay = new TimeSpan(50 * TimeSpan.TicksPerSecond); monster.Attribute = 2; monster.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 52 }, { Stats.MaximumHealth, 4000 }, { Stats.MinimumPhysBaseDmg, 155 }, { Stats.MaximumPhysBaseDmg, 165 }, { Stats.DefenseBase, 90 }, { Stats.AttackRatePvm, 260 }, { Stats.DefenseRatePvm, 76 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 4 }, { Stats.IceResistance, 5 }, { Stats.WaterResistance, 4 }, { Stats.FireResistance, 4 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(monster.Attributes.Add); } }
/// <inheritdoc /> protected override void CreateMonsters(IRepositoryManager repositoryManager, GameConfiguration gameConfiguration) { var bullFighter = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(bullFighter); bullFighter.Number = 0; bullFighter.Designation = "Bull Fighter"; bullFighter.MoveRange = 3; bullFighter.AttackRange = 1; bullFighter.ViewRange = 5; bullFighter.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); bullFighter.AttackDelay = new TimeSpan(1600 * TimeSpan.TicksPerMillisecond); bullFighter.RespawnDelay = new TimeSpan(3 * TimeSpan.TicksPerSecond); bullFighter.Attribute = 2; bullFighter.NumberOfMaximumItemDrops = 1; new Dictionary <AttributeDefinition, float> { { Stats.Level, 6 }, { Stats.MaximumHealth, 100 }, { Stats.MinimumPhysBaseDmg, 16 }, { Stats.MaximumPhysBaseDmg, 20 }, { Stats.DefenseBase, 6 }, { Stats.AttackRatePvm, 28 }, { Stats.DefenseRatePvm, 6 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(bullFighter.Attributes.Add); var hound = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(hound); hound.Number = 1; hound.Designation = "Hound"; new Dictionary <AttributeDefinition, float> { { Stats.Level, 9 }, { Stats.MaximumHealth, 140 }, { Stats.MinimumPhysBaseDmg, 22 }, { Stats.MaximumPhysBaseDmg, 27 }, { Stats.DefenseBase, 9 }, { Stats.AttackRatePvm, 39 }, { Stats.DefenseRatePvm, 9 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(hound.Attributes.Add); hound.MoveRange = 3; hound.AttackRange = 1; hound.ViewRange = 5; hound.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); hound.AttackDelay = new TimeSpan(1600 * TimeSpan.TicksPerMillisecond); hound.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); hound.Attribute = 2; hound.NumberOfMaximumItemDrops = 1; var budgeDragon = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(budgeDragon); budgeDragon.Number = 2; budgeDragon.Designation = "Budge Dragon"; new Dictionary <AttributeDefinition, float> { { Stats.Level, 4 }, { Stats.MaximumHealth, 60 }, { Stats.MinimumPhysBaseDmg, 10 }, { Stats.MaximumPhysBaseDmg, 13 }, { Stats.DefenseBase, 3 }, { Stats.AttackRatePvm, 18 }, { Stats.DefenseRatePvm, 3 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(budgeDragon.Attributes.Add); budgeDragon.MoveRange = 3; budgeDragon.AttackRange = 1; budgeDragon.ViewRange = 4; budgeDragon.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); budgeDragon.AttackDelay = new TimeSpan(2000 * TimeSpan.TicksPerMillisecond); budgeDragon.RespawnDelay = new TimeSpan(3 * TimeSpan.TicksPerSecond); budgeDragon.Attribute = 2; budgeDragon.NumberOfMaximumItemDrops = 1; var spider = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(spider); spider.Number = 3; spider.Designation = "Spider"; new Dictionary <AttributeDefinition, float> { { Stats.Level, 2 }, { Stats.MaximumHealth, 30 }, { Stats.MinimumPhysBaseDmg, 4 }, { Stats.MaximumPhysBaseDmg, 7 }, { Stats.DefenseBase, 1 }, { Stats.AttackRatePvm, 8 }, { Stats.DefenseRatePvm, 1 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(spider.Attributes.Add); spider.MoveRange = 2; spider.AttackRange = 1; spider.ViewRange = 5; spider.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); spider.AttackDelay = new TimeSpan(1800 * TimeSpan.TicksPerMillisecond); spider.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); spider.Attribute = 2; spider.NumberOfMaximumItemDrops = 1; var eliteBullFighter = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(eliteBullFighter); eliteBullFighter.Number = 4; eliteBullFighter.Designation = "Elite Bull Fighter"; new Dictionary <AttributeDefinition, float> { { Stats.Level, 12 }, { Stats.MaximumHealth, 190 }, { Stats.MinimumPhysBaseDmg, 31 }, { Stats.MaximumPhysBaseDmg, 36 }, { Stats.DefenseBase, 12 }, { Stats.AttackRatePvm, 50 }, { Stats.DefenseRatePvm, 12 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(eliteBullFighter.Attributes.Add); eliteBullFighter.MoveRange = 3; eliteBullFighter.AttackRange = 1; eliteBullFighter.ViewRange = 4; eliteBullFighter.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); eliteBullFighter.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); eliteBullFighter.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); eliteBullFighter.Attribute = 2; eliteBullFighter.NumberOfMaximumItemDrops = 1; var lich = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(lich); lich.Number = 6; lich.Designation = "Lich"; new Dictionary <AttributeDefinition, float> { { Stats.Level, 14 }, { Stats.MaximumHealth, 255 }, { Stats.MinimumPhysBaseDmg, 41 }, { Stats.MaximumPhysBaseDmg, 46 }, { Stats.DefenseBase, 14 }, { Stats.AttackRatePvm, 62 }, { Stats.DefenseRatePvm, 14 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 1 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(lich.Attributes.Add); lich.MoveRange = 3; lich.AttackRange = 4; lich.ViewRange = 7; lich.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); lich.AttackDelay = new TimeSpan(2000 * TimeSpan.TicksPerMillisecond); lich.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); lich.Attribute = 2; lich.NumberOfMaximumItemDrops = 1; var giant = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(giant); giant.Number = 7; giant.Designation = "Giant"; new Dictionary <AttributeDefinition, float> { { Stats.Level, 17 }, { Stats.MaximumHealth, 400 }, { Stats.MinimumPhysBaseDmg, 57 }, { Stats.MaximumPhysBaseDmg, 62 }, { Stats.DefenseBase, 18 }, { Stats.AttackRatePvm, 80 }, { Stats.DefenseRatePvm, 18 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(giant.Attributes.Add); giant.MoveRange = 2; giant.AttackRange = 2; giant.ViewRange = 3; giant.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); giant.AttackDelay = new TimeSpan(2200 * TimeSpan.TicksPerMillisecond); giant.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); giant.Attribute = 2; giant.NumberOfMaximumItemDrops = 1; var skeleton = repositoryManager.CreateNew <MonsterDefinition>(); gameConfiguration.Monsters.Add(skeleton); skeleton.Number = 14; skeleton.Designation = "Skeleton Warrior"; new Dictionary <AttributeDefinition, float> { { Stats.Level, 19 }, { Stats.MaximumHealth, 525 }, { Stats.MinimumPhysBaseDmg, 68 }, { Stats.MaximumPhysBaseDmg, 74 }, { Stats.DefenseBase, 22 }, { Stats.AttackRatePvm, 93 }, { Stats.DefenseRatePvm, 22 }, { Stats.WindResistance, 0 }, { Stats.PoisonResistance, 0 }, { Stats.IceResistance, 0 }, { Stats.WaterResistance, 0 }, { Stats.FireResistance, 0 }, }.Select(kvp => { var attribute = repositoryManager.CreateNew <MonsterAttribute>(); attribute.AttributeDefinition = gameConfiguration.Attributes.First(a => a == kvp.Key); attribute.Value = kvp.Value; return(attribute); }).ToList().ForEach(skeleton.Attributes.Add); skeleton.MoveRange = 2; skeleton.AttackRange = 1; skeleton.ViewRange = 4; skeleton.MoveDelay = new TimeSpan(400 * TimeSpan.TicksPerMillisecond); skeleton.AttackDelay = new TimeSpan(1400 * TimeSpan.TicksPerMillisecond); skeleton.RespawnDelay = new TimeSpan(10 * TimeSpan.TicksPerSecond); skeleton.Attribute = 2; skeleton.NumberOfMaximumItemDrops = 1; }