diff --git a/data-canary/monster/birds/headpecker.lua b/data-canary/monster/birds/headpecker.lua new file mode 100644 index 00000000000..c5a686633be --- /dev/null +++ b/data-canary/monster/birds/headpecker.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Headpecker") +local monster = {} + +monster.description = "a headpecker" +monster.experience = 12026 +monster.outfit = { + lookType = 1557, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2275 +monster.Bestiary = { + class = "Bird", + race = BESTY_RACE_BIRD, + toKill = 5000, + FirstUnlock = 200, + SecondUnlock = 2000, + CharmsPoints = 100, + Stars = 5, + Occurrence = 0, + Locations = "Crystal Enigma", +} + +monster.health = 16300 +monster.maxHealth = 16300 +monster.race = "blood" +monster.corpse = 39319 +monster.speed = 217 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 70, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "Crystal Coin", chance = 35160 }, + { name = "Headpecker Beak", chance = 11360 }, + { name = "Headpecker Feather", chance = 7620, minCount = 1, maxCount = 5 }, + { name = "Furry Club", chance = 5560 }, + { id = 3595, chance = 4950, minCount = 1, maxCount = 3 }, -- Carrot + { name = "Knife", chance = 4260 }, + { name = "Spike Sword", chance = 4040 }, + { name = "War Hammer", chance = 2290 }, + { name = "Titan Axe", chance = 1720 }, + { name = "Blue Gem", chance = 1560 }, + { name = "Wand of Starstorm", chance = 980 }, + { name = "Gold Ingot", chance = 910 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1000 }, + { name = "combat", interval = 2500, chance = 37, type = COMBAT_EARTHDAMAGE, minDamage = -700, maxDamage = -1100, range = 1, effect = CONST_ME_BLACKSMOKE, target = true }, + { name = "combat", interval = 4200, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = -700, maxDamage = -1050, length = 4, spread = 3, effect = CONST_ME_SLASH, target = false }, + { name = "headpecker explosion", interval = 3500, chance = 35, minDamage = -700, maxDamage = -850 }, +} + +monster.defenses = { + defense = 100, + armor = 68, + mitigation = 2.05, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) + +RegisterPrimalPackBeast(monster) diff --git a/data-canary/monster/constructs/animated_snowman.lua b/data-canary/monster/constructs/animated_snowman.lua new file mode 100644 index 00000000000..6fcf9883043 --- /dev/null +++ b/data-canary/monster/constructs/animated_snowman.lua @@ -0,0 +1,120 @@ +local mType = Game.createMonsterType("Animated Snowman") +local monster = {} + +monster.description = "an animated snowman" +monster.experience = 400 +monster.outfit = { + lookType = 1159, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1751 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Percht Island.", +} + +monster.health = 450 +monster.maxHealth = 450 +monster.race = "venom" +monster.corpse = 30335 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 50 }, + { name = "twig arms", chance = 91770 }, + { name = "shiver arrow", chance = 7310 }, + { name = "ice rapier", chance = 4750 }, + { name = "glacier mask", chance = 4570 }, + { id = 2992, chance = 4000, maxCount = 5 }, -- snowball + { name = "hailstorm rod", chance = 3470 }, + { name = "glacier mask", chance = 250 }, + { name = "glacier amulet", chance = 3290 }, + { name = "moonlight rod", chance = 1830 }, + { name = "glacier kilt", chance = 1100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -10, maxDamage = -40, range = 7, radius = 2, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, +} + +monster.defenses = { + defense = 25, + armor = 25, + mitigation = 0.78, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/biting_book.lua b/data-canary/monster/constructs/biting_book.lua new file mode 100644 index 00000000000..d785bb06281 --- /dev/null +++ b/data-canary/monster/constructs/biting_book.lua @@ -0,0 +1,115 @@ +local mType = Game.createMonsterType("Biting Book") +local monster = {} + +monster.description = "a biting book" +monster.experience = 9350 +monster.outfit = { + lookType = 1066, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1656 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Secret Library earth, energy, fire and ice sections. Also two incarcerated in the Issavi prison, reachable from the city Library.", +} + +monster.health = 6500 +monster.maxHealth = 6500 +monster.race = "ink" +monster.corpse = 28609 +monster.speed = 240 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3116, chance = 500, maxCount = 2 }, -- big bone + { name = "book page", chance = 500, maxCount = 4 }, + { name = "glowing rune", chance = 500, maxCount = 2 }, + { name = "platinum coin", chance = 10000, maxCount = 5 }, + { name = "silken bookmark", chance = 500, maxCount = 3 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1055 }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1210, radius = 5, effect = CONST_ME_SMOKE, target = false }, + { name = "combat", interval = 1000, chance = 14, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1210, radius = 3, effect = CONST_ME_BATS, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 76, + mitigation = 1.88, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 50 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/clay_guardian.lua b/data-canary/monster/constructs/clay_guardian.lua new file mode 100644 index 00000000000..fb28abe50c3 --- /dev/null +++ b/data-canary/monster/constructs/clay_guardian.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Clay Guardian") +local monster = {} + +monster.description = "a clay guardian" +monster.experience = 400 +monster.outfit = { + lookType = 333, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 706 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Horestis Tomb, Middle Spike, Medusa Tower.", +} + +monster.health = 625 +monster.maxHealth = 625 +monster.race = "undead" +monster.corpse = 12837 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 60, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "small stone", chance = 10000, maxCount = 10 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 63 }, + { name = "blank rune", chance = 25000 }, + { name = "earth arrow", chance = 5555, maxCount = 8 }, + { name = "small topaz", chance = 320 }, + { name = "lump of earth", chance = 25000 }, + { name = "clay lump", chance = 1100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -125 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -30, maxDamage = -150, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_EARTHDAMAGE, minDamage = -20, maxDamage = -30, radius = 3, effect = CONST_ME_POFF, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 42, + mitigation = 0.70, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 40, maxDamage = 130, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 25 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 40 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/damaged_crystal_golem.lua b/data-canary/monster/constructs/damaged_crystal_golem.lua new file mode 100644 index 00000000000..7dbff079a5e --- /dev/null +++ b/data-canary/monster/constructs/damaged_crystal_golem.lua @@ -0,0 +1,107 @@ +local mType = Game.createMonsterType("Damaged Crystal Golem") +local monster = {} + +monster.description = "a damaged crystal golem" +monster.experience = 0 +monster.outfit = { + lookType = 508, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 874 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 1, + Locations = "Golem Workshop in Gnomebase Alpha", +} + +monster.health = 500 +monster.maxHealth = 500 +monster.race = "venom" +monster.corpse = 16176 +monster.speed = 134 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 500, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.defenses = { + defense = 5, + armor = 30, + mitigation = 0.86, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/damaged_worker_golem.lua b/data-canary/monster/constructs/damaged_worker_golem.lua new file mode 100644 index 00000000000..2110739ccc7 --- /dev/null +++ b/data-canary/monster/constructs/damaged_worker_golem.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Damaged Worker Golem") +local monster = {} + +monster.description = "a damaged worker golem" +monster.experience = 95 +monster.outfit = { + lookType = 304, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 524 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Factory Quarter.", +} + +monster.health = 260 +monster.maxHealth = 260 +monster.race = "venom" +monster.corpse = 8887 +monster.speed = 75 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 3, + color = 35, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Klonk klonk klonk", yell = false }, + { text = "Failure! Failure!", yell = false }, + { text = "Good morning citizen. How may I serve you?", yell = false }, + { text = "Target identified: Rat! Termination initiated!", yell = false }, + { text = "Rrrtttarrrttarrrtta", yell = false }, + { text = "Danger will...chrrr! Danger!", yell = false }, + { text = "Self-diagnosis failed.", yell = false }, + { text = "Aw... chhhrrr orders.", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 68810, maxCount = 88 }, + { id = 3091, chance = 570 }, -- sword ring + { name = "iron ore", chance = 400 }, + { name = "nail", chance = 1460 }, + { name = "heavily rusted armor", chance = 790 }, + { name = "gear crystal", chance = 200 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -45, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 16, + mitigation = 0.33, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 5, maxDamage = 11, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 50 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/diamond_servant.lua b/data-canary/monster/constructs/diamond_servant.lua new file mode 100644 index 00000000000..2b86d34bf5b --- /dev/null +++ b/data-canary/monster/constructs/diamond_servant.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Diamond Servant") +local monster = {} + +monster.description = "a diamond servant" +monster.experience = 700 +monster.outfit = { + lookType = 397, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 702 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Edron.", +} + +monster.health = 1000 +monster.maxHealth = 1000 +monster.race = "venom" +monster.corpse = 12496 +monster.speed = 86 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 100, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Error. LOAD 'PROGRAM',8,1", yell = false }, + { text = "Remain. Obedient.", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 44000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 79 }, + { name = "yellow gem", chance = 550 }, + { name = "might ring", chance = 940 }, + { name = "life crystal", chance = 9150 }, + { name = "wand of cosmic energy", chance = 530 }, + { name = "soul orb", chance = 45000 }, + { name = "bonebreaker", chance = 10 }, + { name = "mastermind potion", chance = 400 }, + { name = "strong health potion", chance = 5790 }, + { name = "strong mana potion", chance = 5980 }, + { name = "lightning pendant", chance = 710 }, + { name = "crystalline armor", chance = 20 }, + { name = "gear wheel", chance = 5000 }, + { id = 9063, chance = 5320 }, -- crystal pedestal + { name = "shockwave amulet", chance = 110 }, + { name = "gear crystal", chance = 5000 }, + { name = "slime mould", chance = 480 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -80, maxDamage = -120, radius = 3, effect = CONST_ME_YELLOWENERGY, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -125, maxDamage = -170, length = 5, spread = 2, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_STUN, target = true, duration = 3000 }, +} + +monster.defenses = { + defense = 25, + armor = 25, + mitigation = 0.83, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 75 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -15 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/diamond_servant_replica.lua b/data-canary/monster/constructs/diamond_servant_replica.lua new file mode 100644 index 00000000000..c7ca4102fbd --- /dev/null +++ b/data-canary/monster/constructs/diamond_servant_replica.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Diamond Servant Replica") +local monster = {} + +monster.description = "a diamond servant replica" +monster.experience = 700 +monster.outfit = { + lookType = 397, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "ReplicaServantDeath", +} + +monster.raceId = 1326 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Replica Dungeon", +} + +monster.health = 2000 +monster.maxHealth = 2000 +monster.race = "venom" +monster.corpse = 12496 +monster.speed = 86 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 100, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 9655, chance = 5040 }, -- gear crystal + { id = 8775, chance = 5070 }, -- gear wheel + { id = 3031, chance = 94130, maxCount = 179 }, -- gold coin + { id = 5944, chance = 44990 }, -- soul orb + { id = 3061, chance = 9150 }, -- life crystal + { id = 237, chance = 5980 }, -- strong mana potion + { id = 236, chance = 5790 }, -- strong health potion + { id = 9063, chance = 5320 }, -- crystal pedestal + { id = 3048, chance = 940 }, -- might ring + { id = 816, chance = 710 }, -- lightning pendant + { id = 3037, chance = 550 }, -- yellow gem + { id = 3073, chance = 530 }, -- wand of cosmic energy + { id = 12601, chance = 480 }, -- slime mould + { id = 7440, chance = 400 }, -- mastermind potion + { id = 9304, chance = 110 }, -- shockwave amulet + { id = 8050, chance = 20 }, -- crystalline armor + { id = 7428, chance = 13 }, -- bonebreaker +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 40, attack = 40 }, + { name = "combat", interval = 2000, chance = 11, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -210, radius = 3, effect = CONST_ME_YELLOWENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -75, maxDamage = -125, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "wyrm wave", interval = 2000, chance = 9, minDamage = -70, maxDamage = -120, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 25, + mitigation = 0.83, + { name = "combat", interval = 2000, chance = 11, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, effect = CONST_ME_YELLOWENERGY, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 75 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -15 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/enraged_crystal_golem.lua b/data-canary/monster/constructs/enraged_crystal_golem.lua new file mode 100644 index 00000000000..3d1e043aa30 --- /dev/null +++ b/data-canary/monster/constructs/enraged_crystal_golem.lua @@ -0,0 +1,120 @@ +local mType = Game.createMonsterType("Enraged Crystal Golem") +local monster = {} + +monster.description = "an enraged crystal golem" +monster.experience = 550 +monster.outfit = { + lookType = 508, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 873 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Golem Workshop.", +} + +monster.health = 700 +monster.maxHealth = 700 +monster.race = "venom" +monster.corpse = 16176 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Crrrrk! Chhhhr!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "crystal sword", chance = 4710 }, + { name = "glorious axe", chance = 360 }, + { name = "strong health potion", chance = 7140 }, + { name = "strong mana potion", chance = 8270 }, + { name = "blue crystal splinter", chance = 4120 }, + { name = "cyan crystal fragment", chance = 1050 }, + { name = "crystalline spikes", chance = 7980 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, +} + +monster.defenses = { + defense = 15, + armor = 15, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/eternal_guardian.lua b/data-canary/monster/constructs/eternal_guardian.lua new file mode 100644 index 00000000000..ae2b81fed09 --- /dev/null +++ b/data-canary/monster/constructs/eternal_guardian.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Eternal Guardian") +local monster = {} + +monster.description = "an eternal guardian" +monster.experience = 1800 +monster.outfit = { + lookType = 345, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 615 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "North-east Muggy Plains, Deeper Banuta.", +} + +monster.health = 2500 +monster.maxHealth = 2500 +monster.race = "undead" +monster.corpse = 10383 +monster.speed = 102 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Zzrrkrrch!", yell = false }, + { text = "", yell = false }, +} + +monster.loot = { + { name = "small stone", chance = 30230, maxCount = 10 }, + { name = "gold coin", chance = 99930, maxCount = 100 }, + { name = "platinum coin", chance = 99540, maxCount = 4 }, + { name = "guardian halberd", chance = 560 }, + { name = "tower shield", chance = 820 }, + { name = "iron ore", chance = 1700 }, + { name = "ancient stone", chance = 20020 }, + { name = "shiny stone", chance = 800 }, + { name = "zaoan sword", chance = 100 }, + { name = "zaoan halberd", chance = 1860 }, + { name = "spiked iron ball", chance = 9960 }, + { name = "clay lump", chance = 720 }, + { name = "piece of marble rock", chance = 430 }, + { id = 12600, chance = 400 }, -- coal +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, +} + +monster.defenses = { + defense = 40, + armor = 62, + mitigation = 1.18, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 70 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/glooth_golem.lua b/data-canary/monster/constructs/glooth_golem.lua new file mode 100644 index 00000000000..386efb65c3d --- /dev/null +++ b/data-canary/monster/constructs/glooth_golem.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Glooth Golem") +local monster = {} + +monster.description = "a glooth golem" +monster.experience = 1606 +monster.outfit = { + lookType = 600, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1038 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Glooth Factory, Underground Glooth Factory, Rathleton Sewers, Jaccus Maxxens Dungeon, \z + Oramond Dungeon (depending on Magistrate votes).", +} + +monster.health = 2700 +monster.maxHealth = 2700 +monster.race = "venom" +monster.corpse = 20972 +monster.speed = 130 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "*slosh*", yell = false }, + { text = "*clank*", yell = false }, +} + +monster.loot = { + { id = 5880, chance = 530 }, -- iron ore + { id = 21183, chance = 720 }, -- glooth amulet + { id = 21170, chance = 1720 }, -- gearwheel chain + { id = 21165, chance = 370 }, -- rubber cap + { id = 3031, chance = 100000, maxCount = 200 }, -- gold coin + { id = 21755, chance = 1470 }, -- bronze gear wheel + { id = 8775, chance = 690 }, -- gear wheel + { id = 21143, chance = 1970 }, -- glooth sandwich + { id = 3035, chance = 6010, maxCount = 4 }, -- platinum coin + { id = 21103, chance = 2840 }, -- glooth injection tube + { id = 7643, chance = 4470 }, -- ultimate health potion + { id = 238, chance = 9280 }, -- great mana potion + { id = 21167, chance = 690 }, -- heat core + { id = 21179, chance = 440 }, -- glooth blade + { id = 21178, chance = 230 }, -- glooth club + { id = 21180, chance = 290 }, -- glooth axe + { id = 3037, chance = 730 }, -- yellow gem + { id = 9057, chance = 1560, maxCount = 4 }, -- small topaz + { id = 3032, chance = 1590, maxCount = 4 }, -- small emerald +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 50 }, + { name = "melee", interval = 2000, chance = 2, skill = 86, attack = 100 }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -125, maxDamage = -245, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, + { name = "war golem skill reducer", interval = 2000, chance = 16, target = false }, + { name = "war golem electrify", interval = 2000, chance = 9, range = 7, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 43, + mitigation = 1.37, + { name = "speed", interval = 2000, chance = 13, speedChange = 404, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 15 }, + { type = COMBAT_DEATHDAMAGE, percent = 30 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/golden_servant.lua b/data-canary/monster/constructs/golden_servant.lua new file mode 100644 index 00000000000..f896b72a940 --- /dev/null +++ b/data-canary/monster/constructs/golden_servant.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Golden Servant") +local monster = {} + +monster.description = "a golden servant" +monster.experience = 450 +monster.outfit = { + lookType = 396, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 701 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Edron.", +} + +monster.health = 550 +monster.maxHealth = 550 +monster.race = "venom" +monster.corpse = 12500 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 50, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Error. LOAD 'PROGRAM',8,1", yell = false }, + { text = "Remain. Obedient.", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 40000, maxCount = 100 }, + { name = "gold coin", chance = 45000, maxCount = 40 }, + { id = 3049, chance = 450 }, -- stealth ring + { name = "gold ring", chance = 10 }, + { name = "halberd", chance = 3003 }, + { name = "golden armor", chance = 10 }, + { name = "green mushroom", chance = 1450 }, + { name = "health potion", chance = 4930 }, + { name = "mana potion", chance = 4950 }, + { name = "spellbook of enlightenment", chance = 520 }, + { name = "gear wheel", chance = 940 }, + { name = "slime mould", chance = 340 }, + { name = "golden can of oil", chance = 40 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -60, maxDamage = -100, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_YELLOWENERGY, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -80, maxDamage = -110, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -90, maxDamage = -150, length = 5, spread = 2, effect = CONST_ME_YELLOWENERGY, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 29, + mitigation = 0.88, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 25 }, + { type = COMBAT_EARTHDAMAGE, percent = 80 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/golden_servant_replica.lua b/data-canary/monster/constructs/golden_servant_replica.lua new file mode 100644 index 00000000000..f5086d79354 --- /dev/null +++ b/data-canary/monster/constructs/golden_servant_replica.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Golden Servant Replica") +local monster = {} + +monster.description = "a golden servant replica" +monster.experience = 450 +monster.outfit = { + lookType = 396, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "ReplicaServantDeath", +} + +monster.raceId = 1327 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Replica Dungeon", +} + +monster.health = 2000 +monster.maxHealth = 2000 +monster.race = "venom" +monster.corpse = 12495 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 80, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3732, chance = 1450 }, -- green mushroom + { id = 8775, chance = 940 }, -- gear wheel + { id = 3031, chance = 85180, maxCount = 140 }, -- gold coin + { id = 266, chance = 4930 }, -- health potion + { id = 268, chance = 4950 }, -- mana potion + { id = 3269, chance = 3030 }, -- halberd + { id = 8072, chance = 520 }, -- spellbook of enlightenment + { id = 3049, chance = 450 }, -- stealth ring + { id = 12601, chance = 340 }, -- slime mould + { id = 12801, chance = 36 }, -- golden can of oil + { id = 3360, chance = 13 }, -- golden armor + { id = 3063, chance = 8 }, -- gold ring +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 40, attack = 40 }, + { name = "combat", interval = 2000, chance = 11, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -110, length = 5, spread = 0, effect = CONST_ME_YELLOWENERGY, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -70, maxDamage = -110, range = 7, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = true }, +} + +monster.defenses = { + defense = 45, + armor = 29, + mitigation = 0.88, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_HEALING, minDamage = 40, maxDamage = 70, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 25 }, + { type = COMBAT_EARTHDAMAGE, percent = 80 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/ice_golem.lua b/data-canary/monster/constructs/ice_golem.lua new file mode 100644 index 00000000000..e5c226bae5c --- /dev/null +++ b/data-canary/monster/constructs/ice_golem.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Ice Golem") +local monster = {} + +monster.description = "an ice golem" +monster.experience = 295 +monster.outfit = { + lookType = 261, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 326 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Formorgar Glacier, Formorgar Mines, Nibelor Ice Cave, Ice Witch Temple, \z + Deeper Banuta, Crystal Caves, Chyllfroest.", +} + +monster.health = 385 +monster.maxHealth = 385 +monster.race = "undead" +monster.corpse = 7282 +monster.speed = 95 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 5, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 50, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Chrrr.", yell = false }, + { text = "Crrrrk.", yell = false }, + { text = "Gnarr.", yell = false }, +} + +monster.loot = { + { name = "black pearl", chance = 1500 }, + { name = "small diamond", chance = 750 }, + { name = "small sapphire", chance = 578 }, + { name = "gold coin", chance = 100000, maxCount = 111 }, + { name = "ice rapier", chance = 350 }, + { name = "strange helmet", chance = 350 }, + { name = "shard", chance = 200 }, + { id = 7441, chance = 5000 }, -- ice cube + { name = "crystal sword", chance = 600 }, + { name = "strong health potion", chance = 2500 }, + { name = "strong mana potion", chance = 3000 }, + { name = "glacier mask", chance = 200 }, + { name = "frosty heart", chance = 14500 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -220 }, + { name = "speed", interval = 1000, chance = 13, speedChange = -800, length = 8, spread = 0, effect = CONST_ME_ENERGYHIT, target = false, duration = 20000 }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -85, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, + { name = "ice golem skill reducer", interval = 2000, chance = 10, target = false }, +} + +monster.defenses = { + defense = 26, + armor = 47, + mitigation = 0.70, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = -20 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/infected_weeper.lua b/data-canary/monster/constructs/infected_weeper.lua new file mode 100644 index 00000000000..11f27871524 --- /dev/null +++ b/data-canary/monster/constructs/infected_weeper.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Infected Weeper") +local monster = {} + +monster.description = "an infected weeper" +monster.experience = 1200 +monster.outfit = { + lookType = 489, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 897 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Warzone 2.", +} + +monster.health = 3000 +monster.maxHealth = 3000 +monster.race = "fire" +monster.corpse = 15906 +monster.speed = 170 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + random = 20, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 5, + color = 157, +} + +monster.summon = { + maxSummons = 6, + summons = { + { name = "Parasite", chance = 10, interval = 2000, count = 6 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Moooaaan", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 198 }, + { name = "platinum coin", chance = 100000, maxCount = 7 }, + { id = 12600, chance = 1460 }, -- coal +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -280 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -250, maxDamage = -700, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -250, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = -800, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 }, +} + +monster.defenses = { + defense = 45, + armor = 76, + mitigation = 2.19, + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 50 }, + { type = COMBAT_ENERGYDAMAGE, percent = 25 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 30 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/iron_servant.lua b/data-canary/monster/constructs/iron_servant.lua new file mode 100644 index 00000000000..ba10d7ac99f --- /dev/null +++ b/data-canary/monster/constructs/iron_servant.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Iron Servant") +local monster = {} + +monster.description = "an iron servant" +monster.experience = 210 +monster.outfit = { + lookType = 395, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 700 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 30, + Stars = 2, + Occurrence = 3, + Locations = "Edron.", +} + +monster.health = 350 +monster.maxHealth = 350 +monster.race = "venom" +monster.corpse = 12497 +monster.speed = 95 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 50, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Error. LOAD 'PROGRAM',8,1", yell = false }, + { text = "Remain. Obedient.", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 82000, maxCount = 55 }, + { name = "halberd", chance = 1000 }, + { name = "gear wheel", chance = 4840 }, + { id = 8894, chance = 200 }, -- heavily rusted armor + { name = "slime mould", chance = 310 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -60, range = 7, shootEffect = CONST_ANI_SMALLSTONE, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_STUN, target = true, duration = 2000 }, +} + +monster.defenses = { + defense = 15, + armor = 17, + mitigation = 0.62, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 25 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/iron_servant_replica.lua b/data-canary/monster/constructs/iron_servant_replica.lua new file mode 100644 index 00000000000..a0fa2c74c74 --- /dev/null +++ b/data-canary/monster/constructs/iron_servant_replica.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Iron Servant Replica") +local monster = {} + +monster.description = "an iron servant replica" +monster.experience = 210 +monster.outfit = { + lookType = 395, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1325 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Replica Dungeon", +} + +monster.health = 1000 +monster.maxHealth = 1000 +monster.race = "venom" +monster.corpse = 12494 +monster.speed = 95 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 8775, chance = 4840 }, -- gear wheel + { id = 3031, chance = 82190, maxCount = 55 }, -- gold coin + { id = 266, chance = 1980 }, -- health potion + { id = 3269, chance = 1000 }, -- halberd + { id = 12601, chance = 310 }, -- slime mould +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 20, attack = 30 }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -60, range = 7, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "drunk", interval = 2000, chance = 14, range = 7, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_STUN, target = false, duration = 2000 }, +} + +monster.defenses = { + defense = 45, + armor = 17, + mitigation = 0.62, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 25 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType.onSpawn = function(monster) + local chance = math.random(100) + if Game.getStorageValue(Storage.Quest.U11_02.ForgottenKnowledge.MechanismDiamond) >= 1 and Game.getStorageValue(Storage.Quest.U11_02.ForgottenKnowledge.MechanismGolden) >= 1 then + if chance > 30 then + local monsterType = math.random(2) == 1 and "diamond servant replica" or "golden servant replica" + Game.createMonster(monsterType, monster:getPosition(), false, true) + monster:remove() + end + return + end + + if Game.getStorageValue(Storage.Quest.U11_02.ForgottenKnowledge.MechanismDiamond) >= 1 and chance > 30 then + Game.createMonster("diamond servant replica", monster:getPosition(), false, true) + monster:remove() + return + end + + if Game.getStorageValue(Storage.Quest.U11_02.ForgottenKnowledge.MechanismGolden) >= 1 and chance > 30 then + Game.createMonster("golden servant replica", monster:getPosition(), false, true) + monster:remove() + end +end + +mType:register(monster) diff --git a/data-canary/monster/constructs/lava_golem.lua b/data-canary/monster/constructs/lava_golem.lua new file mode 100644 index 00000000000..81c31e104ee --- /dev/null +++ b/data-canary/monster/constructs/lava_golem.lua @@ -0,0 +1,145 @@ +local mType = Game.createMonsterType("Lava Golem") +local monster = {} + +monster.description = "a lava golem" +monster.experience = 7900 +monster.outfit = { + lookType = 491, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 884 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Warzone 2.", +} + +monster.health = 9000 +monster.maxHealth = 9000 +monster.race = "fire" +monster.corpse = 15988 +monster.speed = 210 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 80, + random = 20, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 10, + color = 206, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grrrrunt", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 199 }, + { name = "platinum coin", chance = 100000, maxCount = 11 }, + { name = "yellow gem", chance = 6480 }, + { id = 3039, chance = 1180 }, -- red gem + { name = "wand of inferno", chance = 2950 }, + { name = "fire sword", chance = 1710 }, + { name = "fire axe", chance = 1560 }, + { name = "crown shield", chance = 1180 }, + { name = "iron ore", chance = 11570 }, + { name = "white piece of cloth", chance = 4810 }, + { name = "red piece of cloth", chance = 3530 }, + { name = "yellow piece of cloth", chance = 7230 }, + { name = "strong health potion", chance = 18830, maxCount = 2 }, + { name = "strong mana potion", chance = 18150, maxCount = 2 }, + { name = "great mana potion", chance = 16030, maxCount = 2 }, + { name = "mana potion", chance = 20720, maxCount = 2 }, + { name = "magma amulet", chance = 2900 }, + { name = "magma boots", chance = 2650 }, + { name = "magma coat", chance = 430 }, + { name = "ultimate health potion", chance = 15390 }, + { name = "spellbook of mind control", chance = 450 }, + { name = "fiery heart", chance = 13510 }, + { name = "wand of everblazing", chance = 1390 }, + { name = "violet crystal shard", chance = 6200 }, + { name = "green crystal splinter", chance = 13990, maxCount = 2 }, + { name = "red crystal fragment", chance = 10990 }, + { name = "magma clump", chance = 15370, maxCount = 2 }, + { name = "blazing bone", chance = 15200 }, + { name = "prismatic bolt", chance = 12580, maxCount = 5 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -700, length = 8, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, + { name = "lava golem soulfire", interval = 2000, chance = 15, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -220, maxDamage = -350, radius = 4, effect = CONST_ME_FIREAREA, target = true }, + { name = "speed", interval = 2000, chance = 10, speedChange = -800, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -280, maxDamage = -350, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, +} + +monster.defenses = { + defense = 60, + armor = 84, + mitigation = 2.51, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 30 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 35 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/magma_crawler.lua b/data-canary/monster/constructs/magma_crawler.lua new file mode 100644 index 00000000000..bf5f7ac4feb --- /dev/null +++ b/data-canary/monster/constructs/magma_crawler.lua @@ -0,0 +1,144 @@ +local mType = Game.createMonsterType("Magma Crawler") +local monster = {} + +monster.description = "a magma crawler" +monster.experience = 3900 +monster.outfit = { + lookType = 492, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 885 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Warzone 2.", +} + +monster.health = 4800 +monster.maxHealth = 4800 +monster.race = "fire" +monster.corpse = 15991 +monster.speed = 230 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 5, +} + +monster.strategiesTarget = { + nearest = 80, + random = 20, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 300, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 5, + color = 200, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Crrroak!", yell = false }, +} + +monster.loot = { + { name = "small diamond", chance = 8800, maxCount = 3 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 99 }, + { name = "platinum coin", chance = 100000, maxCount = 5 }, + { name = "yellow gem", chance = 1030 }, + { id = 3051, chance = 1650 }, -- energy ring + { name = "fire sword", chance = 1680 }, + { name = "black shield", chance = 1550 }, + { name = "iron ore", chance = 4280 }, + { name = "white piece of cloth", chance = 2310 }, + { name = "red piece of cloth", chance = 930 }, + { name = "yellow piece of cloth", chance = 2980 }, + { name = "great mana potion", chance = 6500 }, + { name = "great health potion", chance = 7270 }, + { name = "magma amulet", chance = 3120 }, + { name = "magma boots", chance = 1820 }, + { name = "wand of draconia", chance = 4280 }, + { name = "fiery heart", chance = 7810 }, + { id = 12600, chance = 1675 }, -- coal + { name = "crystalline arrow", chance = 5950, maxCount = 10 }, + { name = "wand of everblazing", chance = 690 }, + { name = "blue crystal shard", chance = 3930, maxCount = 2 }, + { name = "brown crystal splinter", chance = 8500, maxCount = 2 }, + { name = "green crystal fragment", chance = 7000 }, + { name = "magma clump", chance = 11600 }, + { name = "blazing bone", chance = 11500 }, + { name = "blazing bone", chance = 12220 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -203 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -1100, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, + { name = "magma crawler wave", interval = 2000, chance = 15, minDamage = -290, maxDamage = -800, target = false }, + { name = "magma crawler soulfire", interval = 2000, chance = 20, target = false }, + { name = "soulfire rune", interval = 2000, chance = 10, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -140, maxDamage = -180, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = -800, radius = 2, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, +} + +monster.defenses = { + defense = 45, + armor = 84, + mitigation = 2.51, + { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 25 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/metal_gargoyle.lua b/data-canary/monster/constructs/metal_gargoyle.lua new file mode 100644 index 00000000000..1cea2d7d8ac --- /dev/null +++ b/data-canary/monster/constructs/metal_gargoyle.lua @@ -0,0 +1,131 @@ +local mType = Game.createMonsterType("Metal Gargoyle") +local monster = {} + +monster.description = "a metal gargoyle" +monster.experience = 1278 +monster.outfit = { + lookType = 601, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1039 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Workshop Quarter, Glooth Factory, Underground Glooth Factory, Abandoned Sewers, \z + Oramond Dungeon (depending on Magistrate votes), Jaccus Maxxens Dungeon.", +} + +monster.health = 2100 +monster.maxHealth = 2100 +monster.race = "venom" +monster.corpse = 20976 +monster.speed = 95 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 5, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "clonk", yell = false }, + { text = "*stomp*", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 200 }, -- gold coin + { id = 21755, chance = 1490 }, -- bronze gear wheel + { id = 21193, chance = 17160 }, -- metal jaw + { id = 3035, chance = 43280, maxCount = 2 }, -- platinum coin + { id = 236, chance = 9700, maxCount = 2 }, -- strong health potion + { id = 237, chance = 9700, maxCount = 2 }, -- strong mana potion + { id = 21171, chance = 1490 }, -- metal bat + { id = 8082, chance = 1490 }, -- underworld rod + { id = 3051, chance = 2240 }, -- energy ring + { id = 3052, chance = 750 }, -- life ring + { id = 10310, chance = 2240 }, -- shiny stone + { id = 21169, chance = 1490 }, -- metal spats + { id = 21168, chance = 1490 }, -- alloy legs + { id = 8896, chance = 2990 }, -- slightly rusted armor +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 84, attack = 50 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -125, maxDamage = -230, length = 8, spread = 0, effect = CONST_ME_YELLOWENERGY, target = false }, + { name = "combat", interval = 2000, chance = 9, type = COMBAT_LIFEDRAIN, minDamage = -85, maxDamage = -150, range = 7, radius = 3, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, + { name = "metal gargoyle curse", interval = 2000, chance = 13, target = false }, +} + +monster.defenses = { + defense = 42, + armor = 60, + mitigation = 1.57, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 15 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 80 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/orewalker.lua b/data-canary/monster/constructs/orewalker.lua new file mode 100644 index 00000000000..3e1dc4deedd --- /dev/null +++ b/data-canary/monster/constructs/orewalker.lua @@ -0,0 +1,144 @@ +local mType = Game.createMonsterType("Orewalker") +local monster = {} + +monster.description = "an orewalker" +monster.experience = 5900 +monster.outfit = { + lookType = 490, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 883 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Warzone 3.", +} + +monster.health = 7200 +monster.maxHealth = 7200 +monster.race = "undead" +monster.corpse = 15911 +monster.speed = 190 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + random = 20, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "CLONK!", yell = true }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 98 }, + { name = "platinum coin", chance = 100000, maxCount = 10 }, + { name = "yellow gem", chance = 1030 }, + { id = 3097, chance = 4660 }, -- dwarven ring + { name = "knight legs", chance = 1910 }, + { name = "crown armor", chance = 370 }, + { name = "crown helmet", chance = 890 }, + { name = "iron ore", chance = 15000 }, + { name = "magic sulphur", chance = 3000 }, + { name = "titan axe", chance = 2600 }, + { name = "glorious axe", chance = 1870 }, + { name = "strong health potion", chance = 15600, maxCount = 2 }, + { name = "strong mana potion", chance = 14000, maxCount = 2 }, + { name = "great mana potion", chance = 14000, maxCount = 2 }, + { name = "mana potion", chance = 14000, maxCount = 4 }, + { name = "ultimate health potion", chance = 9500, maxCount = 2 }, + { name = "crystalline armor", chance = 560 }, + { name = "small topaz", chance = 16500, maxCount = 3 }, + { name = "shiny stone", chance = 13700 }, + { name = "sulphurous stone", chance = 20700 }, + { name = "wand of defiance", chance = 1300 }, + { name = "green crystal shard", chance = 8000 }, + { name = "blue crystal splinter", chance = 16000, maxCount = 2 }, + { name = "cyan crystal fragment", chance = 13000 }, + { name = "pulverized ore", chance = 20500 }, + { name = "vein of ore", chance = 15000 }, + { name = "prismatic bolt", chance = 15500, maxCount = 5 }, + { name = "crystal crossbow", chance = 300 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, + { name = "orewalker wave", interval = 2000, chance = 15, minDamage = -296, maxDamage = -700, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1500, length = 6, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -800, maxDamage = -1080, radius = 3, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_SMALLPLANTS, target = true }, + { name = "speed", interval = 2000, chance = 15, speedChange = -800, radius = 2, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, +} + +monster.defenses = { + defense = 45, + armor = 79, + mitigation = 2.31, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 25 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 65 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 25 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/rustheap_golem.lua b/data-canary/monster/constructs/rustheap_golem.lua new file mode 100644 index 00000000000..0828f732b2b --- /dev/null +++ b/data-canary/monster/constructs/rustheap_golem.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Rustheap Golem") +local monster = {} + +monster.description = "a rustheap golem" +monster.experience = 2100 +monster.outfit = { + lookType = 603, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1041 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Workshop Quarter, Glooth Factory, Underground Glooth Factory, \z + Oramond Dungeon (depending on Magistrate votes), Jaccus Maxxens Dungeon.", +} + +monster.health = 2800 +monster.maxHealth = 2800 +monster.race = "venom" +monster.corpse = 20984 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 5, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "*clatter*", yell = false }, + { text = "*krrk*", yell = false }, + { text = "*frzzp*", yell = false }, +} + +monster.loot = { + { id = 953, chance = 1950 }, -- nail + { id = 9016, chance = 5860 }, -- flask of rust remover + { id = 21196, chance = 14980 }, -- necromantic rust + { id = 3031, chance = 100000, maxCount = 290 }, -- gold coin + { id = 5880, chance = 330 }, -- iron ore + { id = 21755, chance = 1950 }, -- bronze gear wheel + { id = 3035, chance = 58310, maxCount = 3 }, -- platinum coin + { id = 3026, chance = 1300 }, -- white pearl + { id = 3027, chance = 1630 }, -- black pearl + { id = 236, chance = 10100, maxCount = 2 }, -- strong health potion + { id = 237, chance = 7170, maxCount = 2 }, -- strong mana potion + { id = 3279, chance = 3580 }, -- war hammer + { id = 7452, chance = 330 }, -- spiked squelcher + { id = 21171, chance = 330 }, -- metal bat + { id = 21170, chance = 2930 }, -- gearwheel chain + { id = 8896, chance = 5860 }, -- slightly rusted armor + { id = 8899, chance = 4230 }, -- slightly rusted legs +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 118, attack = 50 }, + { name = "rustheap golem electrify", interval = 2000, chance = 11, range = 7, target = false }, + { name = "frazzlemaw paralyze", interval = 2000, chance = 10, target = false }, + { name = "rustheap golem wave", interval = 2000, chance = 9, minDamage = -100, maxDamage = -210, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 40, + { name = "speed", interval = 2000, chance = 11, speedChange = 428, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 70 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/sandstone_scorpion.lua b/data-canary/monster/constructs/sandstone_scorpion.lua new file mode 100644 index 00000000000..36993a0a7ec --- /dev/null +++ b/data-canary/monster/constructs/sandstone_scorpion.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Sandstone Scorpion") +local monster = {} + +monster.description = "a sandstone scorpion" +monster.experience = 680 +monster.outfit = { + lookType = 398, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 705 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Horestis Tomb.", +} + +monster.health = 900 +monster.maxHealth = 900 +monster.race = "undead" +monster.corpse = 12512 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 60, + random = 40, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "*rattle*", yell = false }, + { text = "*tak tak*", yell = false }, + { text = "*tak tak tak*", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 92590, maxCount = 128 }, + { name = "small emerald", chance = 1100, maxCount = 2 }, + { name = "platinum coin", chance = 10750, maxCount = 2 }, + { name = "daramian mace", chance = 5100 }, + { name = "steel helmet", chance = 4620 }, + { name = "black shield", chance = 1820 }, + { name = "fist on a stick", chance = 220 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -193, condition = { type = CONDITION_POISON, totalDamage = 1000, interval = 4000 } }, +} + +monster.defenses = { + defense = 0, + armor = 42, + mitigation = 1.13, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 60, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 90 }, + { type = COMBAT_FIREDAMAGE, percent = 40 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/shrieking_cry-stal.lua b/data-canary/monster/constructs/shrieking_cry-stal.lua new file mode 100644 index 00000000000..ef5a6326393 --- /dev/null +++ b/data-canary/monster/constructs/shrieking_cry-stal.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Shrieking Cry-Stal") +local monster = {} + +monster.description = "a shrieking cry-stal" +monster.experience = 13560 +monster.outfit = { + lookType = 1560, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2278 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 5000, + FirstUnlock = 200, + SecondUnlock = 2000, + CharmsPoints = 100, + Stars = 5, + Occurrence = 0, + Locations = "Crystal Enigma", +} + +monster.health = 20650 +monster.maxHealth = 20650 +monster.race = "energy" +monster.corpse = 39331 +monster.speed = 207 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 3, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "La-la-la..AAAHHHH!!!", yell = false }, + { text = "SCREEECH...", yell = true }, +} + +monster.loot = { + { name = "Crystal Coin", chance = 23440, minCount = 1, maxCount = 2 }, + { name = "Great Spirit Potion", chance = 20760 }, + { name = "Cry-Stal", chance = 12560, minCount = 1, maxCount = 2 }, + { name = "Small Diamond", chance = 6020, minCount = 1, maxCount = 3 }, + { name = "Rusted Armor", chance = 5580 }, + { name = "Green Crystal Fragment", chance = 4290 }, + { name = "Terra Boots", chance = 4290 }, + { name = "Protection Amulet", chance = 2270 }, + { name = "Violet Gem", chance = 1250 }, + { name = "Gold Ring", chance = 600 }, + { name = "Green Gem", chance = 420 }, + { name = "Ring of the Sky", chance = 210 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 5000, chance = 47, type = COMBAT_ENERGYDAMAGE, minDamage = -650, maxDamage = -900, range = 6, shootEffect = CONST_ANI_ENERGYBALL }, + { name = "combat", interval = 3500, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -500, maxDamage = -700, radius = 6, effect = CONST_ME_MORTAREA, target = false }, + { name = "energy chain", interval = 2000, chance = 20, minDamage = -425, maxDamage = -550, range = 3, target = true }, + { name = "combat", interval = 3000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -700, maxDamage = -1000, length = 5, spread = 2, effect = CONST_ME_SOUND_PURPLE, target = false }, + { name = "fear", interval = 2000, chance = 1, target = true }, +} + +monster.defenses = { + defense = 110, + armor = 95, + mitigation = 2.45, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = -5 }, + { type = COMBAT_FIREDAMAGE, percent = 5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/stone_devourer.lua b/data-canary/monster/constructs/stone_devourer.lua new file mode 100644 index 00000000000..39c85402870 --- /dev/null +++ b/data-canary/monster/constructs/stone_devourer.lua @@ -0,0 +1,137 @@ +local mType = Game.createMonsterType("Stone Devourer") +local monster = {} + +monster.description = "a stone devourer" +monster.experience = 2900 +monster.outfit = { + lookType = 486, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 879 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Warzone 1.", +} + +monster.health = 4200 +monster.maxHealth = 4200 +monster.race = "undead" +monster.corpse = 15865 +monster.speed = 150 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 1, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Rumble!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "platinum coin", chance = 92000, maxCount = 7 }, + { name = "stone skin amulet", chance = 2270 }, + { id = 3097, chance = 2840 }, -- dwarven ring + { name = "giant sword", chance = 570 }, + { name = "crystal mace", chance = 850 }, + { name = "war axe", chance = 920 }, + { name = "sapphire hammer", chance = 1490 }, + { name = "spiked squelcher", chance = 1490 }, + { name = "glorious axe", chance = 3340 }, + { name = "strong health potion", chance = 13840, maxCount = 2 }, + { name = "strong mana potion", chance = 14900, maxCount = 2 }, + { name = "great mana potion", chance = 15610, maxCount = 2 }, + { name = "mana potion", chance = 15050, maxCount = 2 }, + { name = "ultimate health potion", chance = 14410 }, + { id = 12600, chance = 11360 }, -- coal + { name = "ancient stone", chance = 12850 }, + { name = "crystalline arrow", chance = 9940, maxCount = 10 }, + { name = "green crystal splinter", chance = 6960 }, + { name = "cyan crystal fragment", chance = 6810 }, + { name = "stone nose", chance = 18679 }, + { name = "crystalline spikes", chance = 16320 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -990 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -230, maxDamage = -460, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_STONES, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -650, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -260, length = 5, spread = 0, effect = CONST_ME_STONES, target = false }, +} + +monster.defenses = { + defense = 35, + armor = 75, + mitigation = 2.31, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 30 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = 30 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/stone_golem.lua b/data-canary/monster/constructs/stone_golem.lua new file mode 100644 index 00000000000..8acd17a21f0 --- /dev/null +++ b/data-canary/monster/constructs/stone_golem.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Stone Golem") +local monster = {} + +monster.description = "a stone golem" +monster.experience = 160 +monster.outfit = { + lookType = 67, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 67 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Maze of Lost Souls, in and around Ashta daramai, Formorgar Mines, \z + Mad Technomancer room, Dark Cathedral, Demona, Goroma, Tarpit Tomb, Peninsula Tomb, \z + Deeper Banuta, Forbidden Lands, Beregar Mines, Farmine Mines, Drillworm Caves, 2 caves on Hrodmir, \z + Orc Fortress (single spawn) and Medusa Tower.", +} + +monster.health = 270 +monster.maxHealth = 270 +monster.race = "undead" +monster.corpse = 6005 +monster.speed = 90 +monster.manaCost = 590 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "small stone", chance = 13890, maxCount = 4 }, + { id = 3007, chance = 120 }, -- crystal ring + { name = "gold coin", chance = 90000, maxCount = 40 }, + { id = 3039, chance = 30 }, -- red gem + { id = 3050, chance = 5070 }, -- power ring + { name = "carlin sword", chance = 2500 }, + { name = "iron ore", chance = 1980 }, + { name = "ancient stone", chance = 1020 }, + { name = "shiny stone", chance = 760 }, + { name = "sulphurous stone", chance = 10370 }, + { name = "piece of marble rock", chance = 380 }, + { id = 12600, chance = 550 }, -- coal +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, +} + +monster.defenses = { + defense = 20, + armor = 30, + mitigation = 0.64, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/walker.lua b/data-canary/monster/constructs/walker.lua new file mode 100644 index 00000000000..371627daa1e --- /dev/null +++ b/data-canary/monster/constructs/walker.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Walker") +local monster = {} + +monster.description = "a walker" +monster.experience = 2200 +monster.outfit = { + lookType = 605, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1043 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "A few spawns in the Underground Glooth Factory, Glooth Factory, and Rathleton Sewers.", +} + +monster.health = 3000 +monster.maxHealth = 3000 +monster.race = "venom" +monster.corpse = 20972 +monster.speed = 150 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 5, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "*clop clop*", yell = false }, + { text = "*slosh*", yell = false }, +} + +monster.loot = { + { id = 21198, chance = 3548 }, -- metal toe + { id = 21170, chance = 1490 }, -- gearwheel chain + { id = 3031, chance = 100000, maxCount = 200 }, -- gold coin + { id = 3035, chance = 51610, maxCount = 3 }, -- platinum coin + { id = 9057, chance = 16130, maxCount = 3 }, -- small topaz + { id = 3032, chance = 6450, maxCount = 2 }, -- small emerald + { id = 7642, chance = 3230 }, -- great spirit potion + { id = 239, chance = 3230 }, -- great health potion + { id = 238, chance = 2300 }, -- great mana potion + { id = 21169, chance = 1780 }, -- metal spats + { id = 3554, chance = 450 }, -- steel boots +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 50 }, + { name = "walker skill reducer", interval = 2000, chance = 21, target = false }, + { name = "combat", interval = 2000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -125, maxDamage = -245, length = 8, spread = 0, effect = CONST_ME_EXPLOSIONHIT, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 47, + mitigation = 1.62, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 50 }, + { type = COMBAT_FIREDAMAGE, percent = 35 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = 40 }, + { type = COMBAT_DEATHDAMAGE, percent = 15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/war_golem.lua b/data-canary/monster/constructs/war_golem.lua new file mode 100644 index 00000000000..37bed1e4c29 --- /dev/null +++ b/data-canary/monster/constructs/war_golem.lua @@ -0,0 +1,151 @@ +local mType = Game.createMonsterType("War Golem") +local monster = {} + +monster.description = "a war golem" +monster.experience = 2310 +monster.outfit = { + lookType = 326, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 533 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Factory Quarter.", +} + +monster.health = 4300 +monster.maxHealth = 4300 +monster.race = "venom" +monster.corpse = 9092 +monster.speed = 160 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 3, + color = 180, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Azerus barada nikto!", yell = false }, + { text = "Klonk klonk klonk", yell = false }, + { text = "Engaging Enemy!", yell = false }, + { text = "Threat level processed.", yell = false }, + { text = "Charging weapon systems!", yell = false }, + { text = "Auto repair in progress.", yell = false }, + { text = "The battle is joined!", yell = false }, + { text = "Termination initialized!", yell = false }, + { text = "Rrrtttarrrttarrrtta", yell = false }, + { text = "Eliminated", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 37500, maxCount = 90 }, -- gold coin + { id = 3031, chance = 375000, maxCount = 80 }, -- gold coin + { id = 953, chance = 5260, maxCount = 5 }, -- nail + { id = 3265, chance = 5500 }, -- two handed sword + { id = 3410, chance = 9000 }, -- plate shield + { id = 3282, chance = 7000 }, -- morning star + { id = 3413, chance = 6500 }, -- battle shield + { id = 7643, chance = 10080 }, -- ultimate health potion + { id = 238, chance = 8860 }, -- great mana potion + { id = 5880, chance = 1920 }, -- iron ore + { id = 7439, chance = 900 }, -- berserk potion + { id = 3326, chance = 6400 }, -- epee + { id = 8895, chance = 260 }, -- rusted armor + { id = 3093, chance = 810 }, -- club ring + { id = 3097, chance = 1210 }, -- dwarven ring + { id = 9067, chance = 130 }, -- crystal of power + { id = 9065, chance = 1080 }, -- crystal pedestal + { id = 820, chance = 90 }, -- lightning boots + { id = 3554, chance = 620 }, -- steel boots + { id = 7403, chance = 50 }, -- berserker + { id = 7422, chance = 120 }, -- jade hammer + { id = 7428, chance = 770 }, -- bonebreaker + { id = 3061, chance = 1000 }, -- life crystal + { id = 12305, chance = 100 }, -- tin key +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -550 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -165, maxDamage = -220, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, + { name = "outfit", interval = 2000, chance = 1, range = 7, target = false, duration = 3000, outfitMonster = "skeleton" }, + { name = "war golem electrify", interval = 2000, chance = 15, range = 1, target = false }, + { name = "war golem skill reducer", interval = 2000, chance = 10, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 35, + mitigation = 1.18, + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 50 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 30 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/weeper.lua b/data-canary/monster/constructs/weeper.lua new file mode 100644 index 00000000000..a8481f48d02 --- /dev/null +++ b/data-canary/monster/constructs/weeper.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Weeper") +local monster = {} + +monster.description = "a weeper" +monster.experience = 5800 +monster.outfit = { + lookType = 489, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 882 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Warzone 2.", +} + +monster.health = 6800 +monster.maxHealth = 6800 +monster.race = "fire" +monster.corpse = 15907 +monster.speed = 170 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + random = 20, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 5, + color = 157, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Moooaaan", yell = false }, +} + +monster.loot = { + { name = "small ruby", chance = 15690, maxCount = 3 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 99 }, + { id = 3035, chance = 100000, maxCount = 7 }, -- platinum coin + { name = "fire sword", chance = 3280 }, + { name = "fire axe", chance = 2150 }, + { name = "great mana potion", chance = 14800, maxCount = 2 }, + { name = "magma legs", chance = 790 }, + { name = "magma coat", chance = 790 }, + { name = "ultimate health potion", chance = 15440, maxCount = 2 }, + { name = "fiery heart", chance = 13570 }, + { id = 12600, chance = 1320 }, -- coal + { name = "wand of everblazing", chance = 1480 }, + { name = "violet crystal shard", chance = 5430 }, + { name = "brown crystal splinter", chance = 12100, maxCount = 2 }, + { name = "red crystal fragment", chance = 8880 }, + { name = "magma clump", chance = 13240 }, + { name = "blazing bone", chance = 14890 }, + { name = "eye of a weeper", chance = 15870 }, + { name = "prismatic bolt", chance = 10900, maxCount = 5 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -1000, length = 8, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, + { name = "combat", interval = 3000, chance = 100, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -250, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = -600, length = 5, spread = 0, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 }, +} + +monster.defenses = { + defense = 50, + armor = 76, + mitigation = 2.19, + { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_RED }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 30 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/constructs/worker_golem.lua b/data-canary/monster/constructs/worker_golem.lua new file mode 100644 index 00000000000..5eccd4cabdf --- /dev/null +++ b/data-canary/monster/constructs/worker_golem.lua @@ -0,0 +1,138 @@ +local mType = Game.createMonsterType("Worker Golem") +local monster = {} + +monster.description = "a worker golem" +monster.experience = 1250 +monster.outfit = { + lookType = 304, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 503 +monster.Bestiary = { + class = "Construct", + race = BESTY_RACE_CONSTRUCT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Factory Quarter.", +} + +monster.health = 1470 +monster.maxHealth = 1470 +monster.race = "venom" +monster.corpse = 8887 +monster.speed = 80 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 3, + color = 35, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "INTRUDER ALARM!", yell = true }, + { text = "klonk klonk klonk", yell = false }, + { text = "Rrrtttarrrttarrrtta", yell = false }, + { text = "Awaiting orders.", yell = false }, + { text = "Secret objective complete.", yell = false }, +} + +monster.loot = { + { name = "small diamond", chance = 1000, maxCount = 2 }, + { name = "gold coin", chance = 43000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 40 }, + { name = "might ring", chance = 370 }, + { name = "life crystal", chance = 890 }, + { name = "war hammer", chance = 920 }, + { name = "iron ore", chance = 1001 }, + { name = "bonebreaker", chance = 130 }, + { name = "berserk potion", chance = 820 }, + { name = "spiked squelcher", chance = 1003 }, + { name = "great mana potion", chance = 1470 }, + { name = "great health potion", chance = 2100 }, + { name = "nail", chance = 5000, maxCount = 5 }, + { name = "great spirit potion", chance = 830 }, + { name = "gear wheel", chance = 1007 }, + { id = 8895, chance = 200 }, -- rusted armor + { id = 8898, chance = 50 }, -- rusted legs + { id = 9066, chance = 2270 }, -- crystal pedestal + { name = "gear crystal", chance = 2270 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -125, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, +} + +monster.defenses = { + defense = 35, + armor = 35, + mitigation = 1.32, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 50 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/brittle_skeleton.lua b/data-canary/monster/dawnport/brittle_skeleton.lua new file mode 100644 index 00000000000..b7a073a0038 --- /dev/null +++ b/data-canary/monster/dawnport/brittle_skeleton.lua @@ -0,0 +1,106 @@ +local mType = Game.createMonsterType("Brittle Skeleton") +local monster = {} + +monster.description = "a brittle skeleton" +monster.experience = 35 +monster.outfit = { + lookType = 33, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 50 +monster.maxHealth = 50 +monster.race = "undead" +monster.corpse = 5972 +monster.speed = 73 +monster.manaCost = 300 + +monster.changeTarget = { + interval = 2000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3115, chance = 49870 }, -- bone + { id = 3411, chance = 2920 }, -- brass shield + { id = 3031, chance = 100000, maxCount = 5 }, -- gold coin + { id = 3276, chance = 4770 }, -- hatchet + { id = 3286, chance = 4770 }, -- mace + { id = 11481, chance = 9280 }, -- pelvis bone + { id = 3378, chance = 2920 }, -- studded armor + { id = 3264, chance = 6100 }, -- sword + { id = 2920, chance = 10610 }, -- torch + { id = 3367, chance = 3980 }, -- viking helmet +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 18 }, + { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -7, maxDamage = -13, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, target = false }, +} + +monster.defenses = { + defense = 9, + armor = 2, + mitigation = 0.23, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/crazed_dwarf.lua b/data-canary/monster/dawnport/crazed_dwarf.lua new file mode 100644 index 00000000000..cef7e991928 --- /dev/null +++ b/data-canary/monster/dawnport/crazed_dwarf.lua @@ -0,0 +1,104 @@ +local mType = Game.createMonsterType("Crazed Dwarf") +local monster = {} + +monster.description = "a crazed dwarf" +monster.experience = 50 +monster.outfit = { + lookType = 69, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 105 +monster.maxHealth = 105 +monster.race = "blood" +monster.corpse = 6007 +monster.speed = 78 +monster.manaCost = 320 + +monster.changeTarget = { + interval = 2000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3274, chance = 12860 }, -- axe + { id = 3031, chance = 100000, maxCount = 4 }, -- gold coin + { id = 3276, chance = 25710 }, -- hatchet + { id = 3559, chance = 8570 }, -- leather legs + { id = 3505, chance = 4290 }, -- letter + { id = 3456, chance = 8570 }, -- pick + { id = 3410, chance = 17140 }, -- plate shield + { id = 3378, chance = 8570 }, -- studded armor + { id = 3723, chance = 47140 }, -- white mushroom +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 26 }, +} + +monster.defenses = { + defense = 10, + armor = 9, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/dawn_bat.lua b/data-canary/monster/dawnport/dawn_bat.lua new file mode 100644 index 00000000000..c67f0c62bc2 --- /dev/null +++ b/data-canary/monster/dawnport/dawn_bat.lua @@ -0,0 +1,96 @@ +local mType = Game.createMonsterType("Dawn Bat") +local monster = {} + +monster.description = "a dawn bat" +monster.experience = 10 +monster.outfit = { + lookType = 122, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 30 +monster.maxHealth = 30 +monster.race = "blood" +monster.corpse = 6053 +monster.speed = 100 +monster.manaCost = 250 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 3, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 5120, maxCount = 3 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8 }, +} + +monster.defenses = { + defense = 5, + armor = 1, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/dawn_scorpion.lua b/data-canary/monster/dawnport/dawn_scorpion.lua new file mode 100644 index 00000000000..269c0877ae6 --- /dev/null +++ b/data-canary/monster/dawnport/dawn_scorpion.lua @@ -0,0 +1,97 @@ +local mType = Game.createMonsterType("Dawn Scorpion") +local monster = {} + +monster.description = "a dawn scorpion" +monster.experience = 45 +monster.outfit = { + lookType = 43, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 65 +monster.maxHealth = 65 +monster.race = "venom" +monster.corpse = 5988 +monster.speed = 72 +monster.manaCost = 310 + +monster.changeTarget = { + interval = 2000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 5, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 4 }, -- gold coin +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 20, attack = 20, condition = { type = CONDITION_POISON, totalDamage = 40, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -10, maxDamage = -20, range = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, +} + +monster.defenses = { + defense = 5, + armor = 11, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/dawnfly.lua b/data-canary/monster/dawnport/dawnfly.lua new file mode 100644 index 00000000000..240be3c7934 --- /dev/null +++ b/data-canary/monster/dawnport/dawnfly.lua @@ -0,0 +1,105 @@ +local mType = Game.createMonsterType("Dawnfly") +local monster = {} + +monster.description = "a dawnfly" +monster.experience = 35 +monster.outfit = { + lookType = 528, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 90 +monster.maxHealth = 90 +monster.race = "venom" +monster.corpse = 21454 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 21470, chance = 21360, maxCount = 16 }, -- simple arrow + { id = 3379, chance = 4140 }, -- doublet + { id = 17458, chance = 11940 }, -- damselfly wing + { id = 17463, chance = 10130 }, -- damselfly eye + { id = 3031, chance = 100000, maxCount = 12 }, -- gold coin + { id = 266, chance = 3630 }, -- health potion + { id = 268, chance = 3800 }, -- mana potion + { id = 3448, chance = 14500, maxCount = 8 }, -- poison arrow +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 16, condition = { type = CONDITION_POISON, totalDamage = 8, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -4, maxDamage = -8, range = 7, shootEffect = CONST_ANI_POISONARROW, target = false }, +} + +monster.defenses = { + defense = 2, + armor = 3, + mitigation = 0.25, + { name = "speed", interval = 2000, chance = 11, speedChange = 238, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/juvenile_cyclops.lua b/data-canary/monster/dawnport/juvenile_cyclops.lua new file mode 100644 index 00000000000..d06e36d5d7b --- /dev/null +++ b/data-canary/monster/dawnport/juvenile_cyclops.lua @@ -0,0 +1,107 @@ +local mType = Game.createMonsterType("Juvenile Cyclops") +local monster = {} + +monster.description = "a juvenile cyclops" +monster.experience = 130 +monster.outfit = { + lookType = 22, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 260 +monster.maxHealth = 260 +monster.race = "blood" +monster.corpse = 5962 +monster.speed = 80 +monster.manaCost = 490 + +monster.changeTarget = { + interval = 2000, + chance = 5, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3358, chance = 10810 }, -- chain armor + { id = 3352, chance = 12160 }, -- chain helmet + { id = 9657, chance = 4050 }, -- cyclops toe + { id = 3031, chance = 100000, maxCount = 25 }, -- gold coin + { id = 3276, chance = 9460 }, -- hatchet + { id = 3286, chance = 18920 }, -- mace + { id = 3577, chance = 30070 }, -- meat + { id = 3410, chance = 1350 }, -- plate shield + { id = 3362, chance = 9460 }, -- studded legs + { id = 3264, chance = 21620 }, -- sword + { id = 3012, chance = 1350 }, -- wolf tooth chain +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 20, attack = 30 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -20, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, +} + +monster.defenses = { + defense = 22, + armor = 11, + mitigation = 0.62, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/lesser_fire_devil.lua b/data-canary/monster/dawnport/lesser_fire_devil.lua new file mode 100644 index 00000000000..25f5765eefb --- /dev/null +++ b/data-canary/monster/dawnport/lesser_fire_devil.lua @@ -0,0 +1,102 @@ +local mType = Game.createMonsterType("Lesser Fire Devil") +local monster = {} + +monster.description = "a lesser fire devil" +monster.experience = 110 +monster.outfit = { + lookType = 40, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 175 +monster.maxHealth = 175 +monster.race = "blood" +monster.corpse = 5985 +monster.speed = 75 +monster.manaCost = 530 + +monster.changeTarget = { + interval = 2000, + chance = 5, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3147, chance = 21050 }, -- blank rune + { id = 3031, chance = 100000, maxCount = 10 }, -- gold coin + { id = 11513, chance = 22810 }, -- small pitchfork + { id = 2920, chance = 1750 }, -- torch + { id = 2920, chance = 1750 }, -- torch +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 25 }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_FIREDAMAGE, minDamage = -24, maxDamage = -36, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_FIREDAMAGE, minDamage = -4, maxDamage = -12, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, +} + +monster.defenses = { + defense = 9, + armor = 9, + mitigation = 0.38, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 35 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/meadow_strider.lua b/data-canary/monster/dawnport/meadow_strider.lua new file mode 100644 index 00000000000..f7ede1f4203 --- /dev/null +++ b/data-canary/monster/dawnport/meadow_strider.lua @@ -0,0 +1,108 @@ +local mType = Game.createMonsterType("Meadow Strider") +local monster = {} + +monster.description = "a meadow strider" +monster.experience = 50 +monster.outfit = { + lookType = 530, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 100 +monster.maxHealth = 100 +monster.race = "blood" +monster.corpse = 21450 +monster.speed = 68 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3003, chance = 4530 }, -- rope + { id = 3031, chance = 100000, maxCount = 10 }, -- gold coin + { id = 3492, chance = 14280, maxCount = 2 }, -- worm + { id = 3578, chance = 25180, maxCount = 2 }, -- fish + { id = 3577, chance = 25250 }, -- meat + { id = 17461, chance = 6060 }, -- marsh stalker beak + { id = 647, chance = 160 }, -- seeds + { id = 17462, chance = 8980 }, -- marsh stalker feather + { id = 3285, chance = 7640 }, -- longsword + { id = 3286, chance = 8310 }, -- mace + { id = 3276, chance = 6660 }, -- hatchet +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 13 }, + { name = "combat", interval = 2000, chance = 11, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -10, range = 7, shootEffect = CONST_ANI_SMALLSTONE, effect = CONST_ME_EXPLOSIONAREA, target = false }, +} + +monster.defenses = { + defense = 2, + armor = 1, + -- mitigation = ???, + { name = "speed", interval = 2000, chance = 13, speedChange = 192, effect = CONST_ME_HITAREA, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/mountain_troll.lua b/data-canary/monster/dawnport/mountain_troll.lua new file mode 100644 index 00000000000..fab1ebf82b5 --- /dev/null +++ b/data-canary/monster/dawnport/mountain_troll.lua @@ -0,0 +1,108 @@ +local mType = Game.createMonsterType("Mountain Troll") +local monster = {} + +monster.description = "a mountain troll" +monster.experience = 12 +monster.outfit = { + lookType = 15, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "MorrisTrollDeath", +} + +monster.health = 30 +monster.maxHealth = 30 +monster.race = "blood" +monster.corpse = 5960 +monster.speed = 55 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 9689, chance = 920 }, -- bunch of troll hair + { id = 3031, chance = 100000, maxCount = 8 }, -- gold coin + { id = 3268, chance = 3590 }, -- hand axe + { id = 3361, chance = 4060 }, -- leather armor + { id = 3577, chance = 27980 }, -- meat + { id = 3272, chance = 3470 }, -- rapier + { id = 3003, chance = 7870 }, -- rope + { id = 3277, chance = 6800 }, -- spear + { id = 3336, chance = 3510 }, -- studded club +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 9 }, +} + +monster.defenses = { + defense = 2, + armor = 0, + mitigation = 0.10, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -15 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/muglex_clan_assassin.lua b/data-canary/monster/dawnport/muglex_clan_assassin.lua new file mode 100644 index 00000000000..1aada7ea8ef --- /dev/null +++ b/data-canary/monster/dawnport/muglex_clan_assassin.lua @@ -0,0 +1,104 @@ +local mType = Game.createMonsterType("Muglex Clan Assassin") +local monster = {} + +monster.description = "a muglex clan assassin" +monster.experience = 48 +monster.outfit = { + lookType = 296, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 75 +monster.maxHealth = 75 +monster.race = "blood" +monster.corpse = 6002 +monster.speed = 70 +monster.manaCost = 0 +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3115, chance = 10760 }, -- bone + { id = 3337, chance = 4890 }, -- bone club + { id = 3267, chance = 18090 }, -- dagger + { id = 3578, chance = 11000, maxCount = 2 }, -- fish + { id = 3031, chance = 100000, maxCount = 18 }, -- gold coin + { id = 3361, chance = 6460 }, -- leather armor + { id = 3355, chance = 8070 }, -- leather helmet + { id = 3120, chance = 6850 }, -- mouldy cheese + { id = 3294, chance = 9780 }, -- short sword + { id = 3462, chance = 9540 }, -- small axe + { id = 1781, chance = 11980, maxCount = 3 }, -- small stone + { id = 3378, chance = 1710 }, -- studded armor +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 15 }, + { name = "drunk", interval = 2000, chance = 11, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false, duration = 3000 }, + { name = "combat", interval = 2000, chance = 9, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -30, range = 6, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, +} + +monster.defenses = { + defense = 5, + armor = 3, + { name = "invisible", interval = 2000, chance = 11, effect = CONST_ME_MAGIC_BLUE }, + { name = "speed", interval = 2000, chance = 10, speedChange = 145, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/muglex_clan_footman.lua b/data-canary/monster/dawnport/muglex_clan_footman.lua new file mode 100644 index 00000000000..2695c29aea9 --- /dev/null +++ b/data-canary/monster/dawnport/muglex_clan_footman.lua @@ -0,0 +1,111 @@ +local mType = Game.createMonsterType("Muglex Clan Footman") +local monster = {} + +monster.description = "a muglex clan footman" +monster.experience = 25 +monster.outfit = { + lookType = 61, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "MorrisGoblinDeath", +} + +monster.health = 50 +monster.maxHealth = 50 +monster.race = "blood" +monster.corpse = 6002 +monster.speed = 60 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3115, chance = 1410 }, -- bone + { id = 3337, chance = 9440 }, -- bone club + { id = 3267, chance = 17040 }, -- dagger + { id = 3578, chance = 159200, maxCount = 2 }, -- fish + { id = 11539, chance = 1130 }, -- goblin ear + { id = 3031, chance = 100000, maxCount = 6 }, -- gold coin + { id = 3361, chance = 6060 }, -- leather armor + { id = 3355, chance = 2680 }, -- leather helmet + { id = 3120, chance = 850 }, -- mouldy cheese + { id = 3294, chance = 9720 }, -- short sword + { id = 3462, chance = 7750 }, -- small axe + { id = 1781, chance = 15210 }, -- small stone +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 10 }, + { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -22, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, +} + +monster.defenses = { + defense = 4, + armor = 2, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/muglex_clan_scavenger.lua b/data-canary/monster/dawnport/muglex_clan_scavenger.lua new file mode 100644 index 00000000000..d2d45d94bff --- /dev/null +++ b/data-canary/monster/dawnport/muglex_clan_scavenger.lua @@ -0,0 +1,109 @@ +local mType = Game.createMonsterType("Muglex Clan Scavenger") +local monster = {} + +monster.description = "a muglex clan scavenger" +monster.experience = 37 +monster.outfit = { + lookType = 297, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 60 +monster.maxHealth = 60 +monster.race = "blood" +monster.corpse = 6002 +monster.speed = 66 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3115, chance = 10820 }, -- bone + { id = 3337, chance = 11860 }, -- bone club + { id = 3267, chance = 30410 }, -- dagger + { id = 3578, chance = 16750, maxCount = 3 }, -- fish + { id = 3031, chance = 100000, maxCount = 12 }, -- gold coin + { id = 3361, chance = 7990 }, -- leather armor + { id = 3355, chance = 7990 }, -- leather helmet + { id = 3120, chance = 9020 }, -- mouldy cheese + { id = 3294, chance = 11860 }, -- short sword + { id = 3462, chance = 15210 }, -- small axe + { id = 1781, chance = 22420, maxCount = 2 }, -- small stone +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 10 }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -22, range = 7, shootEffect = CONST_ANI_SPEAR, target = false }, + { name = "combat", interval = 2000, chance = 3, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -30, range = 1, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = false }, +} + +monster.defenses = { + defense = 4, + armor = 2, + { name = "combat", interval = 2000, chance = 1, type = COMBAT_HEALING, minDamage = 10, maxDamage = 20, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 5, speedChange = 140, effect = CONST_ME_ENERGYHIT, target = false, duration = 4000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/sacred_snake.lua b/data-canary/monster/dawnport/sacred_snake.lua new file mode 100644 index 00000000000..176ea7e79d2 --- /dev/null +++ b/data-canary/monster/dawnport/sacred_snake.lua @@ -0,0 +1,99 @@ +local mType = Game.createMonsterType("Sacred Snake") +local monster = {} + +monster.description = "a sacred snake" +monster.experience = 0 +monster.outfit = { + lookType = 28, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 10 +monster.maxHealth = 10 +monster.race = "blood" +monster.corpse = 21474 +monster.speed = 60 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "eggs of a sacred snake", chance = 100000, maxCount = 20 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8, condition = { type = CONDITION_POISON, totalDamage = 1, interval = 4000 } }, +} + +monster.defenses = { + defense = 5, + armor = 0, + mitigation = 0.03, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/salamander_trainer.lua b/data-canary/monster/dawnport/salamander_trainer.lua new file mode 100644 index 00000000000..2dd136d4191 --- /dev/null +++ b/data-canary/monster/dawnport/salamander_trainer.lua @@ -0,0 +1,102 @@ +local mType = Game.createMonsterType("Salamander Trainer") +local monster = {} + +monster.description = "a salamander trainer" +monster.experience = 70 +monster.outfit = { + lookType = 15, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 220 +monster.maxHealth = 220 +monster.race = "blood" +monster.corpse = 5960 +monster.speed = 145 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 9689, chance = 1050 }, -- bunch of troll hair + { id = 3031, chance = 65300, maxCount = 12 }, -- gold coin + { id = 3577, chance = 15200 }, -- meat + { id = 3003, chance = 7960 }, -- rope + { id = 3277, chance = 12970, maxCount = 3 }, -- spear +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 25 }, +} + +monster.defenses = { + defense = 13, + armor = 7, + mitigation = 0.38, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 10, maxDamage = 25, effect = CONST_ME_MAGIC_GREEN, target = false }, + { name = "salamander trainer summon", interval = 2000, chance = 30, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 15 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/scar_tribe_shaman.lua b/data-canary/monster/dawnport/scar_tribe_shaman.lua new file mode 100644 index 00000000000..d30ab062b42 --- /dev/null +++ b/data-canary/monster/dawnport/scar_tribe_shaman.lua @@ -0,0 +1,113 @@ +local mType = Game.createMonsterType("Scar Tribe Shaman") +local monster = {} + +monster.description = "a scar tribe shaman" +monster.experience = 85 +monster.outfit = { + lookType = 6, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 115 +monster.maxHealth = 115 +monster.race = "blood" +monster.corpse = 5978 +monster.speed = 78 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 50, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 4, + summons = { + { name = "Snake", chance = 25, interval = 2000, count = 3 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 11452, chance = 3700 }, -- broken shamanic staff + { id = 3597, chance = 11110, maxCount = 2 }, -- corncob + { id = 3031, chance = 100000, maxCount = 17 }, -- gold coin + { id = 10196, chance = 11110 }, -- orc tooth + { id = 11478, chance = 3700 }, -- shamanic hood + { id = 3277, chance = 55560 }, -- spear + { id = 3378, chance = 3700 }, -- studded armor + { id = 3362, chance = 11110 }, -- studded legs +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 10 }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -10, maxDamage = -25, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 8, type = COMBAT_FIREDAMAGE, minDamage = -5, maxDamage = -30, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, +} + +monster.defenses = { + defense = 11, + armor = 6, + -- mitigation = ???, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 25, maxDamage = 35, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/scar_tribe_warrior.lua b/data-canary/monster/dawnport/scar_tribe_warrior.lua new file mode 100644 index 00000000000..f58ef72c95d --- /dev/null +++ b/data-canary/monster/dawnport/scar_tribe_warrior.lua @@ -0,0 +1,101 @@ +local mType = Game.createMonsterType("Scar Tribe Warrior") +local monster = {} + +monster.description = "a scar tribe warrior" +monster.experience = 85 +monster.outfit = { + lookType = 7, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 125 +monster.maxHealth = 125 +monster.race = "blood" +monster.corpse = 5979 +monster.speed = 80 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 11453, chance = 6740 }, -- broken helmet + { id = 3358, chance = 5620 }, -- chain armor + { id = 3031, chance = 100000, maxCount = 8 }, -- gold coin + { id = 3577, chance = 13480 }, -- meat + { id = 11479, chance = 5620 }, -- orc leather + { id = 11480, chance = 1120 }, -- skull belt +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 25 }, +} + +monster.defenses = { + defense = 10, + armor = 7, + mitigation = 0.33, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/spidris_elitesumom.lua b/data-canary/monster/dawnport/spidris_elitesumom.lua new file mode 100644 index 00000000000..ba8ba050a0d --- /dev/null +++ b/data-canary/monster/dawnport/spidris_elitesumom.lua @@ -0,0 +1,94 @@ +local mType = Game.createMonsterType("Spidris Elite Summon") +local monster = {} + +monster.name = "Spidris Elite" +monster.description = "a spidris elite" +monster.experience = 4000 +monster.outfit = { + lookType = 457, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 5000 +monster.maxHealth = 5000 +monster.race = "venom" +monster.corpse = 13870 +monster.speed = 197 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 75, attack = 82 }, +} + +monster.defenses = { + defense = 30, + armor = 30, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/troll-trained_salamander.lua b/data-canary/monster/dawnport/troll-trained_salamander.lua new file mode 100644 index 00000000000..1a53a153c6b --- /dev/null +++ b/data-canary/monster/dawnport/troll-trained_salamander.lua @@ -0,0 +1,108 @@ +local mType = Game.createMonsterType("Troll-Trained Salamander") +local monster = {} + +monster.description = "a troll-trained salamander" +monster.experience = 23 +monster.outfit = { + lookType = 529, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 70 +monster.maxHealth = 70 +monster.race = "blood" +monster.corpse = 17427 +monster.speed = 56 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3274, chance = 5080 }, -- axe + { id = 3337, chance = 4630 }, -- bone club + { id = 21470, chance = 17650, maxCount = 5 }, -- simple arrow + { id = 3031, chance = 100000, maxCount = 11 }, -- gold coin + { id = 3352, chance = 6300 }, -- chain helmet + { id = 266, chance = 1520 }, -- health potion + { id = 17457, chance = 34410, maxCount = 5 }, -- insectoid eggs + { id = 3577, chance = 9940 }, -- meat + { id = 3448, chance = 2970, maxCount = 2 }, -- poison arrow + { id = 3294, chance = 4470 }, -- short sword + { id = 3457, chance = 5080 }, -- shovel + { id = 3376, chance = 4070 }, -- studded helmet +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 11, condition = { type = CONDITION_POISON, totalDamage = 5, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 11, type = COMBAT_EARTHDAMAGE, minDamage = -4, maxDamage = -6, range = 5, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_HITBYPOISON, target = true }, +} + +monster.defenses = { + defense = 0, + armor = 1, + mitigation = 0.15, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/troll_marauder.lua b/data-canary/monster/dawnport/troll_marauder.lua new file mode 100644 index 00000000000..8d83f045db9 --- /dev/null +++ b/data-canary/monster/dawnport/troll_marauder.lua @@ -0,0 +1,106 @@ +local mType = Game.createMonsterType("Troll Marauder") +local monster = {} + +monster.description = "a troll marauder" +monster.experience = 40 +monster.outfit = { + lookType = 281, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 70 +monster.maxHealth = 70 +monster.race = "blood" +monster.corpse = 861 +monster.speed = 60 +monster.manaCost = 350 + +monster.changeTarget = { + interval = 2000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 21470, chance = 5190, maxCount = 3 }, -- simple arrow + { id = 9689, chance = 2600 }, -- bunch of troll hair + { id = 3031, chance = 100000, maxCount = 8 }, -- gold coin + { id = 3552, chance = 5190 }, -- leather boots + { id = 3577, chance = 24680 }, -- meat + { id = 3054, chance = 1300 }, -- silver amulet + { id = 3277, chance = 25970 }, -- spear + { id = 3336, chance = 10390 }, -- studded club + { id = 3378, chance = 9090 }, -- studded armor + { id = 11515, chance = 5190 }, -- trollroot + { id = 3412, chance = 11690 }, -- wooden shield +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 25 }, +} + +monster.defenses = { + defense = 4, + armor = 8, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -15 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dawnport/woodling.lua b/data-canary/monster/dawnport/woodling.lua new file mode 100644 index 00000000000..77143bbab0e --- /dev/null +++ b/data-canary/monster/dawnport/woodling.lua @@ -0,0 +1,105 @@ +local mType = Game.createMonsterType("Woodling") +local monster = {} + +monster.description = "a woodling" +monster.experience = 40 +monster.outfit = { + lookType = 535, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 80 +monster.maxHealth = 80 +monster.race = "blood" +monster.corpse = 21446 +monster.speed = 65 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 21470, chance = 9450, maxCount = 10 }, -- simple arrow + { id = 3031, chance = 100000, maxCount = 12 }, -- gold coin + { id = 17823, chance = 14500 }, -- piece of swampling wood + { id = 3003, chance = 5700 }, -- rope + { id = 3378, chance = 4950 }, -- studded armor + { id = 3426, chance = 2670 }, -- studded shield + { id = 17822, chance = 20250 }, -- swampling moss + { id = 3723, chance = 18200, maxCount = 4 }, -- white mushroom +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 10, attack = 14 }, + { name = "woodling paralyze", interval = 2000, chance = 10, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -4, maxDamage = -9, range = 3, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_INSECTS, target = false }, +} + +monster.defenses = { + defense = 2, + armor = 2, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/askarak_demon.lua b/data-canary/monster/demons/askarak_demon.lua new file mode 100644 index 00000000000..cc2f06fe304 --- /dev/null +++ b/data-canary/monster/demons/askarak_demon.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Askarak Demon") +local monster = {} + +monster.description = "an askarak demon" +monster.experience = 900 +monster.outfit = { + lookType = 420, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 727 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Demonwar Crypt teleporter before vampire shield quest.", +} + +monster.health = 1500 +monster.maxHealth = 1500 +monster.race = "venom" +monster.corpse = 12659 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "DEATH TO THE SHABURAK!", yell = true }, + { text = "GREEN WILL RULE!", yell = true }, + { text = "ONLY WE ARE TRUE DEMONS!", yell = true }, + { text = "RED IS MAD!", yell = true }, + { text = "WE RULE!", yell = true }, +} + +monster.loot = { + { name = "piggy bank", chance = 1052 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 40000, maxCount = 35 }, + { name = "small emerald", chance = 6250, maxCount = 4 }, + { id = 3051, chance = 961 }, -- energy ring + { name = "brown mushroom", chance = 3846, maxCount = 5 }, + { name = "magic sulphur", chance = 102 }, + { name = "assassin star", chance = 4761, maxCount = 5 }, + { name = "mastermind potion", chance = 431 }, + { name = "strong health potion", chance = 5263 }, + { name = "strong mana potion", chance = 5263 }, + { name = "terra legs", chance = 123 }, + { name = "springsprout rod", chance = 512 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -143 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -20, maxDamage = -60, range = 7, radius = 6, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "askarak wave", interval = 2000, chance = 15, minDamage = -75, maxDamage = -140, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -130, maxDamage = -170, length = 4, spread = 0, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = -600, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 }, +} + +monster.defenses = { + defense = 15, + armor = 35, + mitigation = 1.04, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 60 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 60 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/askarak_lord.lua b/data-canary/monster/demons/askarak_lord.lua new file mode 100644 index 00000000000..181b3080827 --- /dev/null +++ b/data-canary/monster/demons/askarak_lord.lua @@ -0,0 +1,136 @@ +local mType = Game.createMonsterType("Askarak Lord") +local monster = {} + +monster.description = "an askarak lord" +monster.experience = 1200 +monster.outfit = { + lookType = 410, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 728 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Demonwar Crypt.", +} + +monster.health = 2100 +monster.maxHealth = 2100 +monster.race = "venom" +monster.corpse = 12821 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "DEATH TO THE SHABURAK!", yell = true }, + { text = "GREEN WILL RULE!", yell = true }, + { text = "ONLY WE ARE TRUE DEMONS!", yell = true }, + { text = "RED IS MAD!", yell = true }, + { text = "WE RULE!", yell = true }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 90 }, + { name = "small emerald", chance = 5882, maxCount = 5 }, + { name = "platinum coin", chance = 35333, maxCount = 2 }, + { id = 3051, chance = 606 }, -- energy ring + { name = "brown mushroom", chance = 5263, maxCount = 5 }, + { name = "magic sulphur", chance = 620 }, + { name = "assassin star", chance = 70, maxCount = 5 }, + { name = "dreaded cleaver", chance = 30 }, + { name = "mastermind potion", chance = 750 }, + { name = "strong health potion", chance = 6250 }, + { name = "strong mana potion", chance = 7692 }, + { name = "terra mantle", chance = 70 }, + { name = "springsprout rod", chance = 1010 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -186 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -80, range = 7, radius = 6, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "askarak wave", interval = 2000, chance = 15, minDamage = -95, maxDamage = -180, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -130, maxDamage = -180, length = 4, spread = 0, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -650, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 }, +} + +monster.defenses = { + defense = 20, + armor = 40, + mitigation = 1.18, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 120, maxDamage = 160, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 65 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 65 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/askarak_prince.lua b/data-canary/monster/demons/askarak_prince.lua new file mode 100644 index 00000000000..de4969698ba --- /dev/null +++ b/data-canary/monster/demons/askarak_prince.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Askarak Prince") +local monster = {} + +monster.description = "an askarak prince" +monster.experience = 1700 +monster.outfit = { + lookType = 419, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 729 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Demonwar Crypt.", +} + +monster.health = 2600 +monster.maxHealth = 2600 +monster.race = "venom" +monster.corpse = 12822 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "DEATH TO THE SHABURAK!", yell = true }, + { text = "GREEN WILL RULE!", yell = true }, + { text = "ONLY WE ARE TRUE DEMONS!", yell = true }, + { text = "RED IS MAD!", yell = true }, + { text = "WE RULE!", yell = true }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 86 }, + { name = "small emerald", chance = 12500, maxCount = 5 }, + { name = "platinum coin", chance = 35333, maxCount = 4 }, + { id = 3049, chance = 4545 }, -- stealth ring + { name = "giant sword", chance = 320 }, + { name = "brown mushroom", chance = 6666, maxCount = 5 }, + { name = "magic sulphur", chance = 740 }, + { name = "mastermind potion", chance = 1315 }, + { name = "strong health potion", chance = 14285 }, + { name = "strong mana potion", chance = 14285 }, + { name = "terra mantle", chance = 840 }, + { name = "springsprout rod", chance = 950 }, + { name = "demonic finger", chance = 420 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -353 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -70, maxDamage = -250, range = 7, radius = 6, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "askarak wave", interval = 2000, chance = 15, minDamage = -100, maxDamage = -200, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -200, length = 4, spread = 0, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 }, +} + +monster.defenses = { + defense = 30, + armor = 45, + mitigation = 1.32, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 70 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 70 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/dark_torturer.lua b/data-canary/monster/demons/dark_torturer.lua new file mode 100644 index 00000000000..00d0b5f3201 --- /dev/null +++ b/data-canary/monster/demons/dark_torturer.lua @@ -0,0 +1,140 @@ +local mType = Game.createMonsterType("Dark Torturer") +local monster = {} + +monster.description = "a dark torturer" +monster.experience = 4650 +monster.outfit = { + lookType = 234, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 285 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Pits of Inferno, Vengoth, The Inquisition Quest's Blood Halls, Oramond Dungeon, \z + Oramond Fury Dungeon, Roshamuul Prison, Grounds of Damnation and Halls of Ascension.", +} + +monster.health = 7350 +monster.maxHealth = 7350 +monster.race = "undead" +monster.corpse = 6327 +monster.speed = 185 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You like it, don't you?", yell = false }, + { text = "IahaEhheAie!", yell = false }, + { text = "It's party time!", yell = false }, + { text = "Harrr, Harrr!", yell = false }, + { text = "The torturer is in!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 40000, maxCount = 99 }, + { name = "platinum coin", chance = 55000, maxCount = 8 }, + { name = "golden legs", chance = 30 }, + { id = 3461, chance = 5250 }, -- saw + { name = "steel boots", chance = 5050 }, + { name = "ham", chance = 60000, maxCount = 2 }, + { name = "orichalcum pearl", chance = 2760, maxCount = 2 }, + { name = "cat's paw", chance = 2222 }, + { name = "jewelled backpack", chance = 1192 }, + { name = "soul orb", chance = 23000 }, + { id = 6299, chance = 2008 }, -- death ring + { name = "demonic essence", chance = 8520 }, + { name = "flask of demonic blood", chance = 33333, maxCount = 3 }, + { name = "assassin star", chance = 2222, maxCount = 5 }, + { name = "vile axe", chance = 480 }, + { name = "butcher's axe", chance = 850 }, + { name = "great mana potion", chance = 14830, maxCount = 2 }, + { name = "great health potion", chance = 10000, maxCount = 2 }, + { name = "gold ingot", chance = 3140 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -781, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, + { name = "dark torturer skill reducer", interval = 2000, chance = 5, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 45, + mitigation = 1.74, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = 90 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/dawnfire_asura.lua b/data-canary/monster/demons/dawnfire_asura.lua new file mode 100644 index 00000000000..ac6fb0d5308 --- /dev/null +++ b/data-canary/monster/demons/dawnfire_asura.lua @@ -0,0 +1,144 @@ +local mType = Game.createMonsterType("Dawnfire Asura") +local monster = {} + +monster.description = "a dawnfire asura" +monster.experience = 4100 +monster.outfit = { + lookType = 150, + lookHead = 114, + lookBody = 94, + lookLegs = 78, + lookFeet = 79, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 1134 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Asura Palace.", +} + +monster.health = 2900 +monster.maxHealth = 2900 +monster.race = "blood" +monster.corpse = 21987 +monster.speed = 140 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "May the flames consume you!", yell = false }, + { text = "Encounter the flames of destiny!", yell = false }, + { text = "Fire and destruction!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 69190, maxCount = 100 }, -- gold coin + { id = 3035, chance = 84140, maxCount = 9 }, -- platinum coin + { id = 6558, chance = 20910, maxCount = 2 }, -- flask of demonic blood + { id = 238, chance = 8590, maxCount = 2 }, -- great mana potion + { id = 3033, chance = 3140, maxCount = 1 }, -- small amethyst + { id = 3028, chance = 2930, maxCount = 1 }, -- small diamond + { id = 3032, chance = 3530, maxCount = 1 }, -- small emerald + { id = 3030, chance = 5760, maxCount = 1 }, -- small ruby + { id = 9057, chance = 2840, maxCount = 1 }, -- small topaz + { id = 3041, chance = 220 }, -- blue gem + { id = 6299, chance = 340 }, -- death ring + { id = 6499, chance = 10660 }, -- demonic essence + { id = 8043, chance = 870 }, -- focus cape + { id = 21974, chance = 1230 }, -- golden lotus brooch + { id = 826, chance = 570 }, -- magma coat + { id = 3078, chance = 1160 }, -- mysterious fetish + { id = 3574, chance = 2190 }, -- mystic turban + { id = 21981, chance = 310 }, -- oriental shoes + { id = 21975, chance = 11110 }, -- peacock feather fan + { id = 5911, chance = 2340 }, -- red piece of cloth + { id = 3016, chance = 800 }, -- ruby necklace + { id = 5944, chance = 14560 }, -- soul orb + { id = 8074, chance = 80 }, -- spellbook of mind control + { id = 3071, chance = 910 }, -- wand of inferno +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -269 }, + { name = "combat", interval = 3700, chance = 17, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -300, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 3200, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -350, radius = 4, range = 5, target = true, effect = CONST_ME_MORTAREA }, + { name = "combat", interval = 2700, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -95, maxDamage = -180, range = 3, shootEffect = CONST_ANI_FIRE, target = true }, + { name = "speed", interval = 2000, chance = 20, speedChange = -800, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_SLEEP, target = true, duration = 15000 }, +} + +monster.defenses = { + defense = 55, + armor = 48, + mitigation = 1.46, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/demon.lua b/data-canary/monster/demons/demon.lua index 763911485e7..0839ae00b41 100644 --- a/data-canary/monster/demons/demon.lua +++ b/data-canary/monster/demons/demon.lua @@ -23,10 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Hero Cave, Ferumbras' Citadel, Goroma, Ghostlands (Warlock area; unreachable), \z - Liberty Bay (hidden underground passage; unreachable), Razzachai, deep in Pits of Inferno \z - (found in every throneroom except Verminor's), deep Formorgar Mines, Demon Forge, \z - Alchemist Quarter, Magician Quarter, Chyllfroest, Oramond Dungeon, Abandoned Sewers.", + Locations = "Hero Cave, Ferumbras' Citadel, Goroma, Ghostlands Warlock area unreachable, Liberty Bay hidden underground passage unreachable, Razachai, deep in Pits of Inferno (found in every throneroom except Verminor's), deep Formorgar Mines, Demon Forge, Alchemist Quarter, Magician Quarter, Chyllfroest, Oramond Dungeon, Abandoned Sewers, Hell Hub and Halls of Ascension.", } monster.health = 8200 @@ -35,7 +32,6 @@ monster.race = "fire" monster.corpse = 5995 monster.speed = 128 monster.manaCost = 0 -monster.maxSummons = 1 monster.changeTarget = { interval = 4000, @@ -77,17 +73,7 @@ monster.light = { monster.summon = { maxSummons = 1, summons = { - { name = "fire elemental", chance = 10, interval = 2000 }, - }, -} - -monster.sounds = { - ticks = 5000, - chance = 10, - death = SOUND_EFFECT_TYPE_DEMON_DEATH, - ids = { - SOUND_EFFECT_TYPE_DEMON_BARK, - SOUND_EFFECT_TYPE_UNKNOWN_CREATURE_DEATH_1, + { name = "fire elemental", chance = 10, interval = 2000, count = 1 }, }, } @@ -95,47 +81,47 @@ monster.voices = { interval = 5000, chance = 10, { text = "Your soul will be mine!", yell = false }, - { text = "MUHAHAHAHA!", yell = false }, - { text = "CHAMEK ATH UTHUL ARAK!", yell = false }, - { text = "I SMELL FEEEEAAAAAR!", yell = false }, + { text = "CHAMEK ATH UTHUL ARAK!", yell = true }, + { text = "I SMELL FEEEEAAAAAR!", yell = true }, { text = "Your resistance is futile!", yell = false }, + { text = "MUHAHAHAHA!", yell = true }, } monster.loot = { - { id = 2848, chance = 1180 }, -- purple tome - { id = 3031, chance = 60000, maxCount = 100 }, -- gold coin - { id = 3031, chance = 60000, maxCount = 100 }, -- gold coin - { id = 3032, chance = 9690, maxCount = 5 }, -- small emerald - { id = 3033, chance = 7250, maxCount = 5 }, -- small amethyst - { id = 3030, chance = 7430, maxCount = 5 }, -- small ruby - { id = 9057, chance = 7470, maxCount = 5 }, -- small topaz + { name = "purple tome", chance = 1180 }, + { name = "gold coin", chance = 60000, maxCount = 100 }, + { name = "gold coin", chance = 60000, maxCount = 100 }, + { name = "small emerald", chance = 9690, maxCount = 5 }, + { name = "small amethyst", chance = 7250, maxCount = 5 }, + { name = "small ruby", chance = 7430, maxCount = 5 }, + { name = "small topaz", chance = 7470, maxCount = 5 }, { id = 3039, chance = 2220 }, -- red gem - { id = 6499, chance = 14630 }, -- demonic essence - { id = 3034, chance = 3430 }, -- talon - { id = 3035, chance = 90540, maxCount = 8 }, -- platinum coin - { id = 3048, chance = 1890 }, -- might ring + { name = "demonic essence", chance = 14630 }, + { name = "talon", chance = 3430 }, + { name = "platinum coin", chance = 90540, maxCount = 8 }, + { name = "might ring", chance = 1890 }, { id = 3049, chance = 2170 }, -- stealth ring - { id = 3055, chance = 680 }, -- platinum amulet - { id = 3060, chance = 2854 }, -- orb - { id = 3063, chance = 1050 }, -- gold ring + { name = "platinum amulet", chance = 680 }, + { name = "orb", chance = 2854 }, + { name = "gold ring", chance = 1050 }, { id = 3098, chance = 1990 }, -- ring of healing - { id = 3281, chance = 1980 }, -- giant sword - { id = 3284, chance = 1550 }, -- ice rapier - { id = 3306, chance = 1440 }, -- golden sickle - { id = 3320, chance = 4030 }, -- fire axe - { id = 3356, chance = 1180 }, -- devil helmet - { id = 3364, chance = 440 }, -- golden legs - { id = 3366, chance = 130 }, -- magic plate armor - { id = 3414, chance = 480 }, -- mastermind shield - { id = 3420, chance = 740 }, -- demon shield - { id = 3731, chance = 19660, maxCount = 6 }, -- fire mushroom - { id = 5954, chance = 14920 }, -- demon horn - { id = 7368, chance = 12550, maxCount = 10 }, -- assassin star - { id = 7382, chance = 70 }, -- demonrage sword + { name = "giant sword", chance = 1980 }, + { name = "ice rapier", chance = 1550 }, + { name = "golden sickle", chance = 1440 }, + { name = "fire axe", chance = 4030 }, + { name = "devil helmet", chance = 1180 }, + { name = "golden legs", chance = 440 }, + { name = "magic plate armor", chance = 130 }, + { name = "mastermind shield", chance = 480 }, + { name = "demon shield", chance = 740 }, + { name = "fire mushroom", chance = 19660, maxCount = 6 }, + { name = "demon horn", chance = 14920 }, + { name = "assassin star", chance = 12550, maxCount = 10 }, + { name = "demonrage sword", chance = 70 }, { id = 7393, chance = 90 }, -- demon trophy - { id = 238, chance = 22220, maxCount = 3 }, -- great mana potion - { id = 7643, chance = 19540, maxCount = 3 }, -- ultimate health potion - { id = 7642, chance = 18510, maxCount = 3 }, -- great spirit potion + { name = "great mana potion", chance = 22220, maxCount = 3 }, + { name = "ultimate health potion", chance = 19540, maxCount = 3 }, + { name = "great spirit potion", chance = 18510, maxCount = 3 }, } monster.attacks = { @@ -144,28 +130,29 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -250, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -490, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -210, maxDamage = -300, range = 1, shootEffect = CONST_ANI_ENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -210, maxDamage = -300, range = 1, shootEffect = CONST_ANI_ENERGY, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, } monster.defenses = { defense = 55, - armor = 55, + armor = 44, + mitigation = 1.74, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 180, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { - { type = COMBAT_PHYSICALDAMAGE, percent = 30 }, + { type = COMBAT_PHYSICALDAMAGE, percent = 25 }, { type = COMBAT_ENERGYDAMAGE, percent = 50 }, { type = COMBAT_EARTHDAMAGE, percent = 40 }, { type = COMBAT_FIREDAMAGE, percent = 100 }, { type = COMBAT_LIFEDRAIN, percent = 100 }, { type = COMBAT_MANADRAIN, percent = 0 }, { type = COMBAT_DROWNDAMAGE, percent = 100 }, - { type = COMBAT_ICEDAMAGE, percent = -10 }, - { type = COMBAT_HOLYDAMAGE, percent = -10 }, - { type = COMBAT_DEATHDAMAGE, percent = 30 }, + { type = COMBAT_ICEDAMAGE, percent = -12 }, + { type = COMBAT_HOLYDAMAGE, percent = -12 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, } monster.immunities = { diff --git a/data-canary/monster/demons/demon_outcast.lua b/data-canary/monster/demons/demon_outcast.lua new file mode 100644 index 00000000000..93c643d53dc --- /dev/null +++ b/data-canary/monster/demons/demon_outcast.lua @@ -0,0 +1,152 @@ +local mType = Game.createMonsterType("Demon Outcast") +local monster = {} + +monster.description = "a demon outcast" +monster.experience = 6200 +monster.outfit = { + lookType = 590, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1019 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Roshamuul Prison.", +} + +monster.health = 6900 +monster.maxHealth = 6900 +monster.race = "blood" +monster.corpse = 20215 +monster.speed = 148 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "energy elemental", chance = 10, interval = 2000, count = 2 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Back in the evil business!", yell = false }, + { text = "This prison break will have casualties!", yell = false }, + { text = "At last someone to hurt", yell = false }, + { text = "No one will imprison me again!", yell = false }, +} + +monster.loot = { + { name = "small diamond", chance = 10000, maxCount = 5 }, + { name = "small sapphire", chance = 10000, maxCount = 5 }, + { name = "small ruby", chance = 12000, maxCount = 5 }, + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "small emerald", chance = 10000, maxCount = 5 }, + { name = "platinum coin", chance = 100000, maxCount = 6 }, + { name = "might ring", chance = 910 }, + { id = 3049, chance = 1300 }, -- stealth ring + { name = "platinum amulet", chance = 1000 }, + { id = 3098, chance = 3000 }, -- ring of healing + { name = "giant sword", chance = 2000 }, + { name = "ice rapier", chance = 660 }, + { name = "devil helmet", chance = 910 }, + { name = "crusader helmet", chance = 740 }, + { name = "crown shield", chance = 740 }, + { name = "demon shield", chance = 170 }, + { name = "fire mushroom", chance = 20600, maxCount = 6 }, + { id = 5906, chance = 1000 }, -- demon dust + { name = "assassin star", chance = 8340, maxCount = 10 }, + { name = "demonrage sword", chance = 350 }, + { name = "great mana potion", chance = 18000, maxCount = 2 }, + { name = "ultimate health potion", chance = 20500, maxCount = 3 }, + { name = "small topaz", chance = 9300, maxCount = 5 }, + { name = "cluster of solace", chance = 4550 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -450, length = 6, spread = 0, effect = CONST_ME_PURPLEENERGY, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -550, length = 8, spread = 0, effect = CONST_ME_YELLOWENERGY, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -250, radius = 3, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "demon outcast skill reducer", interval = 2000, chance = 10, range = 5, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 49, + mitigation = 1.60, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 15 }, + { type = COMBAT_ENERGYDAMAGE, percent = -8 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = -6 }, + { type = COMBAT_DEATHDAMAGE, percent = 30 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/destroyer.lua b/data-canary/monster/demons/destroyer.lua index 2dfa594ee82..3e88a03c330 100644 --- a/data-canary/monster/demons/destroyer.lua +++ b/data-canary/monster/demons/destroyer.lua @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Pits of Inferno, Formorgar Mines, Alchemist Quarter, Oramond Dungeon.", + Locations = "Pits of Inferno, Formorgar Mines, Alchemist Quarter, Oramond Dungeon and Grounds of Destruction.", } monster.health = 3700 @@ -73,36 +73,33 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, - { text = "COME HERE AND DIE!", yell = false }, + { text = "COME HERE AND DIE!", yell = true }, { text = "Destructiooooon!", yell = false }, { text = "It's a good day to destroy!", yell = false }, } monster.loot = { - { id = 3008, chance = 578 }, -- crystal necklace - { id = 3031, chance = 60000, maxCount = 100 }, -- gold coin - { id = 3031, chance = 40000, maxCount = 100 }, -- gold coin - { id = 3031, chance = 40000, maxCount = 100 }, -- gold coin - { id = 3031, chance = 60000, maxCount = 41 }, -- gold coin - { id = 3033, chance = 7692, maxCount = 2 }, -- small amethyst - { id = 3035, chance = 4166, maxCount = 3 }, -- platinum coin - { id = 3062, chance = 564 }, -- mind stone - { id = 3281, chance = 1694 }, -- giant sword - { id = 3304, chance = 14285 }, -- crowbar - { id = 3357, chance = 4347 }, -- plate armor - { id = 3383, chance = 10000 }, -- dark armor - { id = 3449, chance = 12500, maxCount = 12 }, -- burst arrow - { id = 3456, chance = 6250 }, -- pick - { id = 3554, chance = 992 }, -- steel boots - { id = 3577, chance = 50000, maxCount = 6 }, -- meat - { id = 5741, chance = 108 }, -- skull helmet - { id = 5944, chance = 6666 }, -- soul orb - { id = 6299, chance = 144 }, -- death ring - { id = 6499, chance = 20000 }, -- demonic essence - { id = 7419, chance = 833 }, -- dreaded cleaver - { id = 7427, chance = 869 }, -- chaos mace - { id = 239, chance = 1136 }, -- great health potion - { id = 10298, chance = 7142 }, -- metal spike + { name = "crystal necklace", chance = 500 }, + { name = "gold coin", chance = 92500, maxCount = 341 }, + { name = "small amethyst", chance = 5850, maxCount = 2 }, + { name = "platinum coin", chance = 2250, maxCount = 3 }, + { name = "mind stone", chance = 70 }, + { name = "giant sword", chance = 1250 }, + { name = "crowbar", chance = 10500 }, + { name = "plate armor", chance = 3400 }, + { name = "dark armor", chance = 6250 }, + { id = 3449, chance = 8350, maxCount = 12 }, -- burst arrow + { id = 3456, chance = 4850 }, -- pick + { name = "steel boots", chance = 300 }, + { name = "meat", chance = 40000, maxCount = 6 }, + { name = "skull helmet", chance = 10 }, + { name = "soul orb", chance = 5350 }, + { id = 6299, chance = 250 }, -- death ring + { name = "demonic essence", chance = 13850 }, + { name = "dreaded cleaver", chance = 400 }, + { name = "chaos mace", chance = 800 }, + { name = "great health potion", chance = 1000 }, + { name = "metal spike", chance = 4850 }, } monster.attacks = { @@ -112,12 +109,13 @@ monster.attacks = { monster.defenses = { defense = 30, - armor = 30, + armor = 35, + mitigation = 1.74, { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { - { type = COMBAT_PHYSICALDAMAGE, percent = 25 }, + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, { type = COMBAT_ENERGYDAMAGE, percent = 100 }, { type = COMBAT_EARTHDAMAGE, percent = 20 }, { type = COMBAT_FIREDAMAGE, percent = 30 }, diff --git a/data-canary/monster/demons/diabolic_imp.lua b/data-canary/monster/demons/diabolic_imp.lua new file mode 100644 index 00000000000..b1eb23fd0e2 --- /dev/null +++ b/data-canary/monster/demons/diabolic_imp.lua @@ -0,0 +1,138 @@ +local mType = Game.createMonsterType("Diabolic Imp") +local monster = {} + +monster.description = "a diabolic imp" +monster.experience = 2900 +monster.outfit = { + lookType = 237, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 288 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Inquisition, Pits of Inferno, Fenrock, Fury Dungeon and inside the Hellgore volcano \z + on Goroma during the Fire from the Earth Mini World Change.", +} + +monster.health = 1950 +monster.maxHealth = 1950 +monster.race = "fire" +monster.corpse = 6363 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 400, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Muahaha!", yell = false }, + { text = "He he he.", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 40000, maxCount = 97 }, + { name = "gold coin", chance = 3390, maxCount = 7 }, + { name = "small amethyst", chance = 2250, maxCount = 3 }, + { id = 3049, chance = 2702 }, -- stealth ring + { name = "necrotic rod", chance = 830 }, + { name = "blank rune", chance = 16666, maxCount = 2 }, + { name = "double axe", chance = 1994 }, + { id = 3307, chance = 5660 }, -- scimitar + { name = "guardian shield", chance = 8130 }, + { name = "pitchfork", chance = 50000 }, + { name = "cleaver", chance = 8830 }, + { name = "soul orb", chance = 7230 }, + { id = 6299, chance = 120 }, -- death ring + { name = "demonic essence", chance = 8000 }, + { name = "flask of demonic blood", chance = 25000, maxCount = 2 }, + { name = "magma coat", chance = 250 }, + { name = "magma monocle", chance = 430 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -240, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -430, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, + { name = "diabolic imp skill reducer", interval = 2000, chance = 5, range = 5, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 29, + mitigation = 1.46, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 650, maxDamage = 800, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 800, effect = CONST_ME_MAGIC_RED, target = false, duration = 2000 }, + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_TELEPORT }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 50 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/duskbringer.lua b/data-canary/monster/demons/duskbringer.lua new file mode 100644 index 00000000000..19d4200e813 --- /dev/null +++ b/data-canary/monster/demons/duskbringer.lua @@ -0,0 +1,119 @@ +local mType = Game.createMonsterType("Duskbringer") +local monster = {} + +monster.description = "a duskbringer" +monster.experience = 2600 +monster.outfit = { + lookType = 300, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 581 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Magician Quarter (Yalahar) one floor down around the the lightbringer's basin", +} + +monster.health = 3550 +monster.maxHealth = 3550 +monster.race = "undead" +monster.corpse = 8127 +monster.speed = 185 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Death!", yell = false }, + { text = "Come a little closer!", yell = false }, + { text = "The end is near!", yell = false }, +} + +monster.loot = { + { name = "midnight shard", chance = 10000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -165, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -720, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, effect = CONST_ME_MORTAREA, target = false }, +} + +monster.defenses = { + defense = 42, + armor = 42, + mitigation = 1.04, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 130, maxDamage = 205, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 80 }, + { type = COMBAT_FIREDAMAGE, percent = 40 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/fire_devil.lua b/data-canary/monster/demons/fire_devil.lua new file mode 100644 index 00000000000..da243c28180 --- /dev/null +++ b/data-canary/monster/demons/fire_devil.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Fire Devil") +local monster = {} + +monster.description = "a fire devil" +monster.experience = 145 +monster.outfit = { + lookType = 40, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 40 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Desert Dungeon, Ancient Temple, Magician Tower, Shadow Tomb, Ghostlands, Goroma, \z + Plains of Havoc at Ornamented Shield Quest, Spike Sword Quest.", +} + +monster.health = 200 +monster.maxHealth = 200 +monster.race = "blood" +monster.corpse = 5985 +monster.speed = 90 +monster.manaCost = 530 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hot, eh?", yell = false }, + { text = "Hell, oh, hell!", yell = false }, +} + +monster.loot = { + { id = 2920, chance = 10000 }, -- torch + { id = 2920, chance = 1420, maxCount = 2 }, -- torch + { name = "small amethyst", chance = 300 }, + { name = "necrotic rod", chance = 460 }, + { name = "blank rune", chance = 10950 }, + { name = "double axe", chance = 1500 }, + { id = 3307, chance = 3000 }, -- scimitar + { name = "guardian shield", chance = 210 }, + { name = "cleaver", chance = 1100 }, + { name = "small pitchfork", chance = 19770 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -90, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -20, maxDamage = -50, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, +} + +monster.defenses = { + defense = 10, + armor = 13, + mitigation = 0.38, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -20 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/floating_savant.lua b/data-canary/monster/demons/floating_savant.lua new file mode 100644 index 00000000000..dbe874c9c5f --- /dev/null +++ b/data-canary/monster/demons/floating_savant.lua @@ -0,0 +1,129 @@ +local mType = Game.createMonsterType("Floating Savant") +local monster = {} + +monster.description = "a floating savant" +monster.experience = 8000 +monster.outfit = { + lookType = 1063, + lookHead = 113, + lookBody = 94, + lookLegs = 78, + lookFeet = 78, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1637 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "The Extension Site", +} + +monster.health = 8000 +monster.maxHealth = 8000 +monster.race = "undead" +monster.corpse = 28598 +monster.speed = 165 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 1, + summons = { + { name = "Lava Lurker Attendant", chance = 70, interval = 2000, count = 1 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "tssooosh tsoooosh tssoooosh!", yell = false }, + { text = "We didn't stop the fire!", yell = false }, +} + +monster.loot = { + { name = "small enchanted ruby", chance = 10000, maxCount = 5 }, + { name = "red crystal fragment", chance = 10000, maxCount = 2 }, + { id = 3039, chance = 10000, maxCount = 3 }, -- red gem + { name = "red piece of cloth", chance = 10000, maxCount = 3 }, + { name = "flask of demonic blood", chance = 12000, maxCount = 5 }, + { name = "demonic essence", chance = 10000, maxCount = 5 }, + { id = 3456, chance = 10000 }, -- pick + { name = "sample of monster blood", chance = 10000, maxCount = 5 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -390, maxDamage = -480, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_ENERGYDAMAGE, minDamage = -390, maxDamage = -480, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -400, radius = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -490, maxDamage = -630, length = 4, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 74, + mitigation = 1.96, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/frost_flower_asura.lua b/data-canary/monster/demons/frost_flower_asura.lua new file mode 100644 index 00000000000..0f73f178e59 --- /dev/null +++ b/data-canary/monster/demons/frost_flower_asura.lua @@ -0,0 +1,141 @@ +local mType = Game.createMonsterType("Frost Flower Asura") +local monster = {} + +monster.description = "a frost flower asura" +monster.experience = 4200 +monster.outfit = { + lookType = 150, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 86, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 1619 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Asura Palace.", +} + +monster.health = 3500 +monster.maxHealth = 3500 +monster.race = "blood" +monster.corpse = 28807 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 3, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3031, chance = 70980, maxCount = 100 }, -- gold coin + { id = 3035, chance = 80500, maxCount = 6 }, -- platinum coin + { id = 3567, chance = 680 }, -- blue robe + { id = 7368, chance = 6640, maxCount = 5 }, -- assassin star + { id = 3027, chance = 5320, maxCount = 1 }, -- black pearl + { id = 3007, chance = 250 }, -- crystal ring + { id = 6558, chance = 19650 }, -- flask of demonic blood + { id = 6499, chance = 15850 }, -- demonic essence + { id = 3028, chance = 8200, maxCount = 1 }, -- small diamond + { id = 3032, chance = 3970, maxCount = 1 }, -- small emerald + { id = 3030, chance = 4560, maxCount = 1 }, -- small ruby + { id = 3029, chance = 7600, maxCount = 3 }, -- small sapphire + { id = 9057, chance = 4770, maxCount = 1 }, -- small topaz + { id = 239, chance = 12080, maxCount = 2 }, -- great health potion + { id = 3026, chance = 7480 }, -- white pearl + { id = 7404, chance = 550 }, -- assassin dagger + { id = 3041, chance = 300 }, -- blue gem + { id = 9058, chance = 380 }, -- gold ingot + { id = 21974, chance = 19650 }, -- golden lotus brooch + { id = 21981, chance = 340 }, -- oriental shoes + { id = 21975, chance = 17280 }, -- peacock feather fan + { id = 8061, chance = 250 }, -- skullcracker armor + { id = 3017, chance = 5790 }, -- silver brooch + { id = 3054, chance = 1100 }, -- silver amulet + { id = 5944, chance = 19520 }, -- soul orb + { id = 8074, chance = 420 }, -- spellbook of mind control + { id = 3403, chance = 3380 }, -- tribal mask + { id = 3037, chance = 1820 }, -- yellow gem + { id = 3067, chance = 19520 }, -- hailstorm rod + { id = 8083, chance = 19520 }, -- northwind rod +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -110, maxDamage = -400 }, + { name = "combat", interval = 1300, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -185, maxDamage = -210, length = 8, spread = 0, effect = CONST_ME_ICETORNADO, target = false }, + { name = "combat", interval = 1000, chance = 9, type = COMBAT_ICEDAMAGE, minDamage = -120, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = true }, +} + +monster.defenses = { + defense = 30, + armor = 56, + mitigation = 1.62, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/fury.lua b/data-canary/monster/demons/fury.lua index a01553afeed..cdaad15cf8f 100644 --- a/data-canary/monster/demons/fury.lua +++ b/data-canary/monster/demons/fury.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Fury") local monster = {} monster.description = "a fury" -monster.experience = 4000 +monster.experience = 3600 monster.outfit = { lookType = 149, lookHead = 94, @@ -125,7 +125,7 @@ monster.elements = { { type = COMBAT_LIFEDRAIN, percent = 0 }, { type = COMBAT_MANADRAIN, percent = 0 }, { type = COMBAT_DROWNDAMAGE, percent = 0 }, - { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_ICEDAMAGE, percent = 30 }, { type = COMBAT_HOLYDAMAGE, percent = 30 }, { type = COMBAT_DEATHDAMAGE, percent = -10 }, } diff --git a/data-canary/monster/demons/gozzler.lua b/data-canary/monster/demons/gozzler.lua new file mode 100644 index 00000000000..292ad812e6f --- /dev/null +++ b/data-canary/monster/demons/gozzler.lua @@ -0,0 +1,129 @@ +local mType = Game.createMonsterType("Gozzler") +local monster = {} + +monster.description = "a gozzler" +monster.experience = 180 +monster.outfit = { + lookType = 313, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 523 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Magician Quarter, cave in Beregar, Farmine Mines.", +} + +monster.health = 240 +monster.maxHealth = 240 +monster.race = "undead" +monster.corpse = 9024 +monster.speed = 120 +monster.manaCost = 800 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Huhuhuhuuu!", yell = false }, + { text = "Let the fun begin!", yell = false }, + { text = "Yihahaha!", yell = false }, + { text = "I'll bite you! Nyehehehe!", yell = false }, + { text = "Nyarnyarnyarnyar.", yell = false }, +} + +monster.loot = { + { name = "brown flask", chance = 8750 }, + { name = "small sapphire", chance = 360 }, + { name = "gold coin", chance = 52500, maxCount = 70 }, + { id = 3097, chance = 190 }, -- dwarven ring + { name = "battle axe", chance = 3100 }, + { name = "sabre", chance = 8250 }, + { name = "morning star", chance = 5000 }, + { name = "serpent sword", chance = 250 }, + { name = "clerical mace", chance = 900 }, + { name = "plate shield", chance = 10000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -32, maxDamage = -135, range = 1, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 25, + mitigation = 1.37, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 210, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/grimeleech.lua b/data-canary/monster/demons/grimeleech.lua new file mode 100644 index 00000000000..8db5e5d7069 --- /dev/null +++ b/data-canary/monster/demons/grimeleech.lua @@ -0,0 +1,152 @@ +local mType = Game.createMonsterType("Grimeleech") +local monster = {} + +monster.description = "a grimeleech" +monster.experience = 7216 +monster.outfit = { + lookType = 855, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1196 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Grounds of Damnation, Grounds of Deceit, Grounds of Despair, Grounds of Fire, Grounds of Plague, Halls of Ascension and Hell Hub.", +} + +monster.health = 9500 +monster.maxHealth = 9500 +monster.race = "undead" +monster.corpse = 22780 +monster.speed = 170 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 3000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Death... Taste!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 197 }, + { name = "platinum coin", chance = 100000, maxCount = 8 }, + { name = "great mana potion", chance = 34850, maxCount = 3 }, + { name = "great health potion", chance = 34290, maxCount = 3 }, + { name = "great spirit potion", chance = 30860, maxCount = 3 }, + { name = "flask of demonic blood", chance = 23400, maxCount = 3 }, + { name = "demonic essence", chance = 19240 }, + { name = "some grimeleech wings", chance = 19080 }, + { name = "fire mushroom", chance = 15360, maxCount = 5 }, + { name = "green mushroom", chance = 14800, maxCount = 5 }, + { name = "small diamond", chance = 11290, maxCount = 5 }, + { name = "small ruby", chance = 10750, maxCount = 5 }, + { name = "small topaz", chance = 9660, maxCount = 5 }, + { name = "small amethyst", chance = 9640, maxCount = 5 }, + { name = "underworld rod", chance = 6890 }, + { name = "wand of voodoo", chance = 4810 }, + { id = 3039, chance = 3930 }, -- red gem + { name = "yellow gem", chance = 2900 }, + { name = "devil helmet", chance = 1360 }, + { name = "magma legs", chance = 1150 }, + { name = "demon shield", chance = 1010 }, + { name = "nightmare blade", chance = 930 }, + { name = "blue gem", chance = 780 }, + { name = "rift crossbow", chance = 720 }, + { name = "steel boots", chance = 640 }, + { name = "rift shield", chance = 620 }, + { name = "rift lance", chance = 580 }, + { name = "rift bow", chance = 370 }, + { name = "abyss hammer", chance = 210 }, + { name = "vile axe", chance = 180 }, + { name = "magic plate armor", chance = 60 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 80 }, + { name = "melee", interval = 2000, chance = 2, skill = 153, attack = 100 }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAINDAMAGE, minDamage = 100, maxDamage = -565, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAINDAMAGE, minDamage = -150, maxDamage = -220, length = 8, spread = 0, effect = CONST_ME_MAGIC_GREEN, target = false }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -375, radius = 4, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 9, type = COMBAT_MANADRAINDAMAGE, minDamage = 0, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 65, + mitigation = 1.74, + { name = "combat", interval = 2000, chance = 16, type = COMBAT_HEALING, minDamage = 130, maxDamage = 205, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "effect", interval = 2000, chance = 9, effect = CONST_ME_MAGIC_GREEN, target = false }, + { name = "effect", interval = 2000, chance = 10, target = false }, + { name = "speed", interval = 2000, chance = 12, speedChange = 532, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 60 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/hellfire_fighter.lua b/data-canary/monster/demons/hellfire_fighter.lua new file mode 100644 index 00000000000..2ae5b00303a --- /dev/null +++ b/data-canary/monster/demons/hellfire_fighter.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Hellfire Fighter") +local monster = {} + +monster.description = "a hellfire fighter" +monster.experience = 3800 +monster.outfit = { + lookType = 243, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 295 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Pits of Inferno, Demon Forge, Fury Dungeon.", +} + +monster.health = 3800 +monster.maxHealth = 3800 +monster.race = "fire" +monster.corpse = 6323 +monster.speed = 165 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + random = 20, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 5, + color = 212, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "emerald bangle", chance = 2200 }, + { id = 3019, chance = 190 }, -- demonbone amulet + { name = "small diamond", chance = 1400 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 40000, maxCount = 100 }, + { name = "gold coin", chance = 10000, maxCount = 46 }, + { name = "wand of inferno", chance = 9450 }, + { name = "burnt scroll", chance = 50000 }, + { name = "blank rune", chance = 30000, maxCount = 2 }, + { name = "fire sword", chance = 4140 }, + { name = "fire axe", chance = 440 }, + { name = "soul orb", chance = 12150 }, + { name = "demonic essence", chance = 14500 }, + { name = "magma legs", chance = 682 }, + { name = "magma coat", chance = 380 }, + { name = "fiery heart", chance = 9570 }, + { name = "piece of hellfire armor", chance = 5060 }, + { id = 12600, chance = 670 }, -- coal + { name = "eternal flames", chance = 380 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -520 }, + { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -392, maxDamage = -1500, length = 8, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -330, range = 7, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "hellfire fighter soulfire", interval = 2000, chance = 15, target = false }, +} + +monster.defenses = { + defense = 35, + armor = 62, + mitigation = 1.60, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 50 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -25 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/hellflayer.lua b/data-canary/monster/demons/hellflayer.lua new file mode 100644 index 00000000000..1e54dca6f57 --- /dev/null +++ b/data-canary/monster/demons/hellflayer.lua @@ -0,0 +1,150 @@ +local mType = Game.createMonsterType("Hellflayer") +local monster = {} + +monster.description = "a hellflayer" +monster.experience = 11720 +monster.outfit = { + lookType = 856, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1198 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Grounds of Damnation, Grounds of Despair, Grounds of Destruction, Grounds of Fire, Grounds of Plague, Grounds of Undeath, Halls of Ascension and Hell Hub", +} + +monster.health = 14000 +monster.maxHealth = 14000 +monster.race = "blood" +monster.corpse = 22784 +monster.speed = 165 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Your tainted soul belongs to us anyway!", yell = false }, + { text = "You should consider bargaining for your life!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 90000, maxCount = 130 }, -- gold coin + { id = 3035, chance = 20000, maxCount = 9 }, -- platinum coin + { id = 6558, chance = 4000, maxCount = 3 }, -- flask of demonic blood + { id = 9058, chance = 1300, maxCount = 2 }, -- gold ingot + { id = 238, chance = 9600, maxCount = 2 }, -- great mana potion + { id = 7642, chance = 2300, maxCount = 2 }, -- great spirit potion + { id = 3033, chance = 2000, maxCount = 5 }, -- small amethyst + { id = 3028, chance = 900, maxCount = 5 }, -- small diamond + { id = 3032, chance = 900, maxCount = 5 }, -- small emerald + { id = 3030, chance = 2000, maxCount = 5 }, -- small ruby + { id = 9057, chance = 900, maxCount = 5 }, -- small topaz + { id = 7643, chance = 5300, maxCount = 2 }, -- ultimate health potion + { id = 3019, chance = 1000 }, -- demonbone amulet + { id = 6499, chance = 1600 }, -- demonic essence + { id = 281, chance = 800 }, -- giant shimmering pearl (green) + { id = 3038, chance = 800 }, -- green gem + { id = 818, chance = 500 }, -- magma boots + { id = 821, chance = 1200 }, -- magma legs + { id = 3414, chance = 350 }, -- mastermind shield + { id = 22729, chance = 800 }, -- pair of hellflayer horns + { id = 3039, chance = 500 }, -- red gem + { id = 22866, chance = 280 }, -- rift bow + { id = 22867, chance = 180 }, -- rift crossbow + { id = 5741, chance = 450 }, -- skull helmet + { id = 22727, chance = 200 }, -- rift lance + { id = 7413, chance = 900 }, -- titan axe + { id = 3360, chance = 750 }, -- golden armor + { id = 8074, chance = 900 }, -- spellbook of mind control + { id = 3340, chance = 400 }, -- heavy mace +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 200, maxDamage = -869, condition = { type = CONDITION_FIRE, totalDamage = 6, interval = 9000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -170, maxDamage = -300, range = 7, shootEffect = CONST_ANI_POISON, target = false }, + { name = "choking fear drown", interval = 2000, chance = 20, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -500, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -200, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -550, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, + { name = "warlock skill reducer", interval = 2000, chance = 5, range = 5, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 300, maxDamage = -500, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_SLEEP, target = true }, +} + +monster.defenses = { + defense = 20, + armor = 55, + mitigation = 1.60, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 70 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 25 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/hellhound.lua b/data-canary/monster/demons/hellhound.lua index de0430ca639..81fc0739e6a 100644 --- a/data-canary/monster/demons/hellhound.lua +++ b/data-canary/monster/demons/hellhound.lua @@ -23,8 +23,8 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Infernatil's Throneroom The Inquisition Quest Area, Hellgorge, \z - Roshamuul Prison, Chyllfroest, Oramond Dungeon, The Extension Site and under the Asura Palace.", + Locations = "Pits of Inferno (Infernatil's Throneroom), The Inquisition Quest Area, Hellgorge, \z + Roshamuul Prison, Chyllfroest, Oramond Dungeon, The Extension Site and Asura Vaults.", } monster.health = 7500 @@ -53,7 +53,7 @@ monster.flags = { convinceable = false, pushable = false, rewardBoss = false, - illusionable = true, + illusionable = false, canPushItems = true, canPushCreatures = true, staticAttackChance = 70, @@ -61,20 +61,20 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, } monster.light = { - level = 0, - color = 0, + level = 3, + color = 206, } monster.voices = { interval = 5000, chance = 10, - { text = "GROOOOWL!", yell = false }, + { text = "GROOOOWL!", yell = true }, } monster.loot = { @@ -83,8 +83,7 @@ monster.loot = { { id = 3116, chance = 900 }, -- big bone { id = 3027, chance = 9200, maxCount = 4 }, -- black pearl { id = 16131, chance = 12500 }, -- blazing bone - { id = 6558, chance = 20000 }, -- concentrated demonic blood - { id = 6558, chance = 20000 }, -- concentrated demonic blood + { id = 6558, chance = 20000, maxCount = 2 }, -- flask of demonic blood { id = 6499, chance = 20000 }, -- demonic essence { id = 4871, chance = 400 }, -- explorer brooch { id = 9636, chance = 10000 }, -- fiery heart @@ -94,8 +93,7 @@ monster.loot = { { id = 238, chance = 30000, maxCount = 3 }, -- great mana potion { id = 7642, chance = 20000 }, -- great spirit potion { id = 3038, chance = 1000 }, -- green gem - { id = 5910, chance = 5000 }, -- green piece of cloth - { id = 3582, chance = 30000, maxCount = 6 }, -- ham + { id = 3582, chance = 30000, maxCount = 14 }, -- ham { id = 5925, chance = 10000 }, -- hardened bone { id = 9637, chance = 20000 }, -- hellhound slobber { id = 3318, chance = 7500 }, -- knight axe @@ -107,7 +105,6 @@ monster.loot = { { id = 7421, chance = 1000 }, -- onyx flail { id = 3035, chance = 100000, maxCount = 7 }, -- platinum coin { id = 3039, chance = 4500 }, -- red gem - { id = 5911, chance = 3000 }, -- red piece of cloth { id = 6553, chance = 1000 }, -- ruthless axe { id = 3032, chance = 10000, maxCount = 3 }, -- small emerald { id = 3030, chance = 10000, maxCount = 3 }, -- small ruby @@ -116,6 +113,8 @@ monster.loot = { { id = 7643, chance = 16000 }, -- ultimate health potion { id = 3071, chance = 7000 }, -- wand of inferno { id = 3037, chance = 4500 }, -- yellow gem + { id = 5911, chance = 3000 }, -- red piece of cloth + { id = 5910, chance = 5000 }, -- green piece of cloth { id = 5914, chance = 6000 }, -- yellow piece of cloth } @@ -131,7 +130,8 @@ monster.attacks = { monster.defenses = { defense = 40, - armor = 40, + armor = 60, + mitigation = 2.75, { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 220, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false }, } @@ -145,7 +145,7 @@ monster.elements = { { type = COMBAT_MANADRAIN, percent = 0 }, { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = -5 }, - { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, { type = COMBAT_DEATHDAMAGE, percent = 0 }, } diff --git a/data-canary/monster/demons/hellspawn.lua b/data-canary/monster/demons/hellspawn.lua index 44fa905fa9a..95c8efb25a4 100644 --- a/data-canary/monster/demons/hellspawn.lua +++ b/data-canary/monster/demons/hellspawn.lua @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Magician Quarter, Vengoth, Deeper Banuta, Formorgar Mines, Chyllfroest, Oramond Dungeon.", + Locations = "Magician Quarter, Vengoth, Deeper Banuta, Formorgar Minese, Chyllfroest, Oramond Dungeon, Asura Palace, Asura Vaults.", } monster.health = 3500 @@ -60,7 +60,7 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = true, + canWalkOnEnergy = false, canWalkOnFire = true, canWalkOnPoison = true, } @@ -81,37 +81,37 @@ monster.voices = { } monster.loot = { - { id = 3031, chance = 60000, maxCount = 100 }, -- gold coin - { id = 3031, chance = 60000, maxCount = 100 }, -- gold coin - { id = 3031, chance = 60000, maxCount = 36 }, -- gold coin - { id = 3282, chance = 10000 }, -- morning star - { id = 3369, chance = 1886 }, -- warrior helmet - { id = 3371, chance = 3030 }, -- knight legs - { id = 3724, chance = 7692, maxCount = 2 }, -- red mushroom - { id = 6499, chance = 9090 }, -- demonic essence - { id = 7368, chance = 9090, maxCount = 2 }, -- assassin star - { id = 7421, chance = 103 }, -- onyx flail - { id = 7439, chance = 934 }, -- berserk potion - { id = 7452, chance = 970 }, -- spiked squelcher - { id = 239, chance = 40333 }, -- great health potion - { id = 7643, chance = 9090 }, -- ultimate health potion + { name = "gold coin", chance = 93000, maxCount = 236 }, + { name = "morning star", chance = 10000 }, + { name = "warrior helmet", chance = 1886 }, + { name = "knight legs", chance = 3030 }, + { name = "red mushroom", chance = 7692, maxCount = 2 }, + { name = "demonic essence", chance = 9090 }, + { name = "battle shield", chance = 7500 }, + { name = "assassin star", chance = 9090, maxCount = 2 }, + { name = "onyx flail", chance = 103 }, + { name = "berserk potion", chance = 934 }, + { name = "spiked squelcher", chance = 970 }, + { name = "great health potion", chance = 40333 }, + { name = "ultimate health potion", chance = 9090 }, { id = 8895, chance = 3125 }, -- rusted armor { id = 8896, chance = 3125 }, -- slightly rusted armor { id = 9034, chance = 140 }, -- dracoyle statue { id = 9056, chance = 151 }, -- black skull - { id = 9057, chance = 5882, maxCount = 3 }, -- small topaz - { id = 10304, chance = 20000 }, -- hellspawn tail + { name = "small topaz", chance = 5882, maxCount = 3 }, + { name = "hellspawn tail", chance = 20000 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -352 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -175, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = false }, - -- {name ="hellspawn soulfire", interval = 2000, chance = 10, range = 5, target = false} + { name = "hellspawn soulfire", interval = 2000, chance = 10, range = 5, target = false }, } monster.defenses = { defense = 40, - armor = 40, + armor = 44, + mitigation = 1.32, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 120, maxDamage = 230, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = 270, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } diff --git a/data-canary/monster/demons/herald_of_gloom.lua b/data-canary/monster/demons/herald_of_gloom.lua new file mode 100644 index 00000000000..4eaf4a0281c --- /dev/null +++ b/data-canary/monster/demons/herald_of_gloom.lua @@ -0,0 +1,126 @@ +local mType = Game.createMonsterType("Herald of Gloom") +local monster = {} + +monster.description = "a herald of gloom" +monster.experience = 450 +monster.outfit = { + lookType = 320, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 586 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Edron Hero Cave around the Lightbringers basin.", +} + +monster.health = 340 +monster.maxHealth = 340 +monster.race = "undead" +monster.corpse = 9001 +monster.speed = 85 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 0, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "The powers of light are waning.", yell = false }, + { text = "You will join us in eternal night!", yell = false }, + { text = "The shadows will engulf the world.", yell = false }, +} + +monster.loot = { + { name = "midnight shard", chance = 1886 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, + { name = "speed", interval = 3000, chance = 10, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, + { name = "combat", interval = 2000, chance = 24, type = COMBAT_HOLYDAMAGE, minDamage = -90, maxDamage = -170, range = 4, shootEffect = CONST_ANI_SMALLHOLY, target = false }, +} + +monster.defenses = { + defense = 55, + armor = 25, + mitigation = 1.32, + { name = "speed", interval = 1000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, + { name = "invisible", interval = 5000, chance = 20, effect = CONST_ME_MAGIC_RED }, + { name = "outfit", interval = 1500, chance = 20, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "nightstalker" }, + { name = "outfit", interval = 1500, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "werewolf" }, + { name = "outfit", interval = 1500, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "the count =" }, + { name = "outfit", interval = 1500, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "grim reaper" }, + { name = "outfit", interval = 1500, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "tarantula" }, + { name = "outfit", interval = 1500, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "ferumbras" }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 70 }, + { type = COMBAT_FIREDAMAGE, percent = 40 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/juggernaut.lua b/data-canary/monster/demons/juggernaut.lua index fa8947d54a7..8f783924ef2 100644 --- a/data-canary/monster/demons/juggernaut.lua +++ b/data-canary/monster/demons/juggernaut.lua @@ -23,8 +23,9 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Deep in Pits of Inferno (Apocalypse's throne room), The Dark Path, \z - The Blood Halls, The Vats, The Hive, The Shadow Nexus, a room deep in Formorgar Mines, Roshamuul Prison, Oramond Dungeon, Grounds of Destruction.", + Locations = "Deep in Pits of Inferno (Apocalypse's throne room), The Dark Path, The Blood Halls, \z + The Vats, The Hive, The Shadow Nexus, a room deep in Formorgar Mines, Roshamuul Prison, \z + Oramond Dungeon, Grounds of Destruction and Halls of Ascension.", } monster.health = 18000 @@ -53,7 +54,7 @@ monster.flags = { convinceable = false, pushable = false, rewardBoss = false, - illusionable = true, + illusionable = false, canPushItems = true, canPushCreatures = true, staticAttackChance = 60, @@ -74,43 +75,43 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, - { text = "RAAARRR!", yell = false }, - { text = "GRRRRRR!", yell = false }, - { text = "WAHHHH!", yell = false }, + { text = "RAAARRR!", yell = true }, + { text = "GRRRRRR!", yell = true }, + { text = "WAHHHH!", yell = true }, } monster.loot = { { id = 3019, chance = 550 }, -- demonbone amulet - { id = 3030, chance = 20000, maxCount = 4 }, -- small ruby - { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin - { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin - { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin - { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin - { id = 3032, chance = 20000, maxCount = 5 }, -- small emerald - { id = 3035, chance = 100000, maxCount = 15 }, -- platinum coin - { id = 3036, chance = 830 }, -- violet gem - { id = 3038, chance = 869 }, -- green gem + { name = "small ruby", chance = 20000, maxCount = 4 }, + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "small emerald", chance = 20000, maxCount = 5 }, + { name = "platinum coin", chance = 100000, maxCount = 15 }, + { name = "violet gem", chance = 830 }, + { name = "green gem", chance = 869 }, { id = 3039, chance = 13850 }, -- red gem - { id = 3322, chance = 9000 }, -- dragon hammer - { id = 3340, chance = 400 }, -- heavy mace - { id = 3342, chance = 400 }, -- war axe - { id = 3360, chance = 550 }, -- golden armor - { id = 3364, chance = 500 }, -- golden legs - { id = 3370, chance = 4990 }, -- knight armor - { id = 3414, chance = 800 }, -- mastermind shield + { name = "dragon hammer", chance = 9000 }, + { name = "heavy mace", chance = 400 }, + { name = "war axe", chance = 400 }, + { name = "golden armor", chance = 550 }, + { name = "golden legs", chance = 500 }, + { name = "knight armor", chance = 4990 }, + { name = "mastermind shield", chance = 800 }, { id = 3481, chance = 280 }, -- closed trap - { id = 3582, chance = 60000, maxCount = 8 }, -- ham - { id = 5944, chance = 33333 }, -- soul orb - { id = 6499, chance = 45333 }, -- demonic essence - { id = 6558, chance = 25000, maxCount = 4 }, -- concentrated demonic blood - { id = 7365, chance = 11111, maxCount = 15 }, -- onyx arrow - { id = 7368, chance = 25000, maxCount = 10 }, -- assassin star - { id = 7413, chance = 4430 }, -- titan axe - { id = 7452, chance = 7761 }, -- spiked squelcher - { id = 238, chance = 35000 }, -- great mana potion - { id = 239, chance = 32000 }, -- great health potion - { id = 8061, chance = 400 }, -- skullcracker armor - { id = 9058, chance = 7692, maxCount = 2 }, -- gold ingot + { name = "ham", chance = 60000, maxCount = 8 }, + { name = "soul orb", chance = 33333 }, + { name = "demonic essence", chance = 45333 }, + { name = "flask of demonic blood", chance = 25000, maxCount = 4 }, + { name = "onyx arrow", chance = 11111, maxCount = 15 }, + { name = "assassin star", chance = 25000, maxCount = 10 }, + { name = "titan axe", chance = 4430 }, + { name = "spiked squelcher", chance = 7761 }, + { name = "great mana potion", chance = 35000 }, + { name = "great health potion", chance = 32000 }, + { name = "skullcracker armor", chance = 400 }, + { name = "gold ingot", chance = 7692, maxCount = 2 }, } monster.attacks = { @@ -120,13 +121,14 @@ monster.attacks = { monster.defenses = { defense = 60, - armor = 60, + armor = 70, + mitigation = 1.74, { name = "speed", interval = 2000, chance = 15, speedChange = 520, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 400, maxDamage = 900, effect = CONST_ME_MAGIC_BLUE, target = false }, } monster.elements = { - { type = COMBAT_PHYSICALDAMAGE, percent = 40 }, + { type = COMBAT_PHYSICALDAMAGE, percent = 30 }, { type = COMBAT_ENERGYDAMAGE, percent = -10 }, { type = COMBAT_EARTHDAMAGE, percent = 20 }, { type = COMBAT_FIREDAMAGE, percent = 30 }, diff --git a/data-canary/monster/demons/midnight_asura.lua b/data-canary/monster/demons/midnight_asura.lua new file mode 100644 index 00000000000..c3b0b3791e6 --- /dev/null +++ b/data-canary/monster/demons/midnight_asura.lua @@ -0,0 +1,152 @@ +local mType = Game.createMonsterType("Midnight Asura") +local monster = {} + +monster.description = "a midnight asura" +monster.experience = 4100 +monster.outfit = { + lookType = 150, + lookHead = 0, + lookBody = 114, + lookLegs = 90, + lookFeet = 90, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 1135 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Asura Palace.", +} + +monster.health = 3100 +monster.maxHealth = 3100 +monster.race = "blood" +monster.corpse = 21988 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Death and Darkness!", yell = false }, + { text = "Embrace the night!", yell = false }, + { text = "May night fall upon you!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 70980, maxCount = 100 }, -- gold coin + { id = 3035, chance = 80500, maxCount = 6 }, -- platinum coin + { id = 7368, chance = 6640, maxCount = 5 }, -- assassin star + { id = 3027, chance = 3670, maxCount = 2 }, -- black pearl + { id = 3007, chance = 440 }, -- crystal ring + { id = 6558, chance = 14110 }, -- flask of demonic blood + { id = 6499, chance = 9950 }, -- demonic essence + { id = 3028, chance = 5680, maxCount = 3 }, -- small diamond + { id = 3032, chance = 3240, maxCount = 1 }, -- small emerald + { id = 3030, chance = 3090, maxCount = 1 }, -- small ruby + { id = 3029, chance = 5550, maxCount = 3 }, -- small sapphire + { id = 9057, chance = 2910, maxCount = 1 }, -- small topaz + { id = 239, chance = 8450, maxCount = 2 }, -- great health potion + { id = 3026, chance = 5660 }, -- white pearl + { id = 7404, chance = 350 }, -- assassin dagger + { id = 3041, chance = 290 }, -- blue gem + { id = 3567, chance = 530 }, -- blue robe + { id = 9058, chance = 140 }, -- gold ingot + { id = 21974, chance = 12700 }, -- golden lotus brooch + { id = 3069, chance = 2460 }, -- necrotic rod + { id = 21981, chance = 390 }, -- oriental shoes + { id = 21975, chance = 10740 }, -- peacock feather fan + { id = 8061, chance = 180 }, -- skullcracker armor + { id = 3017, chance = 3650 }, -- silver brooch + { id = 3054, chance = 1050 }, -- silver amulet + { id = 5944, chance = 14580 }, -- soul orb + { id = 8074, chance = 150 }, -- spellbook of mind control + { id = 3403, chance = 2030 }, -- tribal mask + { id = 8082, chance = 760 }, -- underworld rod + { id = 3037, chance = 870 }, -- yellow gem +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -387 }, + { name = "combat", interval = 3300, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -70, range = 7, target = true }, + { name = "combat", interval = 3700, chance = 17, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -200, length = 5, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 4100, chance = 27, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -300, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2700, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -200, range = 5, shootEffect = CONST_ANI_SUDDENDEATH, target = true }, + { name = "combat", interval = 3100, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -50, maxDamage = -100, range = 1, shootEffect = CONST_ANI_ENERGY, target = true }, + { name = "speed", interval = 2000, chance = 20, speedChange = -800, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_SLEEP, target = true, duration = 15000 }, +} + +monster.defenses = { + defense = 55, + armor = 55, + mitigation = 1.60, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/nightfiend.lua b/data-canary/monster/demons/nightfiend.lua new file mode 100644 index 00000000000..c43285ecada --- /dev/null +++ b/data-canary/monster/demons/nightfiend.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Nightfiend") +local monster = {} + +monster.description = "a nightfiend" +monster.experience = 2100 +monster.outfit = { + lookType = 556, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 973 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Deep under Drefia.", +} + +monster.health = 2700 +monster.maxHealth = 2700 +monster.race = "blood" +monster.corpse = 18952 +monster.speed = 112 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 80, + health = 10, + damage = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 50000, maxCount = 1 }, + { name = "gold coin", chance = 50000, maxCount = 148 }, + { id = 3030, chance = 1052, maxCount = 3 }, + { name = "tooth file", chance = 564 }, + { name = "blood preservation", chance = 1000 }, + { name = "emerald bangle", chance = 120 }, + { name = "vampire teeth", chance = 10000 }, + { name = "vampire shield", chance = 50 }, + { name = "strong health potion", chance = 4761 }, + { name = "strong mana potion", chance = 5000 }, + { id = 3039, chance = 55 }, -- red gem + { id = 3098, chance = 1000 }, -- ring of healing +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, + { name = "combat", interval = 1000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -5, maxDamage = -40, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, +} + +monster.defenses = { + defense = 11, + armor = 46, + mitigation = 1.43, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = -8 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/plaguesmith.lua b/data-canary/monster/demons/plaguesmith.lua new file mode 100644 index 00000000000..e919f78cf09 --- /dev/null +++ b/data-canary/monster/demons/plaguesmith.lua @@ -0,0 +1,149 @@ +local mType = Game.createMonsterType("Plaguesmith") +local monster = {} + +monster.description = "a plaguesmith" +monster.experience = 3800 +monster.outfit = { + lookType = 247, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 314 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Pits of Inferno, Formorgar Mines, Edron Demon Forge (The Vats, The Foundry), \z + Magician Quarter, Alchemist Quarter, Roshamuul Prison, Grounds of Plague and Halls of Ascension.", +} + +monster.health = 8250 +monster.maxHealth = 8250 +monster.race = "venom" +monster.corpse = 6515 +monster.speed = 160 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 500, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You are looking a bit feverish!", yell = false }, + { text = "You don't look that good!", yell = false }, + { text = "Hachoo!", yell = false }, + { text = "Cough Cough", yell = false }, +} + +monster.loot = { + { name = "emerald bangle", chance = 341 }, + { name = "silver brooch", chance = 2000 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 40000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 65 }, + { name = "small amethyst", chance = 5000, maxCount = 3 }, + { name = "platinum coin", chance = 7142, maxCount = 2 }, + { id = 3092, chance = 4347 }, -- axe ring + { id = 3093, chance = 4761 }, -- club ring + { name = "piece of iron", chance = 20000 }, + { name = "mouldy cheese", chance = 50000 }, + { id = 3122, chance = 60000 }, -- dirty cape + { name = "two handed sword", chance = 20000 }, + { name = "war hammer", chance = 2127 }, + { name = "morning star", chance = 29000 }, + { name = "battle hammer", chance = 20000 }, + { name = "hammer of wrath", chance = 952 }, + { name = "knight legs", chance = 6250 }, + { name = "steel shield", chance = 20000 }, + { name = "steel boots", chance = 1123 }, + { name = "piece of royal steel", chance = 1234 }, + { name = "piece of hell steel", chance = 1010 }, + { name = "piece of draconian steel", chance = 1030 }, + { name = "soul orb", chance = 11111 }, + { name = "demonic essence", chance = 9033 }, + { name = "onyx arrow", chance = 7692, maxCount = 4 }, + { name = "great health potion", chance = 10000 }, + { id = 8896, chance = 540 }, -- slightly rusted armor +} + +monster.attacks = { + { name = "melee", interval = 1500, chance = 100, minDamage = 0, maxDamage = -539, condition = { type = CONDITION_POISON, totalDamage = 200, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -114, radius = 4, effect = CONST_ME_POISONAREA, target = false }, + { name = "plaguesmith wave", interval = 2000, chance = 10, minDamage = -100, maxDamage = -350, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -800, radius = 4, effect = CONST_ME_POISONAREA, target = false, duration = 30000 }, +} + +monster.defenses = { + defense = 40, + armor = 30, + mitigation = 1.32, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 200, maxDamage = 280, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 440, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/shaburak_demon.lua b/data-canary/monster/demons/shaburak_demon.lua new file mode 100644 index 00000000000..d3e362a3e03 --- /dev/null +++ b/data-canary/monster/demons/shaburak_demon.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Shaburak Demon") +local monster = {} + +monster.description = "a shaburak demon" +monster.experience = 900 +monster.outfit = { + lookType = 417, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 724 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Demonwar Crypt.", +} + +monster.health = 1500 +monster.maxHealth = 1500 +monster.race = "fire" +monster.corpse = 12658 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "GREEN IS MEAN!", yell = true }, + { text = "WE RULE!", yell = true }, + { text = "POWER TO THE SHABURAK!", yell = true }, + { text = "DEATH TO THE ASKARAK!", yell = true }, +} + +monster.loot = { + { name = "piggy bank", chance = 1030 }, + { name = "small ruby", chance = 4761, maxCount = 5 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 50 }, + { id = 3051, chance = 1052 }, -- energy ring + { name = "wand of inferno", chance = 564 }, + { name = "brown mushroom", chance = 3846 }, + { name = "magic sulphur", chance = 81 }, + { name = "royal spear", chance = 10000, maxCount = 6 }, + { name = "bullseye potion", chance = 628 }, + { name = "strong health potion", chance = 4761 }, + { name = "strong mana potion", chance = 5000 }, + { name = "magma legs", chance = 155 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -113 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -20, maxDamage = -60, range = 7, radius = 6, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = false }, + { name = "shaburak wave", interval = 2000, chance = 15, minDamage = -70, maxDamage = -140, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -130, maxDamage = -170, length = 4, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = -600, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 }, +} + +monster.defenses = { + defense = 15, + armor = 35, + mitigation = 1.04, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 60 }, + { type = COMBAT_EARTHDAMAGE, percent = -25 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 60 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/shaburak_lord.lua b/data-canary/monster/demons/shaburak_lord.lua new file mode 100644 index 00000000000..f56d4735384 --- /dev/null +++ b/data-canary/monster/demons/shaburak_lord.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Shaburak Lord") +local monster = {} + +monster.description = "a shaburak lord" +monster.experience = 1200 +monster.outfit = { + lookType = 409, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 725 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Demonwar Crypt", +} + +monster.health = 2100 +monster.maxHealth = 2100 +monster.race = "fire" +monster.corpse = 12823 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "GREEN IS MEAN!", yell = true }, + { text = "WE RULE!", yell = true }, + { text = "POWER TO THE SHABURAK!", yell = true }, + { text = "DEATH TO THE ASKARAK!", yell = true }, + { text = "ONLY WE ARE TRUE DEMONS!", yell = true }, +} + +monster.loot = { + { name = "small ruby", chance = 6120, maxCount = 5 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 78 }, + { name = "platinum coin", chance = 33333, maxCount = 2 }, + { id = 3051, chance = 1652 }, -- energy ring + { name = "wand of inferno", chance = 800 }, + { name = "steel boots", chance = 160 }, + { name = "brown mushroom", chance = 5346 }, + { name = "magic sulphur", chance = 620 }, + { name = "bullseye potion", chance = 400 }, + { name = "strong health potion", chance = 7000 }, + { name = "strong mana potion", chance = 7000 }, + { name = "magma coat", chance = 100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -251 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -30, maxDamage = -75, range = 7, radius = 6, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = false }, + { name = "shaburak wave", interval = 2000, chance = 15, minDamage = -80, maxDamage = -170, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -140, maxDamage = -200, length = 4, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = -650, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 }, +} + +monster.defenses = { + defense = 20, + armor = 40, + mitigation = 1.18, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 65 }, + { type = COMBAT_EARTHDAMAGE, percent = -20 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 65 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/shaburak_prince.lua b/data-canary/monster/demons/shaburak_prince.lua new file mode 100644 index 00000000000..5419300c3a6 --- /dev/null +++ b/data-canary/monster/demons/shaburak_prince.lua @@ -0,0 +1,137 @@ +local mType = Game.createMonsterType("Shaburak Prince") +local monster = {} + +monster.description = "a shaburak prince" +monster.experience = 1700 +monster.outfit = { + lookType = 418, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 726 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Demonwar Crypt", +} + +monster.health = 2600 +monster.maxHealth = 2600 +monster.race = "fire" +monster.corpse = 12834 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "GREEN IS MEAN!", yell = true }, + { text = "WE RULE!", yell = true }, + { text = "POWER TO THE SHABURAK!", yell = true }, + { text = "DEATH TO THE ASKARAK!", yell = true }, + { text = "ONLY WE ARE TRUE DEMONS!", yell = true }, +} + +monster.loot = { + { name = "small ruby", chance = 12500, maxCount = 5 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 78 }, + { name = "platinum coin", chance = 33333, maxCount = 4 }, + { id = 3049, chance = 5000 }, -- stealth ring + { name = "wand of inferno", chance = 892 }, + { name = "steel boots", chance = 89 }, + { name = "brown mushroom", chance = 4545 }, + { name = "magic sulphur", chance = 534 }, + { name = "butcher's axe", chance = 357 }, + { name = "bullseye potion", chance = 714 }, + { name = "strong health potion", chance = 14285 }, + { name = "strong mana potion", chance = 14285 }, + { name = "magma coat", chance = 714 }, + { name = "demonic finger", chance = 178 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -319 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -40, maxDamage = -90, range = 7, radius = 6, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = false }, + { name = "shaburak wave", interval = 2000, chance = 15, minDamage = -100, maxDamage = -200, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -250, length = 4, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 15000 }, +} + +monster.defenses = { + defense = 30, + armor = 45, + mitigation = 1.32, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 70 }, + { type = COMBAT_EARTHDAMAGE, percent = -15 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 70 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/shadow_hound.lua b/data-canary/monster/demons/shadow_hound.lua new file mode 100644 index 00000000000..fdb672cfa1d --- /dev/null +++ b/data-canary/monster/demons/shadow_hound.lua @@ -0,0 +1,116 @@ +local mType = Game.createMonsterType("Shadow Hound") +local monster = {} + +monster.description = "a shadow hound" +monster.experience = 600 +monster.outfit = { + lookType = 322, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 582 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Ramoa around the Lightbringers basin.", +} + +monster.health = 555 +monster.maxHealth = 555 +monster.race = "blood" +monster.corpse = 9009 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 0, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grrrr!", yell = false }, +} + +monster.loot = { + { name = "midnight shard", chance = 8333 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, + { name = "combat", interval = 2000, chance = 24, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -160, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = false }, +} + +monster.defenses = { + defense = 55, + armor = 38, + mitigation = 1.04, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_HEALING, minDamage = 60, maxDamage = 230, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/true_dawnfire_asura.lua b/data-canary/monster/demons/true_dawnfire_asura.lua new file mode 100644 index 00000000000..b434eb8be72 --- /dev/null +++ b/data-canary/monster/demons/true_dawnfire_asura.lua @@ -0,0 +1,141 @@ +local mType = Game.createMonsterType("True Dawnfire Asura") +local monster = {} + +monster.description = "a true dawnfire asura" +monster.experience = 7475 +monster.outfit = { + lookType = 1068, + lookHead = 114, + lookBody = 94, + lookLegs = 79, + lookFeet = 121, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 1620 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Asura Palace, Asura Vaults.", +} + +monster.health = 8500 +monster.maxHealth = 8500 +monster.race = "blood" +monster.corpse = 28664 +monster.speed = 180 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3035, chance = 100000, maxCount = 8 }, -- platinum coin + { name = "crystal coin", chance = 4670, maxCount = 1 }, + { id = 6558, chance = 30110 }, -- flask of demonic blood + { id = 238, chance = 16560, maxCount = 2 }, -- great mana potion + { id = 3033, chance = 6810, maxCount = 2 }, -- small amethyst + { id = 3028, chance = 7500, maxCount = 2 }, -- small diamond + { id = 3032, chance = 18010, maxCount = 2 }, -- small emerald + { name = "small enchanted ruby", chance = 9440, maxCount = 3 }, + { id = 3030, chance = 11890, maxCount = 2 }, -- small ruby + { id = 9057, chance = 8560, maxCount = 2 }, -- small topaz + { name = "royal star", chance = 4050, maxCount = 3 }, + { id = 3041, chance = 1300 }, -- blue gem + { id = 3039, chance = 3800 }, -- red gem + { id = 6299, chance = 1100 }, -- death ring + { id = 6499, chance = 22110 }, -- demonic essence + { id = 8043, chance = 2200 }, -- focus cape + { id = 21974, chance = 11400 }, -- golden lotus brooch + { id = 826, chance = 1980 }, -- magma coat + { id = 3078, chance = 2820 }, -- mysterious fetish + { id = 3574, chance = 3170 }, -- mystic turban + { id = 21981, chance = 2110 }, -- oriental shoes + { id = 21975, chance = 11460 }, -- peacock feather fan + { id = 5911, chance = 3070 }, -- red piece of cloth + { id = 3016, chance = 2330 }, -- ruby necklace + { id = 5944, chance = 20140 }, -- soul orb + { id = 8074, chance = 620 }, -- spellbook of mind control + { id = 3071, chance = 1440 }, -- wand of inferno +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -700, condition = { type = CONDITION_FIRE, totalDamage = 500, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -300, range = 7, target = false }, -- mana drain beam + { name = "combat", interval = 1000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -450, maxDamage = -830, length = 1, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, -- fire missile + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -550, maxDamage = -750, radius = 4, effect = CONST_ME_BLACKSMOKE, target = false }, -- death ball + { name = "speed", interval = 2000, chance = 15, speedChange = -200, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, -- smoke berserk +} + +monster.defenses = { + defense = 55, + armor = 77, + mitigation = 2.16, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/true_frost_flower_asura.lua b/data-canary/monster/demons/true_frost_flower_asura.lua new file mode 100644 index 00000000000..cd1b3bd8dda --- /dev/null +++ b/data-canary/monster/demons/true_frost_flower_asura.lua @@ -0,0 +1,146 @@ +local mType = Game.createMonsterType("True Frost Flower Asura") +local monster = {} + +monster.description = "a true frost flower asura" +monster.experience = 7069 +monster.outfit = { + lookType = 1068, + lookHead = 9, + lookBody = 0, + lookLegs = 86, + lookFeet = 9, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1622 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Asura Palace, Asura Vaults", +} + +monster.health = 4000 +monster.maxHealth = 4000 +monster.race = "blood" +monster.corpse = 28667 +monster.speed = 150 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 3, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "crystal coin", chance = 7380, maxCount = 1 }, + { id = 3035, chance = 100000, maxCount = 8 }, -- platinum coin + { id = 6558, chance = 19790 }, -- flask of demonic blood + { id = 239, chance = 21030, maxCount = 2 }, -- great health potion + { id = 3028, chance = 11900, maxCount = 2 }, -- small diamond + { id = 3032, chance = 16000, maxCount = 2 }, -- small emerald + { id = 3029, chance = 10970, maxCount = 2 }, -- small sapphire + { id = 3030, chance = 8000, maxCount = 2 }, -- small ruby + { id = 9057, chance = 8510, maxCount = 2 }, -- small topaz + { id = 3041, chance = 1160 }, -- blue gem + { id = 6499, chance = 15280 }, -- demonic essence + { id = 21974, chance = 12080 }, -- golden lotus brooch + { id = 21981, chance = 920 }, -- oriental shoes + { id = 21975, chance = 10510 }, -- peacock feather fan + { id = 3017, chance = 9640 }, -- silver brooch + { id = 5944, chance = 18670 }, -- soul orb + { id = 8074, chance = 940 }, -- spellbook of mind control + { name = "small enchanted sapphire", chance = 9640, maxCount = 3 }, + { id = 3567, chance = 1540 }, -- blue robe + { name = "royal star", chance = 4000, maxCount = 3 }, + { id = 7368, chance = 9640, maxCount = 5 }, -- assassin star + { id = 3403, chance = 3590 }, -- tribal mask + { id = 9058, chance = 2380 }, -- gold ingot + { id = 3027, chance = 10360, maxCount = 2 }, -- black pearl + { id = 3037, chance = 4510 }, -- yellow gem + { id = 3026, chance = 8620, maxCount = 2 }, -- white pearl + { name = "northwind rod", chance = 3180 }, + { id = 3054, chance = 2260 }, -- silver amulet + { id = 7404, chance = 730 }, -- assassin dagger + { id = 8061, chance = 730 }, -- skullcracker armor + { id = 3067, chance = 1030 }, -- hailstorm rod + { id = 3007, chance = 820 }, -- crystal ring +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500, condition = { type = CONDITION_FREEZING, totalDamage = 400, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -250, range = 7, target = false }, + { name = "combat", interval = 1000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -550, maxDamage = -780, length = 8, spread = 0, effect = CONST_ME_ICETORNADO, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -300, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -100, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, +} + +monster.defenses = { + defense = 55, + armor = 72, + mitigation = 2.11, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/true_midnight_asura.lua b/data-canary/monster/demons/true_midnight_asura.lua new file mode 100644 index 00000000000..ebdac293ea6 --- /dev/null +++ b/data-canary/monster/demons/true_midnight_asura.lua @@ -0,0 +1,149 @@ +local mType = Game.createMonsterType("True Midnight Asura") +local monster = {} + +monster.description = "a true midnight asura" +monster.experience = 7313 +monster.outfit = { + lookType = 1068, + lookHead = 0, + lookBody = 76, + lookLegs = 53, + lookFeet = 0, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 1621 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Asura Palace, Asura Vaults.", +} + +monster.health = 9000 +monster.maxHealth = 9000 +monster.race = "blood" +monster.corpse = 28617 +monster.speed = 170 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "violet gem", chance = 1390 }, + { name = "crystal coin", chance = 5760, maxCount = 1 }, + { name = "royal star", chance = 4090, maxCount = 3 }, + { id = 3035, chance = 100000, maxCount = 8 }, -- platinum coin + { id = 7368, chance = 9210, maxCount = 5 }, -- assassin star + { id = 3027, chance = 9870, maxCount = 2 }, -- black pearl + { id = 6558, chance = 20540 }, -- flask of demonic blood + { id = 6499, chance = 10730 }, -- demonic essence + { id = 3028, chance = 15630, maxCount = 2 }, -- small diamond + { id = 3032, chance = 7750, maxCount = 2 }, -- small emerald + { id = 3030, chance = 7830, maxCount = 2 }, -- small ruby + { id = 3029, chance = 12690, maxCount = 2 }, -- small sapphire + { id = 9057, chance = 8120, maxCount = 2 }, -- small topaz + { id = 239, chance = 19960, maxCount = 2 }, -- great health potion + { id = 3026, chance = 8170, maxCount = 2 }, -- white pearl + { id = 7404, chance = 980 }, -- assassin dagger + { id = 3041, chance = 1020 }, -- blue gem + { id = 3567, chance = 900 }, -- blue robe + { id = 9058, chance = 900 }, -- gold ingot + { id = 21974, chance = 12440 }, -- golden lotus brooch + { id = 3069, chance = 3610 }, -- necrotic rod + { id = 21981, chance = 1820 }, -- oriental shoes + { id = 21975, chance = 12790 }, -- peacock feather fan + { id = 8061, chance = 930 }, -- skullcracker armor + { id = 3017, chance = 10060 }, -- silver brooch + { id = 3054, chance = 2020 }, -- silver amulet + { id = 5944, chance = 10020 }, -- soul orb + { id = 8074, chance = 900 }, -- spellbook of mind control + { id = 3403, chance = 2290 }, -- tribal mask + { id = 8082, chance = 990 }, -- underworld rod + { id = 3037, chance = 900 }, -- yellow gem + { id = 3007, chance = 930 }, -- crystal ring + { name = "small enchanted amethyst", chance = 1441, maxCount = 3 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -500, maxDamage = -650, range = 5, effect = CONST_ME_MORTAREA, target = true }, --Death Missile + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -280, range = 7, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -240, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -500, maxDamage = -700, length = 8, spread = 0, effect = CONST_ME_BLACKSMOKE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -100, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, +} + +monster.defenses = { + defense = 55, + armor = 75, + mitigation = 2.16, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, + { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/demons/vexclaw.lua b/data-canary/monster/demons/vexclaw.lua new file mode 100644 index 00000000000..d31045eacc8 --- /dev/null +++ b/data-canary/monster/demons/vexclaw.lua @@ -0,0 +1,158 @@ +local mType = Game.createMonsterType("Vexclaw") +local monster = {} + +monster.description = "a vexclaw" +monster.experience = 6248 +monster.outfit = { + lookType = 854, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1197 +monster.Bestiary = { + class = "Demon", + race = BESTY_RACE_DEMON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "The Dungeons of The Ruthless Seven.", +} + +monster.health = 8500 +monster.maxHealth = 8500 +monster.race = "fire" +monster.corpse = 22776 +monster.speed = 135 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Weakness must be culled!", yell = false }, + { text = "Power is miiiiine!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 200 }, + { name = "platinum coin", chance = 100000, maxCount = 6 }, + { name = "great spirit potion", chance = 26010, maxCount = 5 }, + { name = "great mana potion", chance = 25210, maxCount = 5 }, + { name = "vexclaw talon", chance = 21500 }, + { name = "demonic essence", chance = 20730 }, + { name = "ultimate health potion", chance = 19960, maxCount = 5 }, + { name = "fire mushroom", chance = 19940, maxCount = 6 }, + { name = "golden sickle", chance = 18940 }, + { name = "purple tome", chance = 18450 }, + { name = "small amethyst", chance = 10090, maxCount = 5 }, + { name = "small topaz", chance = 9790, maxCount = 5 }, + { name = "small emerald", chance = 9770, maxCount = 5 }, + { name = "small ruby", chance = 9590, maxCount = 5 }, + { name = "talon", chance = 5400 }, + { name = "yellow gem", chance = 5090 }, + { name = "wand of voodoo", chance = 4940 }, + { id = 3039, chance = 4730 }, -- red gem + { name = "ice rapier", chance = 4730 }, + { name = "fire axe", chance = 3520 }, + { name = "might ring", chance = 2250 }, + { name = "giant sword", chance = 1880 }, + { id = 3049, chance = 1790 }, -- stealth ring + { id = 3051, chance = 1790 }, -- energy ring + { name = "rift lance", chance = 1360 }, + { id = 3098, chance = 1320 }, -- ring of healing + { name = "platinum amulet", chance = 940 }, + { name = "devil helmet", chance = 520 }, + { name = "rift crossbow", chance = 370 }, + { name = "rift bow", chance = 370 }, + { name = "rift shield", chance = 370 }, + { name = "demon shield", chance = 370 }, + { name = "magic plate armor", chance = 70 }, + { name = "golden legs", chance = 50 }, + { name = "demonrage sword", chance = 30 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 75, attack = 150 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -120, range = 7, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -250, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, + { name = "choking fear drown", interval = 2000, chance = 20, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -400, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -200, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -490, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "energy strike", interval = 2000, chance = 10, minDamage = -210, maxDamage = -300, range = 1, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -300, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, +} + +monster.defenses = { + defense = 55, + armor = 55, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 180, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 320, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = 75 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dragons/dragolisk.lua b/data-canary/monster/dragons/dragolisk.lua new file mode 100644 index 00000000000..26cf05df8ec --- /dev/null +++ b/data-canary/monster/dragons/dragolisk.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Dragolisk") +local monster = {} + +monster.description = "a dragolisk" +monster.experience = 5050 +monster.outfit = { + lookType = 1707, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2456 +monster.Bestiary = { + class = "Dragon", + race = BESTY_RACE_DRAGON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 5, + Occurrence = 0, + Locations = "Nimmersatt's Breeding Ground", +} + +monster.health = 6180 +monster.maxHealth = 6180 +monster.race = "blood" +monster.corpse = 44654 +monster.speed = 165 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Just Look at me!", yell = false }, + { text = "I'll stare you down", yell = false }, + { text = "Let me have a look", yell = false }, +} + +monster.loot = { + { name = "Platinum Coin", chance = 52610, minCount = 1, maxCount = 46 }, + { name = "Dragolisk Poison Gland", chance = 12600 }, + { name = "Nimmersatt's Seal", chance = 8320 }, + { id = 282, chance = 7580 }, + { name = "Dragolisk Eye", chance = 5510 }, + { name = "Green Gem", chance = 8260 }, + { name = "Dragon's Tail", chance = 1003 }, + { name = "Dragon Shield", chance = 400 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, + { name = "combat", interval = 3000, chance = 27, type = COMBAT_PHYSICALDAMAGE, minDamage = -220, maxDamage = -250, length = 7, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2500, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -250, radius = 4, effect = CONST_ME_POFF, target = true }, + { name = "death chain", interval = 2500, chance = 20, minDamage = -250, maxDamage = -300, range = 7 }, +} + +monster.defenses = { + defense = 86, + armor = 86, + mitigation = 2.11, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 15 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = -15 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dragons/dragon.lua b/data-canary/monster/dragons/dragon.lua index 6d6d1567779..16dd2aa26c7 100644 --- a/data-canary/monster/dragons/dragon.lua +++ b/data-canary/monster/dragons/dragon.lua @@ -13,6 +13,11 @@ monster.outfit = { lookMount = 0, } +monster.events = { + "TheGreatDragonHuntDeath", + "TheFirstDragonDragonTaskDeath", +} + monster.raceId = 34 monster.Bestiary = { class = "Dragon", @@ -34,7 +39,7 @@ monster.Bestiary = { monster.health = 1000 monster.maxHealth = 1000 monster.race = "blood" -monster.corpse = 4025 +monster.corpse = 5973 monster.speed = 86 monster.manaCost = 0 @@ -65,9 +70,9 @@ monster.flags = { runHealth = 300, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = false, + canWalkOnPoison = true, } monster.light = { @@ -78,33 +83,32 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, - { text = "GROOAAARRR", yell = true }, { text = "FCHHHHH", yell = true }, + { text = "GROOAAARRR", yell = true }, } monster.loot = { - { id = 3028, chance = 380 }, -- small diamond - { id = 3031, chance = 47500, maxCount = 70 }, -- gold coin - { id = 3031, chance = 37500, maxCount = 45 }, -- gold coin - { id = 3061, chance = 120 }, -- life crystal - { id = 3071, chance = 1005 }, -- wand of inferno - { id = 3275, chance = 960 }, -- double axe - { id = 3285, chance = 4000 }, -- longsword - { id = 3297, chance = 420 }, -- serpent sword - { id = 3301, chance = 1950 }, -- broadsword - { id = 3322, chance = 560 }, -- dragon hammer - { id = 3349, chance = 10000 }, -- crossbow - { id = 3351, chance = 3000 }, -- steel helmet - { id = 3409, chance = 15000 }, -- steel shield - { id = 3416, chance = 320 }, -- dragon shield + { name = "gold coin", chance = 89920, maxCount = 102 }, + { name = "dragon ham", chance = 66270, maxCount = 2 }, + { name = "steel shield", chance = 15650 }, + { name = "dragon's tail", chance = 9680 }, + { name = "crossbow", chance = 9120 }, { id = 3449, chance = 8060, maxCount = 10 }, -- burst arrow - { id = 3557, chance = 2000 }, -- plate legs - { id = 3583, chance = 65500, maxCount = 3 }, -- dragon ham - { id = 5877, chance = 1005 }, -- green dragon leather - { id = 5920, chance = 1000 }, -- green dragon scale - { id = 7430, chance = 110 }, -- dragonbone staff - { id = 236, chance = 1000 }, -- strong health potion - { id = 11457, chance = 9740 }, -- dragon's tail + { name = "longsword", chance = 3830 }, + { name = "steel helmet", chance = 3490 }, + { name = "broadsword", chance = 2700 }, + { name = "plate legs", chance = 2029 }, + { name = "double axe", chance = 1580 }, + { name = "strong health potion", chance = 1130 }, + { name = "green dragon leather", chance = 1070 }, + { name = "green dragon scale", chance = 1010 }, + { name = "wand of inferno", chance = 560 }, + { name = "small diamond", chance = 450 }, + { name = "serpent sword", chance = 230 }, + { name = "dragon hammer", chance = 230 }, + { name = "dragonbone staff", chance = 170 }, + { name = "life crystal", chance = 170 }, + { name = "dragon shield", chance = 110 }, } monster.attacks = { @@ -115,7 +119,8 @@ monster.attacks = { monster.defenses = { defense = 30, - armor = 30, + armor = 25, + mitigation = 0.99, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 70, effect = CONST_ME_MAGIC_BLUE, target = false }, } diff --git a/data-canary/monster/dragons/dragon_hatchling.lua b/data-canary/monster/dragons/dragon_hatchling.lua new file mode 100644 index 00000000000..cc6aafa6adc --- /dev/null +++ b/data-canary/monster/dragons/dragon_hatchling.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Dragon Hatchling") +local monster = {} + +monster.description = "a dragon hatchling" +monster.experience = 185 +monster.outfit = { + lookType = 271, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 385 +monster.Bestiary = { + class = "Dragon", + race = BESTY_RACE_DRAGON, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Thais Dragon Lair, beneath Fenrock, Darashia Dragon Lair, Venore Dragon Lair, \z + Edron Dragon Lair, Dragonblaze Peaks, Krailos Steppe. Also summoned by Lizard Dragon Priests.", +} + +monster.health = 380 +monster.maxHealth = 380 +monster.race = "blood" +monster.corpse = 269 +monster.speed = 73 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 20, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Fchu?", yell = false }, + { text = "Rooawwrr", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 95540, maxCount = 50 }, + { name = "dragon ham", chance = 83040 }, + { name = "dragon's tail", chance = 3570 }, + { name = "health potion", chance = 470 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -55 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -90, length = 5, spread = 2, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -30, maxDamage = -55, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, +} + +monster.defenses = { + defense = 10, + armor = 15, + mitigation = 0.78, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 8, maxDamage = 33, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 75 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dragons/dragon_lord.lua b/data-canary/monster/dragons/dragon_lord.lua index 702a1d9af28..65d7e225e47 100644 --- a/data-canary/monster/dragons/dragon_lord.lua +++ b/data-canary/monster/dragons/dragon_lord.lua @@ -13,6 +13,10 @@ monster.outfit = { lookMount = 0, } +monster.events = { + "TheGreatDragonHuntDeath", +} + monster.raceId = 39 monster.Bestiary = { class = "Dragon", @@ -24,12 +28,12 @@ monster.Bestiary = { Stars = 3, Occurrence = 0, Locations = "Ankrahmun Dragon Lairs, Banshee Quest final room (level 60+ to open the door), \z - Deeper Cyclopolis past the Dragon Spawn (level 30+ to open the door), Draconia, Edron Dragon Lair, \z - Fibula Dungeon (level 50+ to open the door), Maze of Lost Souls (level 30+ to open the door), \z - Pits of Inferno Dragon Lair, Dragon Lord hole in Plains of Havoc, Carlin Dragon Lair, \z - Thais Dragon Lair, Goroma Dragon Lairs, Hot Spot, Venore Dragon Lair, Arena and Zoo Quarter (Yalahar), \z - beneath Fenrock, Darashia Dragon Lair, Razzachai, Dragonblaze Peaks, Ferumbras Citadel, \z - Fury Dungeon, Lower Spike, Krailos Steppe.", + Deeper Cyclopolis past the Dragon Spawn (level 30+ to open the door), Draconia, Edron Dragon Lair, \z + Fibula Dungeon (level 50+ to open the door), Maze of Lost Souls (level 30+ to open the door), \z + Pits of Inferno Dragon Lair, Dragon Lord hole in Plains of Havoc, Carlin Dragon Lair, \z + Thais Dragon Lair, Goroma Dragon Lairs, Hot Spot, Venore Dragon Lair, Arena and Zoo Quarter(Yalahar), \z + beneath Fenrock, Darashia Dragon Lair, Razachai, Dragonblaze Peaks, Ferumbras Citadel, Fury Dungeon, \z + Lower Spike, Krailos Steppe.", } monster.health = 1900 @@ -79,33 +83,31 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, - { text = "ZCHHHHHHH", yell = true }, { text = "YOU WILL BURN!", yell = true }, + { text = "ZCHHHHHHH", yell = true }, } monster.loot = { - { id = 2842, chance = 9000 }, -- book - { id = 2903, chance = 3190 }, -- golden mug - { id = 3029, chance = 5300 }, -- small sapphire - { id = 3031, chance = 33750, maxCount = 100 }, -- gold coin - { id = 3031, chance = 33750, maxCount = 100 }, -- gold coin - { id = 3031, chance = 33750, maxCount = 45 }, -- gold coin - { id = 3051, chance = 5250 }, -- energy ring - { id = 3061, chance = 680 }, -- life crystal - { id = 3280, chance = 290 }, -- fire sword - { id = 3373, chance = 360 }, -- strange helmet - { id = 3386, chance = 170 }, -- dragon scale mail - { id = 3392, chance = 280 }, -- royal helmet - { id = 3428, chance = 250 }, -- tower shield - { id = 3450, chance = 6700, maxCount = 7 }, -- power bolt - { id = 3583, chance = 80000, maxCount = 5 }, -- dragon ham - { id = 3732, chance = 12000 }, -- green mushroom - { id = 5882, chance = 1920 }, -- red dragon scale - { id = 5948, chance = 1040 }, -- red dragon leather - { id = 7378, chance = 8800, maxCount = 3 }, -- royal spear - { id = 7399, chance = 80 }, -- dragon lord trophy - { id = 7402, chance = 100 }, -- dragon slayer - { id = 236, chance = 970 }, -- strong health potion + { name = "gold coin", chance = 95300, maxCount = 237 }, + { name = "dragon ham", chance = 79790, maxCount = 2 }, + { name = "green mushroom", chance = 12030 }, + { id = 2842, chance = 9590 }, -- gemmed book + { name = "royal spear", chance = 9380, maxCount = 3 }, + { name = "power bolt", chance = 5920, maxCount = 7 }, + { name = "small sapphire", chance = 5590 }, + { id = 3051, chance = 4550 }, -- energy ring + { name = "golden mug", chance = 3310 }, + { name = "red dragon scale", chance = 1940 }, + { name = "red dragon leather", chance = 1150 }, + { name = "strong health potion", chance = 800 }, + { name = "life crystal", chance = 650 }, + { name = "strange helmet", chance = 520 }, + { name = "tower shield", chance = 410 }, + { name = "fire sword", chance = 350 }, + { name = "royal helmet", chance = 260 }, + { name = "dragon slayer", chance = 220 }, + { name = "dragon lord trophy", chance = 130 }, + { name = "dragon scale mail", chance = 90 }, } monster.attacks = { @@ -118,6 +120,7 @@ monster.attacks = { monster.defenses = { defense = 34, armor = 34, + mitigation = 1.29, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 57, maxDamage = 93, effect = CONST_ME_MAGIC_BLUE, target = false }, } diff --git a/data-canary/monster/dragons/dragon_lord_hatchling.lua b/data-canary/monster/dragons/dragon_lord_hatchling.lua new file mode 100644 index 00000000000..53b23d3f0f0 --- /dev/null +++ b/data-canary/monster/dragons/dragon_lord_hatchling.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Dragon Lord Hatchling") +local monster = {} + +monster.description = "a dragon lord hatchling" +monster.experience = 645 +monster.outfit = { + lookType = 272, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 386 +monster.Bestiary = { + class = "Dragon", + race = BESTY_RACE_DRAGON, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Thais Dragon Lair, Venore Dragon Lair, Edron Dragon Lair by the Fire Axe Quest, \z + on the way to Pythius the Rotten, Razzachai, Dragonblaze Peaks.", +} + +monster.health = 750 +monster.maxHealth = 750 +monster.race = "blood" +monster.corpse = 270 +monster.speed = 84 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 30, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Fchu?", yell = false }, + { text = "Rooawwrr", yell = false }, +} + +monster.loot = { + { name = "dragon ham", chance = 77910 }, + { name = "gold coin", chance = 72690, maxCount = 121 }, + { name = "mana potion", chance = 1200 }, + { name = "green mushroom", chance = 490 }, + { name = "magma boots", chance = 100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -125, length = 5, spread = 2, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -55, maxDamage = -105, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, + { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = true }, +} + +monster.defenses = { + defense = 20, + armor = 20, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 26, maxDamage = 48, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 75 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dragons/draken_abomination.lua b/data-canary/monster/dragons/draken_abomination.lua new file mode 100644 index 00000000000..e1eb996e3a5 --- /dev/null +++ b/data-canary/monster/dragons/draken_abomination.lua @@ -0,0 +1,145 @@ +local mType = Game.createMonsterType("Draken Abomination") +local monster = {} + +monster.description = "a draken abomination" +monster.experience = 3800 +monster.outfit = { + lookType = 357, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 673 +monster.Bestiary = { + class = "Dragon", + race = BESTY_RACE_DRAGON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Razachai including the Inner Sanctum.", +} + +monster.health = 6250 +monster.maxHealth = 6250 +monster.race = "venom" +monster.corpse = 11667 +monster.speed = 135 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "Death Blob", chance = 10, interval = 2000, count = 2 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Uhhhg!", yell = false }, + { text = "Gll", yell = false }, + { text = "Hmmnn!", yell = false }, + { text = "Aaag!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 47000, maxCount = 98 }, + { name = "platinum coin", chance = 50590, maxCount = 8 }, + { name = "meat", chance = 50450, maxCount = 4 }, + { name = "great mana potion", chance = 9950, maxCount = 3 }, + { name = "terra hood", chance = 8730 }, + { name = "great spirit potion", chance = 4905, maxCount = 3 }, + { name = "ultimate health potion", chance = 9400, maxCount = 3 }, + { name = "wand of voodoo", chance = 1020 }, + { name = "small topaz", chance = 2900, maxCount = 4 }, + { name = "zaoan armor", chance = 470 }, + { name = "zaoan helmet", chance = 560 }, + { name = "zaoan legs", chance = 780 }, + { name = "eye of corruption", chance = 12110 }, + { name = "tail of corruption", chance = 6240 }, + { name = "scale of corruption", chance = 10940 }, + { name = "shield of corruption", chance = 10 }, + { name = "draken boots", chance = 540 }, + { name = "snake god's wristguard", chance = 10 }, + { name = "bamboo leaves", chance = 360 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -420 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -310, maxDamage = -630, length = 4, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "draken abomination curse", interval = 2000, chance = 10, range = 5, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -170, maxDamage = -370, length = 4, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "drunk", interval = 2000, chance = 15, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false, duration = 9000 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, range = 7, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 45, + mitigation = 1.60, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 650, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dragons/draken_elite.lua b/data-canary/monster/dragons/draken_elite.lua new file mode 100644 index 00000000000..1383ba443f2 --- /dev/null +++ b/data-canary/monster/dragons/draken_elite.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Draken Elite") +local monster = {} + +monster.description = "a draken elite" +monster.experience = 4200 +monster.outfit = { + lookType = 362, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 672 +monster.Bestiary = { + class = "Dragon", + race = BESTY_RACE_DRAGON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Razachai, including the Crystal Column chambers in the Inner Sanctum.", +} + +monster.health = 5550 +monster.maxHealth = 5550 +monster.race = "blood" +monster.corpse = 11653 +monster.speed = 166 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 3, + color = 161, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "For ze emperor!", yell = false }, + { text = "You will die zhouzandz deazhz!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 97220, maxCount = 187 }, + { name = "platinum coin", chance = 49070, maxCount = 8 }, + { name = "meat", chance = 34260, maxCount = 4 }, + { name = "broken draken mail", chance = 25000 }, + { name = "broken slicer", chance = 25000 }, + { name = "ultimate health potion", chance = 12040, maxCount = 3 }, + { name = "great mana potion", chance = 9260, maxCount = 3 }, + { name = "draken sulphur", chance = 6480 }, + { name = "draken wristbands", chance = 6480 }, + { name = "small diamond", chance = 1850, maxCount = 2 }, + { name = "zaoan legs", chance = 1850 }, + { name = "magic sulphur", chance = 1850 }, + { name = "draken boots", chance = 930 }, + { name = "assassin dagger", chance = 930 }, + { name = "twiceslicer", chance = 930 }, + { name = "zaoan armor", chance = 650 }, + { name = "zaoan sword", chance = 550 }, + { name = "zaoan helmet", chance = 220 }, + { name = "elite draken mail", chance = 110 }, + { name = "blade of corruption", chance = 60 }, + { name = "snake god's wristguard", chance = 40 }, + { name = "cobra crown", chance = 0 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -354 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -240, maxDamage = -550, length = 4, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -300, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -280, maxDamage = -410, radius = 4, effect = CONST_ME_POFF, target = true }, + { name = "soulfire rune", interval = 2000, chance = 10, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -250, maxDamage = -320, range = 7, shootEffect = CONST_ANI_POISON, target = true }, +} + +monster.defenses = { + defense = 60, + armor = 60, + mitigation = 1.60, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 510, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 40 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = 30 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dragons/draken_spellweaver.lua b/data-canary/monster/dragons/draken_spellweaver.lua new file mode 100644 index 00000000000..e2c17acaaa8 --- /dev/null +++ b/data-canary/monster/dragons/draken_spellweaver.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Draken Spellweaver") +local monster = {} + +monster.description = "a draken spellweaver" +monster.experience = 3100 +monster.outfit = { + lookType = 340, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 618 +monster.Bestiary = { + class = "Dragon", + race = BESTY_RACE_DRAGON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Zao Palace, Razachai, and Zzaion.", +} + +monster.health = 5000 +monster.maxHealth = 5000 +monster.race = "blood" +monster.corpse = 10399 +monster.speed = 168 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Zzzzzooom!", yell = false }, + { text = "Fissziss!", yell = false }, + { text = "Kazzzzzzuuum!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 195 }, + { name = "meat", chance = 26940 }, + { name = "platinum coin", chance = 23800, maxCount = 5 }, + { name = "weaver's wandtip", chance = 18450 }, + { name = "small ruby", chance = 6640, maxCount = 5 }, + { name = "great mana potion", chance = 5350 }, + { name = "draken sulphur", chance = 4610 }, + { name = "luminous orb", chance = 2580 }, + { name = "green gem", chance = 1290 }, + { name = "zaoan shoes", chance = 1290 }, + { name = "wand of inferno", chance = 1110 }, + { name = "focus cape", chance = 740 }, + { name = "spellweaver's robe", chance = 740 }, + { name = "zaoan legs", chance = 550 }, + { name = "zaoan robe", chance = 370 }, + { name = "ring of the sky", chance = 180 }, + { name = "bamboo leaves", chance = 180 }, + { name = "harness", chance = 30 }, + { name = "draken trophy", chance = 10 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -252 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -240, maxDamage = -480, length = 4, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -250, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -300, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -380, radius = 4, effect = CONST_ME_POFF, target = true }, + { name = "soulfire rune", interval = 2000, chance = 10, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -280, maxDamage = -360, shootEffect = CONST_ANI_POISON, target = true }, +} + +monster.defenses = { + defense = 25, + armor = 25, + mitigation = 1.35, + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_RED }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 270, maxDamage = 530, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 80 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dragons/draken_warmaster.lua b/data-canary/monster/dragons/draken_warmaster.lua new file mode 100644 index 00000000000..f6c06e2b1ed --- /dev/null +++ b/data-canary/monster/dragons/draken_warmaster.lua @@ -0,0 +1,126 @@ +local mType = Game.createMonsterType("Draken Warmaster") +local monster = {} + +monster.description = "a draken warmaster" +monster.experience = 2400 +monster.outfit = { + lookType = 334, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 617 +monster.Bestiary = { + class = "Dragon", + race = BESTY_RACE_DRAGON, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Zao Palace, Chazorai, Razzachai, and Zzaion.", +} + +monster.health = 4150 +monster.maxHealth = 4150 +monster.race = "blood" +monster.corpse = 10190 +monster.speed = 162 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Attack aggrezzively! Dezztroy zze intruderzz!", yell = false }, + { text = "Hizzzzzz!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 97490, maxCount = 197 }, + { name = "platinum coin", chance = 47640, maxCount = 5 }, + { name = "meat", chance = 30390 }, + { name = "bone shoulderplate", chance = 12840 }, + { name = "zaoan halberd", chance = 8930 }, + { name = "warmaster's wristguards", chance = 7020 }, + { name = "great health potion", chance = 3710, maxCount = 3 }, + { name = "ultimate health potion", chance = 3410 }, + { name = "zaoan shoes", chance = 2610 }, + { name = "tower shield", chance = 2310 }, + { name = "small ruby", chance = 1810, maxCount = 5 }, + { name = "zaoan legs", chance = 1300 }, + { name = "zaoan armor", chance = 600 }, + { name = "drakinata", chance = 600 }, + { name = "ring of the sky", chance = 220 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -240, maxDamage = -520, length = 4, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 55, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 510, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 5 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dragons/elder_wyrm.lua b/data-canary/monster/dragons/elder_wyrm.lua new file mode 100644 index 00000000000..90e7dc727f7 --- /dev/null +++ b/data-canary/monster/dragons/elder_wyrm.lua @@ -0,0 +1,138 @@ +local mType = Game.createMonsterType("Elder Wyrm") +local monster = {} + +monster.description = "an elder wyrm" +monster.experience = 2500 +monster.outfit = { + lookType = 561, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 963 +monster.Bestiary = { + class = "Dragon", + race = BESTY_RACE_DRAGON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Drefia Wyrm Lair, Vandura Wyrm Cave, Oramond Factory Raids (west), Warzone 4.", +} + +monster.health = 2700 +monster.maxHealth = 2700 +monster.race = "blood" +monster.corpse = 18966 +monster.speed = 140 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 15, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 250, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "GRROARR", yell = true }, + { text = "GRRR", yell = true }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 161 }, + { name = "platinum coin", chance = 52380, maxCount = 3 }, + { name = "wyrm scale", chance = 33330 }, + { name = "dragon ham", chance = 23810, maxCount = 2 }, + { name = "strong health potion", chance = 23810 }, + { name = "strong mana potion", chance = 19050 }, + { name = "crossbow", chance = 14290 }, + { name = "small diamond", chance = 4760 }, + { name = "soul orb", chance = 4760 }, + { name = "wand of draconia", chance = 1510 }, + { name = "power bolt", chance = 1030, maxCount = 10 }, + { name = "wand of starstorm", chance = 830 }, + { name = "lightning pendant", chance = 750 }, + { name = "lightning legs", chance = 600 }, + { name = "lightning robe", chance = 290 }, + { name = "dragonbone staff", chance = 240 }, + { name = "composite hornbow", chance = 220 }, + { name = "shadow sceptre", chance = 170 }, + { name = "lightning boots", chance = 150 }, + { name = "shockwave amulet", chance = 120 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -360 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -90, maxDamage = -150, radius = 4, effect = CONST_ME_TELEPORT, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -140, maxDamage = -250, radius = 5, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, length = 8, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "elder wyrm wave", interval = 2000, chance = 10, minDamage = -200, maxDamage = -300, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 48, + mitigation = 1.35, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 75 }, + { type = COMBAT_FIREDAMAGE, percent = 30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dragons/frost_dragon.lua b/data-canary/monster/dragons/frost_dragon.lua new file mode 100644 index 00000000000..0456307325a --- /dev/null +++ b/data-canary/monster/dragons/frost_dragon.lua @@ -0,0 +1,142 @@ +local mType = Game.createMonsterType("Frost Dragon") +local monster = {} + +monster.description = "a frost dragon" +monster.experience = 2100 +monster.outfit = { + lookType = 248, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 317 +monster.Bestiary = { + class = "Dragon", + race = BESTY_RACE_DRAGON, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Okolnir, Razachai, Ice Witch Temple, Frost Dragon Tunnel, \z + Yakchal Crypt (only during Yakchals awakening ritual), Dragonblaze Peaks, Deeper Banuta, Chyllfroest.", +} + +monster.health = 1800 +monster.maxHealth = 1800 +monster.race = "undead" +monster.corpse = 7091 +monster.speed = 106 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 250, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "YOU WILL FREEZE!", yell = true }, + { text = "ZCHHHHH!", yell = true }, + { text = "I am so cool.", yell = false }, + { text = "Chill out!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 99110, maxCount = 207 }, + { name = "dragon ham", chance = 83040, maxCount = 2 }, + { name = "green mushroom", chance = 10710 }, + { id = 7441, chance = 6250 }, -- ice cube + { id = 2842, chance = 8500 }, -- book + { name = "power bolt", chance = 5360, maxCount = 6 }, + { name = "golden mug", chance = 5360 }, + { id = 3051, chance = 2680 }, -- energy ring + { name = "small sapphire", chance = 1790 }, + { name = "strange helmet", chance = 890 }, + { name = "life crystal", chance = 890 }, + { name = "shard", chance = 520 }, + { name = "ice rapier", chance = 310 }, + { name = "tower shield", chance = 290 }, + { name = "royal helmet", chance = 230 }, + { name = "dragon scale mail", chance = 100 }, + { name = "dragon slayer", chance = 100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -225 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -175, maxDamage = -380, length = 8, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "speed", interval = 2000, chance = 5, speedChange = -700, radius = 3, effect = CONST_ME_POFF, target = false, duration = 12000 }, + { name = "speed", interval = 2000, chance = 15, speedChange = -850, length = 7, spread = 3, effect = CONST_ME_ICEATTACK, target = false, duration = 18000 }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_ICEDAMAGE, minDamage = -60, maxDamage = -120, radius = 3, effect = CONST_ME_ICETORNADO, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -240, radius = 4, effect = CONST_ME_ICEAREA, target = true }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -220, length = 1, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "speed", interval = 2000, chance = 20, speedChange = -600, radius = 4, effect = CONST_ME_ICEAREA, target = true, duration = 12000 }, +} + +monster.defenses = { + defense = 45, + armor = 38, + mitigation = 1.07, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dragons/frost_dragon_hatchling.lua b/data-canary/monster/dragons/frost_dragon_hatchling.lua new file mode 100644 index 00000000000..ac86db509e4 --- /dev/null +++ b/data-canary/monster/dragons/frost_dragon_hatchling.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Frost Dragon Hatchling") +local monster = {} + +monster.description = "a frost dragon hatchling" +monster.experience = 745 +monster.outfit = { + lookType = 283, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 402 +monster.Bestiary = { + class = "Dragon", + race = BESTY_RACE_DRAGON, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Okolnir, Factory Quarter (Yalahar), Dragonblaze Peaks, Ice Witch Temple, Frost Dragon Tunnel, Chyllfroest.", +} + +monster.health = 800 +monster.maxHealth = 800 +monster.race = "undead" +monster.corpse = 909 +monster.speed = 86 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 80, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Rooawwrr", yell = false }, + { text = "Fchu?", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 91430, maxCount = 47 }, + { name = "dragon ham", chance = 82860 }, + { name = "frosty heart", chance = 8570 }, + { name = "health potion", chance = 510 }, + { name = "spellbook of enlightenment", chance = 430 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -160 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -60, maxDamage = -110, length = 5, spread = 2, effect = CONST_ME_ICEATTACK, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -60, maxDamage = -110, radius = 4, effect = CONST_ME_ICEAREA, target = true }, + { name = "speed", interval = 2000, chance = 15, speedChange = -600, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEAREA, target = true, duration = 12000 }, +} + +monster.defenses = { + defense = 15, + armor = 32, + mitigation = 1.04, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 45, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dragons/ghastly_dragon.lua b/data-canary/monster/dragons/ghastly_dragon.lua new file mode 100644 index 00000000000..a4e989ea21f --- /dev/null +++ b/data-canary/monster/dragons/ghastly_dragon.lua @@ -0,0 +1,147 @@ +local mType = Game.createMonsterType("Ghastly Dragon") +local monster = {} + +monster.description = "a ghastly dragon" +monster.experience = 4600 +monster.outfit = { + lookType = 351, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 643 +monster.Bestiary = { + class = "Dragon", + race = BESTY_RACE_DRAGON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Ghastly Dragon Lair, Corruption Hole, Razachai including the Inner Sanctum, Zao Palace, Deeper Banuta single spawn, Chyllfroest.", +} + +monster.health = 7800 +monster.maxHealth = 7800 +monster.race = "undead" +monster.corpse = 10445 +monster.speed = 160 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 5, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 366, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 4, + color = 119, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "EMBRACE MY GIFTS!", yell = true }, + { text = "I WILL FEAST ON YOUR SOUL!", yell = true }, +} + +monster.loot = { + { name = "gold coin", chance = 99500, maxCount = 238 }, + { name = "plate legs", chance = 53270 }, + { name = "small emerald", chance = 41210, maxCount = 5 }, + { name = "platinum coin", chance = 33170, maxCount = 2 }, + { name = "great spirit potion", chance = 32659, maxCount = 2 }, + { name = "dark armor", chance = 30650 }, + { name = "great mana potion", chance = 27140, maxCount = 2 }, + { name = "ultimate health potion", chance = 24120 }, + { name = "undead heart", chance = 21610 }, + { name = "zaoan halberd", chance = 16580 }, + { id = 8896, chance = 15080 }, -- slightly rusted armor + { name = "demonic essence", chance = 10550 }, + { name = "terra boots", chance = 10050 }, + { name = "twin hooks", chance = 9550 }, + { name = "ghastly dragon head", chance = 7540 }, + { name = "soul orb", chance = 7040 }, + { name = "terra legs", chance = 4520 }, + { name = "jade hat", chance = 1010 }, + { name = "zaoan armor", chance = 1010 }, + { name = "guardian boots", chance = 1010 }, + { name = "drakinata", chance = 1010 }, + { name = "spellweaver's robe", chance = 500 }, + { name = "zaoan shoes", chance = 980 }, + { name = "zaoan legs", chance = 970 }, + { name = "shiny stone", chance = 830 }, + { name = "zaoan helmet", chance = 230 }, + { name = "zaoan sword", chance = 120 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -603 }, + { name = "ghastly dragon curse", interval = 2000, chance = 5, range = 5, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -920, maxDamage = -1280, range = 5, effect = CONST_ME_SMALLCLOUDS, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -230, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, + { name = "ghastly dragon wave", interval = 2000, chance = 10, minDamage = -120, maxDamage = -250, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -110, maxDamage = -180, radius = 4, effect = CONST_ME_MORTAREA, target = false }, + { name = "speed", interval = 2000, chance = 20, speedChange = -800, range = 7, effect = CONST_ME_SMALLCLOUDS, target = true, duration = 30000 }, +} + +monster.defenses = { + defense = 35, + armor = 30, + mitigation = 1.24, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 50 }, + { type = COMBAT_HOLYDAMAGE, percent = -15 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dragons/hydra.lua b/data-canary/monster/dragons/hydra.lua index f665de1a1aa..bed09ae1461 100644 --- a/data-canary/monster/dragons/hydra.lua +++ b/data-canary/monster/dragons/hydra.lua @@ -23,12 +23,9 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Many on the northern Hydra Mountain in east Tiquanda, 3-4 on the southern Hydra Mountain, \z - 1 at the Hydra Egg Quest in Tiquanda, 1 north-east of the Elephant Tusk Quest, \z - 2 above the Forbidden Lands hydra cave here and many inside it, many in Deeper Banuta, \z - many on Talahu surface, a few in Ferumbras Citadel basement on Kharos, \z - 2 on a hill in the Yalahar Arena and Zoo Quarter, 1 deep in the Yalahar Foreigner Quarter (Crystal Lake), \z - many in the Oramond Hydra/Bog Raider Cave.", + Locations = "Northern Hydra Mountain in east Tiquanda, southern Hydra Mountain, Hydra Egg Quest in Tiquanda \z + north-east of the Elephant Tusk Quest, Forbidden Lands hydra cave, Deeper Banuta, Talahu surface, \z + Ferumbras Citadel, Yalahar Arena and Zoo Quarter, Yalahar Foreigner Quarter (Crystal Lake), Oramond Hydra/Bog Raider Cave.", } monster.health = 2350 @@ -78,29 +75,27 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, - { text = "FCHHHHH", yell = false }, - { text = "HISSSS", yell = false }, + { text = "FCHHHHH", yell = true }, + { text = "HISSSS", yell = true }, } monster.loot = { - { id = 3029, chance = 5000 }, -- small sapphire - { id = 3031, chance = 34000, maxCount = 100 }, -- gold coin - { id = 3031, chance = 34000, maxCount = 100 }, -- gold coin - { id = 3031, chance = 20000, maxCount = 46 }, -- gold coin - { id = 3035, chance = 48000, maxCount = 3 }, -- platinum coin - { id = 3061, chance = 570 }, -- life crystal - { id = 3079, chance = 130 }, -- boots of haste - { id = 3081, chance = 900 }, -- stone skin amulet - { id = 3098, chance = 1190 }, -- ring of healing - { id = 3369, chance = 890 }, -- warrior helmet - { id = 3370, chance = 1000 }, -- knight armor - { id = 3392, chance = 210 }, -- royal helmet - { id = 3436, chance = 270 }, -- medusa shield - { id = 3582, chance = 60000, maxCount = 4 }, -- ham - { id = 4839, chance = 930 }, -- hydra egg - { id = 237, chance = 380 }, -- strong mana potion - { id = 8014, chance = 4780 }, -- cucumber - { id = 10282, chance = 10120 }, -- hydra head + { name = "gold coin", chance = 87970, maxCount = 212 }, + { name = "ham", chance = 59510, maxCount = 3 }, + { name = "platinum coin", chance = 49910, maxCount = 3 }, + { name = "hydra head", chance = 10820 }, + { name = "cucumber", chance = 6900 }, + { name = "small sapphire", chance = 3920 }, + { name = "warrior helmet", chance = 1310 }, + { name = "knight armor", chance = 1120 }, + { name = "life crystal", chance = 930 }, + { id = 3098, chance = 840 }, -- ring of healing + { name = "hydra egg", chance = 840 }, + { name = "strong mana potion", chance = 840 }, + { name = "stone skin amulet", chance = 750 }, + { name = "boots of haste", chance = 190 }, + { name = "medusa shield", chance = 190 }, + { name = "royal helmet", chance = 90 }, } monster.attacks = { @@ -113,7 +108,8 @@ monster.attacks = { monster.defenses = { defense = 35, - armor = 35, + armor = 27, + mitigation = 1.18, { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 260, maxDamage = 407, effect = CONST_ME_MAGIC_BLUE, target = false }, } diff --git a/data-canary/monster/dragons/mega_dragon.lua b/data-canary/monster/dragons/mega_dragon.lua new file mode 100644 index 00000000000..66696435486 --- /dev/null +++ b/data-canary/monster/dragons/mega_dragon.lua @@ -0,0 +1,126 @@ +local mType = Game.createMonsterType("Mega Dragon") +local monster = {} + +monster.description = "a mega dragon" +monster.experience = 7810 +monster.outfit = { + lookType = 1712, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2459 +monster.Bestiary = { + class = "Dragon", + race = BESTY_RACE_DRAGON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 5, + Occurrence = 0, + Locations = "Nimmersatt's Breeding Ground", +} + +monster.health = 7920 +monster.maxHealth = 7920 +monster.race = "blood" +monster.corpse = 44663 +monster.speed = 170 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Just Look at me!", yell = false }, + { text = "I'll stare you down", yell = false }, + { text = "Let me have a look", yell = false }, +} + +monster.loot = { + { name = "Platinum Coin", chance = 50780, minCount = 1, maxCount = 48 }, + { name = "Nimmersatt's Seal", chance = 8670 }, + { id = 3039, chance = 10090 }, + { name = "Molten Dragon Essence", chance = 4720 }, + { name = "Prismatic Quartz", chance = 4460 }, + { name = "Rainbow Quartz", chance = 4430, minCount = 1, maxCount = 2 }, + { id = 3041, chance = 6790 }, + { name = "Mega Dragon Heart", chance = 1850 }, + { name = "Violet Gem", chance = 1470 }, + { name = "Dragon Slayer", chance = 130 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 2500, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -350, range = 2, effect = CONST_ME_BIG_SCRATCH, target = true }, + { name = "combat", interval = 2500, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, length = 8, spread = 4, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2500, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -300, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, + { name = "combat", interval = 3000, chance = 5, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -350, radius = 4, effect = CONST_ME_POFF, target = true }, + { name = "death chain", interval = 2500, chance = 15, minDamage = -200, maxDamage = -350, range = 7 }, +} + +monster.defenses = { + defense = 76, + armor = 76, + mitigation = 1.96, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dragons/war_dragon.lua b/data-canary/monster/dragons/war_dragon.lua new file mode 100644 index 00000000000..79d04bb2c0c --- /dev/null +++ b/data-canary/monster/dragons/war_dragon.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Wardragon") +local monster = {} + +monster.description = "a wardragon" +monster.experience = 5810 +monster.outfit = { + lookType = 1708, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2458 +monster.Bestiary = { + class = "Dragon", + race = BESTY_RACE_DRAGON, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 5, + Occurrence = 0, + Locations = "Nimmersatt's Breeding Ground", +} + +monster.health = 6960 +monster.maxHealth = 6960 +monster.race = "blood" +monster.corpse = 44656 +monster.speed = 165 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Just Look at me!", yell = false }, + { text = "I'll stare you down", yell = false }, + { text = "Let me have a look", yell = false }, +} + +monster.loot = { + { name = "Platinum Coin", chance = 52560, minCount = 1, maxCount = 45 }, + { name = "Wardragon Claw", chance = 14420 }, + { name = "Nimmersatt's Seal", chance = 10620 }, + { name = "Dragon Tongue", chance = 8450 }, + { name = "Wardragon Tooth", chance = 6330 }, + { name = "Gold Ingot", chance = 6007 }, + { name = "Onyx Chip", chance = 4650, minCount = 1, maxCount = 2 }, + { name = "Black Pearl", chance = 4000 }, + { name = "White Gem", chance = 1000 }, + { name = "Dragonbone Staff", chance = 740 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 2500, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -400, radius = 4, effect = CONST_ME_MORTAREA, target = true }, + { name = "combat", interval = 3000, chance = 25, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -400, length = 8, spread = 4, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 3000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -275, maxDamage = -400, radius = 4, effect = CONST_ME_POFF, target = true }, + { name = "combat", interval = 3000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -300, range = 2, effect = CONST_ME_BIG_SCRATCH, target = true }, +} + +monster.defenses = { + defense = 80, + armor = 80, + mitigation = 2.19, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/dragons/wyrm.lua b/data-canary/monster/dragons/wyrm.lua index 7aea11e44a2..afb39698c20 100644 --- a/data-canary/monster/dragons/wyrm.lua +++ b/data-canary/monster/dragons/wyrm.lua @@ -23,8 +23,8 @@ monster.Bestiary = { CharmsPoints = 25, Stars = 3, Occurrence = 0, - Locations = "Drefia Wyrm Lair (after the Medusa Shield Quest room), Darashia Wyrm Hills, Arena and Zoo Quarter, \z - beneath Fenrock, Deeper Razachai, Lower Spike, Vandura Wyrm Cave and Vandura Mountain in Liberty Bay.", + Locations = "Drefia Wyrm Lair (after the Medusa Shield Quest room), Darashia Wyrm Hills, Arena and Zoo Quarter, \z + beneath Fenrock, Deeper Razachai, Lower Spike, Vandura Wyrm Cave and Vandura Mountain in Liberty Bay.", } monster.health = 1825 @@ -53,7 +53,7 @@ monster.flags = { convinceable = false, pushable = false, rewardBoss = false, - illusionable = false, + illusionable = true, canPushItems = true, canPushCreatures = false, staticAttackChance = 80, @@ -74,42 +74,41 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, - { text = "GRROARR", yell = false }, - { text = "GRRR", yell = false }, + { text = "GRROARR", yell = true }, + { text = "GRRR", yell = true }, } monster.loot = { - { id = 3028, chance = 750, maxCount = 3 }, -- small diamond - { id = 3031, chance = 30000, maxCount = 100 }, -- gold coin - { id = 3031, chance = 30000, maxCount = 100 }, -- gold coin - { id = 3031, chance = 30000, maxCount = 30 }, -- gold coin - { id = 3349, chance = 5920 }, -- crossbow - { id = 3449, chance = 7650, maxCount = 10 }, -- burst arrow - { id = 3583, chance = 34800, maxCount = 3 }, -- dragon ham - { id = 7430, chance = 110 }, -- dragonbone staff - { id = 236, chance = 19970 }, -- strong health potion - { id = 237, chance = 15310 }, -- strong mana potion - { id = 816, chance = 720 }, -- lightning pendant - { id = 8027, chance = 90 }, -- composite hornbow - { id = 8043, chance = 1250 }, -- focus cape - { id = 8045, chance = 250 }, -- hibiscus dress - { id = 8092, chance = 420 }, -- wand of starstorm - { id = 8093, chance = 990 }, -- wand of draconia - { id = 9304, chance = 110 }, -- shockwave amulet - { id = 9665, chance = 15360 }, -- wyrm scale + { name = "gold coin", chance = 95730, maxCount = 192 }, + { name = "dragon ham", chance = 43130 }, + { name = "strong health potion", chance = 19910 }, + { name = "wyrm scale", chance = 17540 }, + { name = "strong mana potion", chance = 15170 }, + { id = 3449, chance = 5690, maxCount = 10 }, -- burst arrow + { name = "crossbow", chance = 5690 }, + { name = "focus cape", chance = 2370 }, + { name = "small diamond", chance = 1420, maxCount = 3 }, + { name = "wand of starstorm", chance = 1420 }, + { name = "wand of draconia", chance = 1420 }, + { name = "composite hornbow", chance = 950 }, + { name = "dragonbone staff", chance = 470 }, + { name = "lightning pendant", chance = 470 }, + { name = "shockwave amulet", chance = 470 }, + { name = "hibiscus dress", chance = 470 }, } monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -235 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -220, radius = 3, effect = CONST_ME_YELLOWENERGY, target = false }, - -- {name ="wyrm wave", interval = 2000, chance = 40, minDamage = -130, maxDamage = -200, target = false}, + { name = "wyrm wave", interval = 2000, chance = 40, minDamage = -130, maxDamage = -200, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -125, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -98, maxDamage = -145, length = 4, spread = 3, effect = CONST_ME_POFF, target = false }, } monster.defenses = { defense = 35, - armor = 35, + armor = 34, + mitigation = 0.83, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "effect", interval = 2000, chance = 10, radius = 1, effect = CONST_ME_SOUND_YELLOW, target = false }, } diff --git a/data-canary/monster/elementals/cliff_strider.lua b/data-canary/monster/elementals/cliff_strider.lua new file mode 100644 index 00000000000..d78b2c729fd --- /dev/null +++ b/data-canary/monster/elementals/cliff_strider.lua @@ -0,0 +1,152 @@ +local mType = Game.createMonsterType("Cliff Strider") +local monster = {} + +monster.description = "a cliff strider" +monster.experience = 7100 +monster.outfit = { + lookType = 497, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 889 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Warzone 3.", +} + +monster.health = 9400 +monster.maxHealth = 9400 +monster.race = "undead" +monster.corpse = 16075 +monster.speed = 123 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Knorrrr", yell = false }, +} + +monster.loot = { + { name = "white pearl", chance = 9630, maxCount = 3 }, + { name = "black pearl", chance = 9090 }, + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "gold coin", chance = 100000, maxCount = 95 }, + { name = "platinum coin", chance = 100000, maxCount = 10 }, + { id = 3039, chance = 6110 }, -- red gem + { name = "blue gem", chance = 830 }, + { name = "giant sword", chance = 620 }, + { name = "hammer of wrath", chance = 70 }, + { name = "knight legs", chance = 830 }, + { name = "crown armor", chance = 310 }, + { name = "crusader helmet", chance = 410 }, + { name = "steel boots", chance = 100 }, + { name = "iron ore", chance = 14490 }, + { name = "magic sulphur", chance = 1450 }, + { name = "soul orb", chance = 17080 }, + { name = "sapphire hammer", chance = 1350 }, + { name = "spiked squelcher", chance = 1040 }, + { name = "great mana potion", chance = 30950, maxCount = 4 }, + { name = "ultimate health potion", chance = 25260, maxCount = 2 }, + { name = "crystal of balance", chance = 2690 }, + { name = "crystal of power", chance = 720 }, + { name = "shiny stone", chance = 11280 }, + { name = "wand of defiance", chance = 2000 }, + { name = "glacial rod", chance = 1240 }, + { name = "blue crystal shard", chance = 6520 }, + { name = "blue crystal splinter", chance = 7970, maxCount = 2 }, + { name = "cyan crystal fragment", chance = 8070 }, + { name = "pulverized ore", chance = 15110 }, + { name = "cliff strider claw", chance = 15630 }, + { name = "vein of ore", chance = 18000, maxCount = 2 }, + { name = "prismatic bolt", chance = 9090, maxCount = 8 }, + { name = "crystalline sword", chance = 620 }, + { name = "crystal crossbow", chance = 830 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -499 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -800, radius = 4, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, + { name = "cliff strider skill reducer", interval = 2000, chance = 10, target = false }, + { name = "cliff strider electrify", interval = 2000, chance = 15, range = 1, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1000, length = 6, spread = 0, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -300, radius = 4, effect = CONST_ME_YELLOWENERGY, target = false }, +} + +monster.defenses = { + defense = 55, + armor = 89, + mitigation = 2.60, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 35 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/elementals/earth_elemental.lua b/data-canary/monster/elementals/earth_elemental.lua new file mode 100644 index 00000000000..4c3b3e11aa3 --- /dev/null +++ b/data-canary/monster/elementals/earth_elemental.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Earth Elemental") +local monster = {} + +monster.description = "an earth elemental" +monster.experience = 550 +monster.outfit = { + lookType = 301, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 458 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Edron Earth Elemental Cave, Vandura Mountain, Deeper Banuta, Vengoth Castle, Robson Isle, \z + Drillworm Caves, Crystal Grounds, Middle Spike.", +} + +monster.health = 650 +monster.maxHealth = 650 +monster.race = "undead" +monster.corpse = 8105 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 80, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Stomp.", yell = false }, +} + +monster.loot = { + { name = "small stone", chance = 10000, maxCount = 10 }, + { name = "gold coin", chance = 43000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 30 }, + { name = "blank rune", chance = 10000 }, + { name = "strong mana potion", chance = 1910 }, + { name = "earth arrow", chance = 20160, maxCount = 30 }, + { id = 8894, chance = 350 }, -- heavily rusted armor + { name = "small topaz", chance = 620 }, + { name = "lump of earth", chance = 20460 }, + { name = "clay lump", chance = 570 }, + { id = 12600, chance = 470 }, -- coal +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -72, maxDamage = -105, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_GREEN_RINGS, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_POFF, target = true }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 20, minDamage = -200, maxDamage = -260, length = 6, spread = 0, effect = CONST_ME_BIGPLANTS, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -100, maxDamage = -140, radius = 5, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = -330, range = 5, effect = CONST_ME_SMALLPLANTS, target = true, duration = 5000 }, +} + +monster.defenses = { + defense = 25, + armor = 45, + mitigation = 0.78, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 60, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 35 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = 40 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/elementals/energy_elemental.lua b/data-canary/monster/elementals/energy_elemental.lua new file mode 100644 index 00000000000..7811ffe3cff --- /dev/null +++ b/data-canary/monster/elementals/energy_elemental.lua @@ -0,0 +1,129 @@ +local mType = Game.createMonsterType("Energy Elemental") +local monster = {} + +monster.description = "an energy elemental" +monster.experience = 550 +monster.outfit = { + lookType = 293, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 457 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Khazeel, Energy Elemental Lair, Vandura Mountain, Vengoths mountain.", +} + +monster.health = 500 +monster.maxHealth = 500 +monster.race = "venom" +monster.corpse = 8138 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 85, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 4, + color = 143, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3007, chance = 2000 }, -- crystal ring + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 70 }, + { name = "small amethyst", chance = 5000, maxCount = 2 }, + { id = 3051, chance = 892 }, -- energy ring + { name = "silver amulet", chance = 1020 }, + { name = "wand of cosmic energy", chance = 636 }, + { name = "throwing star", chance = 9900, maxCount = 5 }, + { name = "obsidian lance", chance = 3571 }, + { name = "guardian shield", chance = 243 }, + { name = "crystal sword", chance = 5882 }, + { name = "strong mana potion", chance = 7692 }, + { name = "mana potion", chance = 11711 }, + { id = 761, chance = 10000, maxCount = 10 }, -- flash arrow +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -175 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -125, maxDamage = -252, range = 7, radius = 2, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -130, range = 7, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "energy elemental electrify", interval = 2000, chance = 20, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 25, + mitigation = 0.72, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 90, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 35 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = -15 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 5 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/elementals/fire_elemental.lua b/data-canary/monster/elementals/fire_elemental.lua new file mode 100644 index 00000000000..6429e7cdb00 --- /dev/null +++ b/data-canary/monster/elementals/fire_elemental.lua @@ -0,0 +1,112 @@ +local mType = Game.createMonsterType("Fire Elemental") +local monster = {} + +monster.description = "a fire elemental" +monster.experience = 220 +monster.outfit = { + lookType = 49, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 49 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Cyclopolis, Hero Cave in Edron, Ankrahmun tombs, Serpentine Tower, Factory Quarter in Yalahar, \z + Deeper Banuta, Goroma inside the volcano and beneath Fenrock.", +} + +monster.health = 280 +monster.maxHealth = 280 +monster.race = "fire" +monster.corpse = 8136 +monster.speed = 95 +monster.manaCost = 690 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + random = 20, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 4, + color = 208, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -45, maxDamage = -160, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, + { name = "firefield", interval = 2000, chance = 25, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, +} + +monster.defenses = { + defense = 15, + armor = 18, + mitigation = 0.51, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -25 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/elementals/foam_stalker.lua b/data-canary/monster/elementals/foam_stalker.lua new file mode 100644 index 00000000000..5668eb0e29d --- /dev/null +++ b/data-canary/monster/elementals/foam_stalker.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Foam Stalker") +local monster = {} + +monster.description = "a foam stalker" +monster.experience = 3120 +monster.outfit = { + lookType = 1562, +} + +monster.raceId = 2259 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Great Pearl Fan Reef", +} + +monster.health = 4500 +monster.maxHealth = 4500 +monster.race = "blood" +monster.corpse = 39344 +monster.speed = 180 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 0, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 2, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "splash", yell = false }, + { text = "gurgle", yell = false }, + { text = "dribble", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 50 }, + { name = "halberd", chance = 11025 }, + { name = "strong mana potion", chance = 9728 }, + { name = "orichalcum pearl", chance = 9728 }, + { name = "spike sword", chance = 8301 }, + { name = "combat knife", chance = 7004 }, + { name = "flotsam", chance = 6874 }, + { name = "white pearl", chance = 6485 }, + { id = 3130, chance = 6355 }, -- twigs + { id = 3289, chance = 6355 }, -- staff + { name = "remains of a fish", chance = 5966 }, + { name = "glacier shoes", chance = 5707 }, + { name = "coral branch", chance = 4929 }, + { name = "soul orb", chance = 4929 }, + { id = 3027, chance = 4669 }, -- black pearl + { name = "small diamond", chance = 3891 }, + { name = "small emerald", chance = 3243, maxCount = 2 }, + { id = 281, chance = 2205 }, -- giant shimmering pearl (green) + { name = "terra boots", chance = 5075 }, + { name = "mercenary sword", chance = 4167 }, + { name = "knight legs", chance = 3649 }, + { name = "violet gem", chance = 3389 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -300 }, + { name = "foamsplash", interval = 5000, chance = 50, minDamage = -100, maxDamage = -300 }, + { name = "combat", interval = 2500, chance = 35, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, length = 6, spread = 0, effect = CONST_ME_LOSEENERGY }, + { name = "combat", interval = 2000, chance = 45, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, range = 4, radius = 1, target = true, effect = CONST_ME_ICEATTACK, shootEffect = CONST_ANI_ICE }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, radius = 4, target = false, effect = CONST_ME_ICEAREA }, +} + +monster.defenses = { + defense = 64, + armor = 64, + mitigation = 1.74, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 80, maxDamage = 113 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -30 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 80 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/elementals/high_voltage_elemental.lua b/data-canary/monster/elementals/high_voltage_elemental.lua new file mode 100644 index 00000000000..3d750a343cf --- /dev/null +++ b/data-canary/monster/elementals/high_voltage_elemental.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("High Voltage Elemental") +local monster = {} + +monster.description = "a high voltage elemental" +monster.experience = 1500 +monster.outfit = { + lookType = 293, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1116 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "South side of the second floor of Underground Glooth Factory, Warzone 5", +} + +monster.health = 1500 +monster.maxHealth = 1500 +monster.race = "blood" +monster.corpse = 8138 +monster.speed = 139 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 4, + color = 143, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 185 }, -- gold coin + { id = 761, chance = 100000, maxCount = 20 }, -- flash arrow + { id = 237, chance = 7142 }, -- strong mana potion + { id = 3033, chance = 7142, maxCount = 2 }, -- small amethyst + { id = 3007, chance = 7142 }, -- crystal ring + { id = 3313, chance = 4761 }, -- obsidian lance + { id = 268, chance = 4761 }, -- mana potion + { id = 7449, chance = 4761 }, -- crystal sword +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 66, attack = 70 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -205, maxDamage = -497, range = 7, radius = 2, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -201, maxDamage = -277, range = 7, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = true }, +} + +monster.defenses = { + defense = 11, + armor = 35, + mitigation = 1.60, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 35 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = -15 }, + { type = COMBAT_FIREDAMAGE, percent = -100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 5 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/elementals/ironblight.lua b/data-canary/monster/elementals/ironblight.lua new file mode 100644 index 00000000000..7cb7c7c58fc --- /dev/null +++ b/data-canary/monster/elementals/ironblight.lua @@ -0,0 +1,143 @@ +local mType = Game.createMonsterType("Ironblight") +local monster = {} + +monster.description = "an ironblight" +monster.experience = 5400 +monster.outfit = { + lookType = 498, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 890 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Warzone 3.", +} + +monster.health = 6600 +monster.maxHealth = 6600 +monster.race = "undead" +monster.corpse = 16079 +monster.speed = 143 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 260, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Yowl!", yell = false }, + { text = "Clonk!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 199 }, + { name = "small emerald", chance = 10890, maxCount = 3 }, + { name = "small amethyst", chance = 15020, maxCount = 3 }, + { name = "platinum coin", chance = 100000, maxCount = 8 }, + { id = 3039, chance = 3510 }, -- red gem + { name = "blue gem", chance = 480 }, + { name = "epee", chance = 480 }, + { name = "magic sulphur", chance = 830 }, + { name = "sapphire hammer", chance = 480 }, + { name = "great mana potion", chance = 17640 }, + { name = "terra legs", chance = 1110 }, + { name = "ultimate health potion", chance = 18330 }, + { name = "composite hornbow", chance = 210 }, + { name = "springsprout rod", chance = 1720 }, + { name = "crystal of balance", chance = 4480 }, + { name = "crystal of power", chance = 2480 }, + { name = "war crystal", chance = 21230 }, + { name = "shiny stone", chance = 15230 }, + { name = "jade hat", chance = 210 }, + { name = "glacial rod", chance = 960 }, + { name = "green crystal shard", chance = 5720 }, + { name = "brown crystal splinter", chance = 12610, maxCount = 2 }, + { name = "red crystal fragment", chance = 10540 }, + { name = "crystalline spikes", chance = 18400 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -460, maxDamage = -480, radius = 6, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -260, maxDamage = -350, length = 7, spread = 0, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -180, maxDamage = -250, radius = 2, shootEffect = CONST_ANI_GREENSTAR, effect = CONST_ME_BIGPLANTS, target = true }, + { name = "speed", interval = 2000, chance = 10, speedChange = -800, length = 5, spread = 0, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 }, +} + +monster.defenses = { + defense = 35, + armor = 84, + mitigation = 2.40, + { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 15 }, + { type = COMBAT_ENERGYDAMAGE, percent = 25 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 60 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 40 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/elementals/knowledge_elemental.lua b/data-canary/monster/elementals/knowledge_elemental.lua new file mode 100644 index 00000000000..c23f5b8e0b0 --- /dev/null +++ b/data-canary/monster/elementals/knowledge_elemental.lua @@ -0,0 +1,131 @@ +local mType = Game.createMonsterType("Knowledge Elemental") +local monster = {} + +monster.description = "a knowledge elemental" +monster.experience = 10603 +monster.outfit = { + lookType = 1065, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1670 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Secret Library energy section.", +} + +monster.health = 10500 +monster.maxHealth = 10500 +monster.race = "undead" +monster.corpse = 28605 +monster.speed = 230 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 4, + color = 71, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Did you know... there are over 200 bones in your body to break?", yell = false }, + { text = "Did you know... a lot of so-called trivia facts aren't even remotely true?", yell = false }, + { text = "Did you know... fear can be smelled?", yell = false }, + { text = "Did you know... you could die in 1.299.223 ways within the next ten seconds?", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 9 }, + { name = "book page", chance = 10000, maxCount = 6 }, + { name = "small amethyst", chance = 10000, maxCount = 8 }, + { name = "glowing rune", chance = 10000, maxCount = 3 }, + { name = "quill", chance = 10000, maxCount = 3 }, + { name = "silken bookmark", chance = 10000, maxCount = 3 }, + { name = "flash arrow", chance = 10000, maxCount = 6 }, + { name = "throwing star", chance = 10000, maxCount = 10 }, + { name = "crystal sword", chance = 10000 }, + { id = 3051, chance = 10000 }, -- energy ring + { name = "guardian shield", chance = 10000 }, + { name = "mana potion", chance = 10000, maxCount = 10 }, + { name = "ultimate mana potion", chance = 10000, maxCount = 8 }, + { name = "ultimate health potion", chance = 10000, maxCount = 8 }, + { name = "wand of cosmic energy", chance = 300 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -400 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -200, maxDamage = -680, radius = 3, effect = CONST_ME_HOLYDAMAGE, target = true }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -680, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, +} + +monster.defenses = { + defense = 33, + armor = 76, + mitigation = 2.08, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 100, maxDamage = 300, radius = 3, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "combat", interval = 200, chance = 55, type = COMBAT_PHYSICALDAMAGE, minDamage = 100, maxDamage = 300, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = -20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/elementals/lava_lurker.lua b/data-canary/monster/elementals/lava_lurker.lua new file mode 100644 index 00000000000..6a6e236f8c8 --- /dev/null +++ b/data-canary/monster/elementals/lava_lurker.lua @@ -0,0 +1,114 @@ +local mType = Game.createMonsterType("Lava Lurker") +local monster = {} + +monster.description = "a lava lurker" +monster.experience = 4000 +monster.outfit = { + lookType = 1041, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1563 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Gnome Deep Hub", +} + +monster.health = 5900 +monster.maxHealth = 5900 +monster.race = "fire" +monster.corpse = 27586 +monster.speed = 58 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 5, + color = 192, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 676, chance = 14620, maxCount = 2 }, -- small enchanted ruby +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -300, range = 7, length = 3, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -100, range = 7, length = 6, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, +} + +monster.defenses = { + defense = 33, + armor = 82, + mitigation = 2.16, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/elementals/massive_earth_elemental.lua b/data-canary/monster/elementals/massive_earth_elemental.lua new file mode 100644 index 00000000000..1b131e7c7ae --- /dev/null +++ b/data-canary/monster/elementals/massive_earth_elemental.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Massive Earth Elemental") +local monster = {} + +monster.description = "a massive earth elemental" +monster.experience = 1100 +monster.outfit = { + lookType = 285, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 455 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Forbidden Lands, on top of a hill in the northern part of the Arena and Zoo Quarter, \z + Lower Spike, Truffels Garden and Mushroom Gardens.", +} + +monster.health = 1330 +monster.maxHealth = 1330 +monster.race = "undead" +monster.corpse = 8105 +monster.speed = 185 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "small stone", chance = 25280, maxCount = 10 }, + { name = "gold coin", chance = 32000, maxCount = 100 }, + { name = "gold coin", chance = 32000, maxCount = 100 }, + { name = "gold coin", chance = 32000, maxCount = 41 }, + { name = "stone skin amulet", chance = 980 }, + { name = "protection amulet", chance = 1580 }, + { id = 3097, chance = 2790 }, -- dwarven ring + { name = "diamond sceptre", chance = 150 }, + { name = "terra amulet", chance = 500 }, + { id = 8895, chance = 3300 }, -- rusted armor + { name = "small topaz", chance = 5280, maxCount = 2 }, + { name = "lump of earth", chance = 40680 }, + { name = "clay lump", chance = 480 }, + { id = 12600, chance = 430 }, -- coal +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -99, maxDamage = -145, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_GREEN_RINGS, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -95, maxDamage = -169, range = 7, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_POFF, target = true }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -300, maxDamage = -320, length = 6, spread = 0, effect = CONST_ME_BIGPLANTS, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -200, maxDamage = -220, radius = 5, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, + { name = "speed", interval = 2000, chance = 20, speedChange = -330, range = 5, effect = CONST_ME_SMALLPLANTS, target = true, duration = 5000 }, +} + +monster.defenses = { + defense = 35, + armor = 60, + mitigation = 1.04, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 150, maxDamage = 180, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 90 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = 45 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/elementals/massive_energy_elemental.lua b/data-canary/monster/elementals/massive_energy_elemental.lua new file mode 100644 index 00000000000..dfb26c53453 --- /dev/null +++ b/data-canary/monster/elementals/massive_energy_elemental.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Massive Energy Elemental") +local monster = {} + +monster.description = "a massive energy elemental" +monster.experience = 950 +monster.outfit = { + lookType = 290, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 456 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "North west of Ankrahmun, you must Levitate to hunt. Two can also be found in the Asura Palace.", +} + +monster.health = 1100 +monster.maxHealth = 1100 +monster.race = "venom" +monster.corpse = 8138 +monster.speed = 215 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 15, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 85, + targetDistance = 1, + runHealth = 1, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 4, + color = 203, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 91 }, + { name = "small amethyst", chance = 3270, maxCount = 3 }, + { name = "strong mana potion", chance = 17450 }, + { name = "great mana potion", chance = 5450 }, + { name = "lightning pendant", chance = 730 }, + { name = "lightning legs", chance = 150 }, + { name = "spellbook of warding", chance = 360 }, + { name = "wand of starstorm", chance = 730 }, + { id = 8895, chance = 730 }, -- rusted armor + { name = "shockwave amulet", chance = 500 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -175 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -270, maxDamage = -615, range = 7, radius = 2, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -175, maxDamage = -205, range = 7, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "massive energy elemental electrify", interval = 2000, chance = 20, effect = CONST_ME_BLOCKHIT, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 35, + mitigation = 1.04, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 190, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 50 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = -5 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/elementals/massive_fire_elemental.lua b/data-canary/monster/elementals/massive_fire_elemental.lua new file mode 100644 index 00000000000..e21cd8204dc --- /dev/null +++ b/data-canary/monster/elementals/massive_fire_elemental.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Massive Fire Elemental") +local monster = {} + +monster.description = "a massive fire elemental" +monster.experience = 1400 +monster.outfit = { + lookType = 242, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 313 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Demon Forge, Deeper Banuta, Hero Cave, Hot Spot, Fury Dungeon.", +} + +monster.health = 1800 +monster.maxHealth = 1800 +monster.race = "fire" +monster.corpse = 6323 +monster.speed = 119 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + random = 20, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 5, + color = 206, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "small ruby", chance = 6100, maxCount = 2 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 25000, maxCount = 100 }, + { name = "gold coin", chance = 25000, maxCount = 12 }, + { name = "wand of inferno", chance = 2240 }, + { name = "fire sword", chance = 530 }, + { name = "magma amulet", chance = 1300 }, + { name = "magma boots", chance = 560 }, + { name = "magma legs", chance = 210 }, + { id = 8895, chance = 1330 }, -- rusted armor +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, + { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -700, length = 7, spread = 0, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -250, radius = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "massive fire elemental soulfire", interval = 2000, chance = 15, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 57, + mitigation = 1.32, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 50 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -15 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/elementals/massive_water_elemental.lua b/data-canary/monster/elementals/massive_water_elemental.lua new file mode 100644 index 00000000000..65ead75130e --- /dev/null +++ b/data-canary/monster/elementals/massive_water_elemental.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Massive Water Elemental") +local monster = {} + +monster.description = "a massive water elemental" +monster.experience = 1100 +monster.outfit = { + lookType = 11, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 279 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Calassa, Frozen Trench, Water Elemental Dungeon through the water channels, before Zugurosh in The Inquisition Quest.", +} + +monster.health = 1250 +monster.maxHealth = 1250 +monster.race = "undead" +monster.corpse = 9582 +monster.speed = 215 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 4, + color = 143, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "small diamond", chance = 1900, maxCount = 2 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "small emerald", chance = 1000, maxCount = 2 }, + { name = "platinum coin", chance = 20000, maxCount = 2 }, + { id = 3051, chance = 910 }, -- energy ring + { id = 3052, chance = 1000 }, -- life ring + { id = 3578, chance = 40000, maxCount = 2 }, -- fish + { name = "rainbow trout", chance = 1340 }, + { name = "green perch", chance = 1590 }, + { name = "great mana potion", chance = 10400 }, + { name = "great health potion", chance = 10000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -220, condition = { type = CONDITION_POISON, totalDamage = 300, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -330, maxDamage = -450, range = 7, radius = 2, effect = CONST_ME_LOSEENERGY, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -170, maxDamage = -210, range = 7, shootEffect = CONST_ANI_SMALLICE, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 20, minDamage = -355, maxDamage = -420, radius = 5, effect = CONST_ME_POISONAREA, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 45, + mitigation = 1.32, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 120, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 40 }, + { type = COMBAT_ENERGYDAMAGE, percent = -25 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/elementals/raging_fire.lua b/data-canary/monster/elementals/raging_fire.lua new file mode 100644 index 00000000000..a03c9994118 --- /dev/null +++ b/data-canary/monster/elementals/raging_fire.lua @@ -0,0 +1,113 @@ +local mType = Game.createMonsterType("Raging Fire") +local monster = {} + +monster.description = "a raging fire" +monster.experience = 1500 +monster.outfit = { + lookType = 242, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1121 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Jaccus Maxxen's Dungeon.", +} + +monster.health = 1800 +monster.maxHealth = 1800 +monster.race = "fire" +monster.corpse = 21815 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + random = 20, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 5, + color = 206, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 100 }, + { name = "combat", interval = 2000, chance = 9, type = COMBAT_FIREDAMAGE, minDamage = -65, maxDamage = -605, length = 7, spread = 0, effect = CONST_ME_FIREAREA, target = false }, + { name = "massive fire elemental soulfire", interval = 2000, chance = 12, target = false }, + { name = "firefield", interval = 2000, chance = 11, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_EXPLOSIONHIT, target = true }, + { name = "firefield", interval = 2000, chance = 11, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 50, + mitigation = 1.32, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/elementals/ravenous_lava_lurker.lua b/data-canary/monster/elementals/ravenous_lava_lurker.lua new file mode 100644 index 00000000000..5215cf31d22 --- /dev/null +++ b/data-canary/monster/elementals/ravenous_lava_lurker.lua @@ -0,0 +1,115 @@ +local mType = Game.createMonsterType("Ravenous Lava Lurker") +local monster = {} + +monster.description = "a ravenous lava lurker" +monster.experience = 4000 +monster.outfit = { + lookType = 1041, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1569 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Gnome Deep Hub in the Gnomish area.", +} + +monster.health = 5000 +monster.maxHealth = 5000 +monster.race = "fire" +monster.corpse = 0 +monster.speed = 58 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 5, + color = 192, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "small enchanted ruby", chance = 14620 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, + { name = "ravennouslavalurkerwave", interval = 2000, chance = 15, minDamage = 0, maxDamage = -400, target = false }, + { name = "ravennouslavalurkertarget", interval = 2000, chance = 40, minDamage = 0, maxDamage = -400, target = true }, +} + +monster.defenses = { + defense = 33, + armor = 45, + mitigation = 0.91, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/elementals/sulphur_spouter.lua b/data-canary/monster/elementals/sulphur_spouter.lua new file mode 100644 index 00000000000..79ebcf8db4b --- /dev/null +++ b/data-canary/monster/elementals/sulphur_spouter.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Sulphur Spouter") +local monster = {} + +monster.description = "a sulphur spouter" +monster.experience = 11517 +monster.outfit = { + lookType = 1547, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2265 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 5000, + FirstUnlock = 200, + SecondUnlock = 2000, + CharmsPoints = 100, + Stars = 5, + Occurrence = 0, + Locations = "Monster Graveyard", +} + +monster.health = 19000 +monster.maxHealth = 19000 +monster.race = "blood" +monster.corpse = 39279 +monster.speed = 180 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 2, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Gruugl...", yell = false }, +} + +monster.loot = { + { name = "Sulphur Powder", chance = 39440 }, + { name = "Crystal Coin", chance = 22310, minCount = 1, maxCount = 2 }, + { name = "Ultimate Mana Potion", chance = 12890, minCount = 1, maxCount = 2 }, + { name = "Yellow Gem", chance = 2820 }, + { id = 282, chance = 2450 }, -- Giant Shimmering Pearl (Green) + { name = "Slightly Rusted Legs", chance = 2420 }, + { name = "Knight Legs", chance = 2360 }, + { id = 3039, chance = 2190 }, -- Red Gem + { name = "Warrior's Shield", chance = 1760 }, + { id = 23533, chance = 1110 }, -- Ring of Red Plasma + { name = "Fire Sword", chance = 770 }, + { name = "Crystal Crossbow", chance = 510 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -801 }, + { name = "combat", interval = 3500, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = -800, maxDamage = -1200, range = 4, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_YELLOW_RINGS, target = true }, + { name = "combat", interval = 4000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -800, maxDamage = -1200, radius = 4, effect = CONST_ME_YELLOWSMOKE, target = true }, + { name = "sulphur spouter wave", interval = 4500, chance = 30, minDamage = -650, maxDamage = -900 }, +} + +monster.defenses = { + defense = 110, + armor = 84, + mitigation = 2.05, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -20 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/elementals/water_elemental.lua b/data-canary/monster/elementals/water_elemental.lua new file mode 100644 index 00000000000..0272e24d799 --- /dev/null +++ b/data-canary/monster/elementals/water_elemental.lua @@ -0,0 +1,131 @@ +local mType = Game.createMonsterType("Water Elemental") +local monster = {} + +monster.description = "a water elemental" +monster.experience = 650 +monster.outfit = { + lookType = 286, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 236 +monster.Bestiary = { + class = "Elemental", + race = BESTY_RACE_ELEMENTAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Water Elemental Cave in Port Hope, Water Elemental Dungeon, Deeper Banuta, Malada, Ramoa, \z + Talahu, Folda (7 spawn on the 3rd floor), Water Elemental Cave in Outlaw Camp (only during the Down the \z + Drain Mini World Change), Krailos Steppe underwater cave.", +} + +monster.health = 550 +monster.maxHealth = 550 +monster.race = "undead" +monster.corpse = 9582 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 3, + color = 143, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Splish splash", yell = false }, +} + +monster.loot = { + { name = "small diamond", chance = 2500 }, + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "small emerald", chance = 2500, maxCount = 2 }, + { name = "platinum coin", chance = 25000 }, + { id = 3051, chance = 950 }, -- energy ring + { id = 3052, chance = 930 }, -- life ring + { id = 3578, chance = 20000 }, -- fish + { name = "rainbow trout", chance = 940 }, + { name = "green perch", chance = 1050 }, + { name = "strong health potion", chance = 10000 }, + { name = "strong mana potion", chance = 10000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -160, condition = { type = CONDITION_POISON, totalDamage = 60, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DROWNDAMAGE, minDamage = -125, maxDamage = -235, range = 7, radius = 2, effect = CONST_ME_LOSEENERGY, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -88, maxDamage = -150, range = 7, shootEffect = CONST_ANI_SMALLICE, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -225, maxDamage = -260, radius = 5, effect = CONST_ME_POISONAREA, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 37, + mitigation = 0.88, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 30 }, + { type = COMBAT_ENERGYDAMAGE, percent = -25 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/extra_dimensional/breach_brood.lua b/data-canary/monster/extra_dimensional/breach_brood.lua new file mode 100644 index 00000000000..a1e6a3291f6 --- /dev/null +++ b/data-canary/monster/extra_dimensional/breach_brood.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Breach Brood") +local monster = {} + +monster.description = "a breach brood" +monster.experience = 1760 +monster.outfit = { + lookType = 878, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1235 +monster.Bestiary = { + class = "Extra Dimensional", + race = BESTY_RACE_EXTRA_DIMENSIONAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Otherworld.", +} + +monster.health = 3500 +monster.maxHealth = 3500 +monster.race = "venom" +monster.corpse = 23392 +monster.speed = 135 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hisss!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin + { id = 3035, chance = 100000, maxCount = 5 }, -- platinum coin + { id = 23535, chance = 15000 }, -- energy bar + { id = 23545, chance = 15000 }, -- energy drink + { id = 23516, chance = 15000 }, -- instable proto matter + { id = 239, chance = 12200 }, -- great health potion + { id = 238, chance = 12000 }, -- great mana potion + { id = 7642, chance = 11700 }, -- great spirit potion + { id = 23507, chance = 11500 }, -- crystallized anger + { id = 23511, chance = 10600 }, -- curious matter + { id = 23514, chance = 9600 }, -- volatile proto matter + { id = 23506, chance = 9600 }, -- plasma pearls + { id = 16124, chance = 7400, maxCount = 2 }, -- blue crystal splinter + { id = 16125, chance = 6500 }, -- cyan crystal fragment + { id = 16119, chance = 4400 }, -- blue crystal shard + { id = 16121, chance = 4100 }, -- green crystal shard + { id = 23544, chance = 470 }, -- collar of red plasma + { id = 23542, chance = 470 }, -- collar of blue plasma + { name = "spark sphere", chance = 14870 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, range = 6, shootEffect = CONST_ANI_FLASHARROW, effect = CONST_ME_STUN, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -350, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "breach brood reducer", interval = 2000, chance = 20, target = false }, +} + +monster.defenses = { + defense = 52, + armor = 53, + mitigation = 1.46, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 80 }, + { type = COMBAT_EARTHDAMAGE, percent = -5 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 25 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/extra_dimensional/dread_intruder.lua b/data-canary/monster/extra_dimensional/dread_intruder.lua new file mode 100644 index 00000000000..d72cea138e7 --- /dev/null +++ b/data-canary/monster/extra_dimensional/dread_intruder.lua @@ -0,0 +1,140 @@ +local mType = Game.createMonsterType("Dread Intruder") +local monster = {} + +monster.description = "a dread intruder" +monster.experience = 2400 +monster.outfit = { + lookType = 882, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1260 +monster.Bestiary = { + class = "Extra Dimensional", + race = BESTY_RACE_EXTRA_DIMENSIONAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Otherworld", +} + +monster.health = 4500 +monster.maxHealth = 4500 +monster.race = "venom" +monster.corpse = 23478 +monster.speed = 165 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 25, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Whirr!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin + { id = 3031, chance = 100000, maxCount = 89 }, -- gold coin + { id = 3035, chance = 100000, maxCount = 8 }, -- platinum coin + { id = 23545, chance = 15000 }, -- energy drink + { id = 23535, chance = 15000 }, -- energy bar + { id = 23519, chance = 15000 }, -- frozen lightning + { id = 23516, chance = 8000 }, -- instable proto matter + { id = 7642, chance = 14000 }, -- great spirit potion + { id = 7643, chance = 13500 }, -- ultimate health potion + { id = 238, chance = 12700 }, -- great mana potion + { id = 23523, chance = 11800 }, -- energy ball + { id = 23510, chance = 9600 }, -- odd organ + { id = 16124, chance = 9500 }, -- blue crystal splinter + { id = 16125, chance = 6200 }, -- cyan crystal fragment + { id = 3030, chance = 5400, maxCount = 2 }, -- small ruby + { id = 3029, chance = 5400, maxCount = 2 }, -- small sapphire + { id = 3033, chance = 5000, maxCount = 2 }, -- small amethyst + { id = 16120, chance = 4500 }, -- violet crystal shard + { id = 3036, chance = 1000 }, -- violet gem + { id = 23533, chance = 450 }, -- ring of red plasma + { id = 23542, chance = 230 }, -- collar of blue plasma + { id = 23543, chance = 230 }, -- collar of green plasma + { id = 23529, chance = 230 }, -- ring of blue plasma +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, + -- energy damage + { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -400, maxDamage = -600, radius = 5, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -400, range = 4, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, + { name = "dread intruder wave", interval = 2000, chance = 25, minDamage = -350, maxDamage = -550, target = false }, +} + +monster.defenses = { + defense = 50, + armor = 50, + mitigation = 1.54, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 80, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 90 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 80 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/extra_dimensional/instable_breach_brood.lua b/data-canary/monster/extra_dimensional/instable_breach_brood.lua new file mode 100644 index 00000000000..6b115858b60 --- /dev/null +++ b/data-canary/monster/extra_dimensional/instable_breach_brood.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Instable Breach Brood") +local monster = {} + +monster.description = "an instable breach brood" +monster.experience = 1100 +monster.outfit = { + lookType = 878, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1265 +monster.Bestiary = { + class = "Extra Dimensional", + race = BESTY_RACE_EXTRA_DIMENSIONAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Otherworld Dwarf Bridge", +} + +monster.health = 2200 +monster.maxHealth = 2200 +monster.race = "venom" +monster.corpse = 23392 +monster.speed = 135 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hisss!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin + { id = 3035, chance = 20000, maxCount = 2 }, -- platinum coin + { id = 23521, chance = 10200 }, -- crystal bone + { id = 23506, chance = 10100 }, -- plasma pearls + { id = 23545, chance = 4900 }, -- energy drink + { id = 7642, chance = 4800 }, -- great spirit potion + { id = 238, chance = 4400 }, -- great mana potion + { id = 23535, chance = 4200 }, -- energy bar + { id = 239, chance = 4200 }, -- great health potion + { id = 16121, chance = 3400 }, -- green crystal shard + { id = 16125, chance = 3300 }, -- cyan crystal fragment + { id = 16124, chance = 2600 }, -- blue crystal splinter + { id = 16119, chance = 2100 }, -- blue crystal shard +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -160, maxDamage = -250, range = 6, shootEffect = CONST_ANI_FLASHARROW, effect = CONST_ME_STUN, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -200, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "breach brood reducer", interval = 2000, chance = 20, target = false }, +} + +monster.defenses = { + defense = 35, + armor = 43, + mitigation = 1.32, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 75 }, + { type = COMBAT_EARTHDAMAGE, percent = -15 }, + { type = COMBAT_FIREDAMAGE, percent = 40 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 30 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/extra_dimensional/instable_sparkion.lua b/data-canary/monster/extra_dimensional/instable_sparkion.lua new file mode 100644 index 00000000000..f3e677200a6 --- /dev/null +++ b/data-canary/monster/extra_dimensional/instable_sparkion.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Instable Sparkion") +local monster = {} + +monster.description = "an instable sparkion" +monster.experience = 1350 +monster.outfit = { + lookType = 877, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1264 +monster.Bestiary = { + class = "Extra Dimensional", + race = BESTY_RACE_EXTRA_DIMENSIONAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Otherworld Dwarf Bridge", +} + +monster.health = 1900 +monster.maxHealth = 1900 +monster.race = "venom" +monster.corpse = 23388 +monster.speed = 140 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Zzing!", yell = false }, + { text = "Frizzle!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin + { id = 3035, chance = 20000 }, -- platinum coin + { id = 23502, chance = 6000 }, -- sparkion claw + { id = 23545, chance = 4900 }, -- energy drink + { id = 7642, chance = 4800 }, -- great spirit potion + { id = 238, chance = 4400 }, -- great mana potion + { id = 239, chance = 4200 }, -- great health potion + { id = 23535, chance = 4200 }, -- energy bar + { id = 23503, chance = 4000 }, -- sparkion tail + { id = 23504, chance = 4000 }, -- sparkion legs + { id = 23505, chance = 3500 }, -- sparkion stings + { id = 16124, chance = 2600 }, -- blue crystal splinter + { id = 16119, chance = 2100 }, -- blue crystal shard +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -350, length = 6, spread = 0, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -200, range = 5, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = true }, + -- energy damage + { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -300, maxDamage = -600, range = 6, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = true }, +} + +monster.defenses = { + defense = 35, + armor = 37, + mitigation = 1.18, + { name = "speed", interval = 2000, chance = 10, speedChange = 360, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 80 }, + { type = COMBAT_EARTHDAMAGE, percent = -15 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 60 }, + { type = COMBAT_HOLYDAMAGE, percent = 5 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/extra_dimensional/reality_reaver.lua b/data-canary/monster/extra_dimensional/reality_reaver.lua new file mode 100644 index 00000000000..9aaf25be514 --- /dev/null +++ b/data-canary/monster/extra_dimensional/reality_reaver.lua @@ -0,0 +1,140 @@ +local mType = Game.createMonsterType("Reality Reaver") +local monster = {} + +monster.description = "a reality reaver" +monster.experience = 2480 +monster.outfit = { + lookType = 879, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1224 +monster.Bestiary = { + class = "Extra Dimensional", + race = BESTY_RACE_EXTRA_DIMENSIONAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Otherworld", +} + +monster.health = 3900 +monster.maxHealth = 3900 +monster.race = "venom" +monster.corpse = 23412 +monster.speed = 170 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 25, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Ssshhh!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin + { id = 3035, chance = 100000, maxCount = 6 }, -- platinum coin + { id = 23545, chance = 15000 }, -- energy drink + { id = 23535, chance = 15000 }, -- energy bar + { id = 23508, chance = 15000 }, -- energy vein + { id = 23520, chance = 14700 }, -- plasmatic lightning + { id = 7642, chance = 11400, maxCount = 2 }, -- great spirit potion + { id = 238, chance = 10300, maxCount = 2 }, -- great mana potion + { id = 239, chance = 9700, maxCount = 2 }, -- great health potion + { id = 23506, chance = 9700 }, -- plasma pearls + { id = 23515, chance = 9600 }, -- dangerous proto matter + { id = 16124, chance = 7900 }, -- blue crystal splinter + { id = 16126, chance = 6000 }, -- red crystal fragment + { id = 16120, chance = 4400 }, -- violet crystal shard + { id = 16119, chance = 4000 }, -- blue crystal shard + { id = 3039, chance = 2600 }, -- red gem + { id = 23543, chance = 630 }, -- collar of green plasma + { id = 828, chance = 520 }, -- lightning headband + { id = 3036, chance = 370 }, -- violet gem + { id = 23529, chance = 370 }, -- ring of blue plasma + { id = 23544, chance = 300 }, -- collar of red plasma + { id = 23531, chance = 220 }, -- ring of green plasma +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -180, maxDamage = -400, range = 5, radius = 5, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_PURPLEENERGY, target = true }, + { name = "reality reaver wave", interval = 2000, chance = 20, minDamage = -200, maxDamage = -500, target = false }, + -- energy damage + { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -400, maxDamage = -800, radius = 5, effect = CONST_ME_STUN, target = false }, +} + +monster.defenses = { + defense = 50, + armor = 51, + mitigation = 1.76, + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_POFF }, + { name = "speed", interval = 2000, chance = 10, speedChange = 380, effect = CONST_ME_HITAREA, target = false, duration = 8000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 85 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/extra_dimensional/sparkion.lua b/data-canary/monster/extra_dimensional/sparkion.lua new file mode 100644 index 00000000000..94933e33f5b --- /dev/null +++ b/data-canary/monster/extra_dimensional/sparkion.lua @@ -0,0 +1,142 @@ +local mType = Game.createMonsterType("Sparkion") +local monster = {} + +monster.description = "a sparkion" +monster.experience = 1520 +monster.outfit = { + lookType = 877, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1234 +monster.Bestiary = { + class = "Extra Dimensional", + race = BESTY_RACE_EXTRA_DIMENSIONAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Otherworld", +} + +monster.health = 2700 +monster.maxHealth = 2700 +monster.race = "venom" +monster.corpse = 23388 +monster.speed = 151 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 15, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Zzing!", yell = false }, + { text = "Frizzle!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin + { id = 3035, chance = 20000, maxCount = 3 }, -- platinum coin + { id = 23502, chance = 15000 }, -- sparkion claw + { id = 23545, chance = 15000 }, -- energy drink + { id = 23535, chance = 14600 }, -- energy bar + { id = 23505, chance = 14100 }, -- sparkion stings + { id = 23504, chance = 11100 }, -- sparkion legs + { id = 238, chance = 10100, maxCount = 2 }, -- great mana potion + { id = 7642, chance = 9700, maxCount = 2 }, -- great spirit potion + { id = 239, chance = 9500, maxCount = 2 }, -- great health potion + { id = 23503, chance = 9100 }, -- sparkion tail + { id = 16124, chance = 8600 }, -- blue crystal splinter + { id = 16125, chance = 6000 }, -- cyan crystal fragment + { id = 3029, chance = 4900, maxCount = 2 }, -- small sapphire + { id = 16119, chance = 4200 }, -- blue crystal shard + { id = 3041, chance = 1000 }, -- blue gem + { id = 3073, chance = 920 }, -- wand of cosmic energy + { id = 23531, chance = 370 }, -- ring of green plasma + { id = 23533, chance = 370 }, -- ring of red plasma + { id = 23529, chance = 240 }, -- ring of blue plasma + { id = 23543, chance = 240 }, -- collar of green plasma + { id = 23542, chance = 240 }, -- collar of blue plasma + { id = 23544, chance = 200 }, -- collar of red plasma +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -400, length = 6, spread = 0, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, range = 5, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = true }, + -- energy damage + { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -300, maxDamage = -600, range = 6, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = true }, +} + +monster.defenses = { + defense = 40, + armor = 40, + mitigation = 1.32, + { name = "speed", interval = 2000, chance = 10, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 50, maxDamage = 180, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 90 }, + { type = COMBAT_EARTHDAMAGE, percent = -15 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 70 }, + { type = COMBAT_HOLYDAMAGE, percent = 5 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/extra_dimensional/stabilizing_dread_intruder.lua b/data-canary/monster/extra_dimensional/stabilizing_dread_intruder.lua new file mode 100644 index 00000000000..f51e27ea897 --- /dev/null +++ b/data-canary/monster/extra_dimensional/stabilizing_dread_intruder.lua @@ -0,0 +1,131 @@ +local mType = Game.createMonsterType("Stabilizing Dread Intruder") +local monster = {} + +monster.description = "a stabilizing dread intruder" +monster.experience = 1900 +monster.outfit = { + lookType = 882, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1267 +monster.Bestiary = { + class = "Extra Dimensional", + race = BESTY_RACE_EXTRA_DIMENSIONAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Otherworld (Edron)", +} + +monster.health = 2800 +monster.maxHealth = 2800 +monster.race = "venom" +monster.corpse = 23478 +monster.speed = 145 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 25, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Whirr!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin + { id = 3035, chance = 20000, maxCount = 5 }, -- platinum coin + { id = 23535, chance = 12200 }, -- energy bar + { id = 238, chance = 10800 }, -- great mana potion + { id = 23513, chance = 9800 }, -- strange proto matter + { id = 23517, chance = 9400 }, -- solid rage + { id = 23522, chance = 9000 }, -- glistening bone + { id = 7643, chance = 8700 }, -- ultimate health potion + { id = 23545, chance = 8700 }, -- energy drink + { id = 7642, chance = 8700 }, -- great spirit potion + { id = 3033, chance = 5000, maxCount = 2 }, -- small amethyst + { id = 16124, chance = 4800 }, -- blue crystal splinter + { id = 3029, chance = 4400, maxCount = 2 }, -- small sapphire + { id = 16120, chance = 4200 }, -- violet crystal shard + { id = 3030, chance = 3400, maxCount = 2 }, -- small ruby + { id = 16125, chance = 3300 }, -- cyan crystal fragment +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -300, range = 4, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, + { name = "dread intruder wave", interval = 2000, chance = 25, minDamage = -350, maxDamage = -450, target = false }, +} + +monster.defenses = { + defense = 50, + armor = 46, + mitigation = 1.37, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 80, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 80 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 70 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/extra_dimensional/stabilizing_reality_reaver.lua b/data-canary/monster/extra_dimensional/stabilizing_reality_reaver.lua new file mode 100644 index 00000000000..c43f3f2d52c --- /dev/null +++ b/data-canary/monster/extra_dimensional/stabilizing_reality_reaver.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Stabilizing Reality Reaver") +local monster = {} + +monster.description = "a stabilizing reality reaver" +monster.experience = 1950 +monster.outfit = { + lookType = 879, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1266 +monster.Bestiary = { + class = "Extra Dimensional", + race = BESTY_RACE_EXTRA_DIMENSIONAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Otherworld (Edron)", +} + +monster.health = 2500 +monster.maxHealth = 2500 +monster.race = "venom" +monster.corpse = 23412 +monster.speed = 155 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 25, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Ssshhh!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin + { id = 3035, chance = 100000, maxCount = 4 }, -- platinum coin + { id = 239, chance = 14200 }, -- great health potion + { id = 7642, chance = 14000 }, -- great spirit potion + { id = 238, chance = 12700 }, -- great mana potion + { id = 23545, chance = 11200 }, -- energy drink + { id = 23535, chance = 10900 }, -- energy bar + { id = 23501, chance = 9900 }, -- condensed energy + { id = 23524, chance = 8300 }, -- small energy ball + { id = 23506, chance = 8000 }, -- plasma pearls + { id = 16126, chance = 3400 }, -- red crystal fragment + { id = 16120, chance = 3400 }, -- violet crystal shard + { id = 16124, chance = 2700, maxCount = 2 }, -- blue crystal splinter + { id = 16119, chance = 1900 }, -- blue crystal shard + { id = 3039, chance = 1500 }, -- red gem + { id = 8092, chance = 1100 }, -- wand of starstorm +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -180, maxDamage = -300, range = 5, radius = 5, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_PURPLEENERGY, target = true }, + { name = "reality reaver wave", interval = 2000, chance = 20, minDamage = -200, maxDamage = -350, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -80, maxDamage = -200, radius = 3, effect = CONST_ME_STUN, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 46, + mitigation = 1.57, + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_POFF }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 80, maxDamage = 210, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = 330, effect = CONST_ME_HITAREA, target = false, duration = 8000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 70 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/extra_dimensional/yielothax.lua b/data-canary/monster/extra_dimensional/yielothax.lua new file mode 100644 index 00000000000..bfde638d1a8 --- /dev/null +++ b/data-canary/monster/extra_dimensional/yielothax.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Yielothax") +local monster = {} + +monster.description = "a yielothax" +monster.experience = 1250 +monster.outfit = { + lookType = 408, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "YielothaxDeath", +} + +monster.raceId = 717 +monster.Bestiary = { + class = "Extra Dimensional", + race = BESTY_RACE_EXTRA_DIMENSIONAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "In another dimension, through a portal in the Raging Mage tower, southern Zao.", +} + +monster.health = 1500 +monster.maxHealth = 1500 +monster.race = "venom" +monster.corpse = 12595 +monster.speed = 150 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 75, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "IIEEH!! Iiih iih ih iiih!!!", yell = true }, + { text = "Bsssssssm Bssssssm Bsssssssssssm!", yell = true }, +} + +monster.loot = { + { name = "small diamond", chance = 4761, maxCount = 5 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 27 }, + { name = "talon", chance = 917 }, + { name = "might ring", chance = 3846 }, + { name = "wand of cosmic energy", chance = 523 }, + { name = "epee", chance = 564 }, + { name = "brown mushroom", chance = 9090, maxCount = 3 }, + { name = "mastermind potion", chance = 490 }, + { name = "strong health potion", chance = 20000 }, + { name = "strong mana potion", chance = 20000 }, + { name = "lightning pendant", chance = 862 }, + { name = "lightning legs", chance = 480 }, + { name = "shockwave amulet", chance = 571 }, + { name = "broken ring of ending", chance = 261 }, + { name = "yielowax", chance = 300 }, + { name = "yielocks", chance = 320 }, +} + +monster.attacks = { + { name = "melee", interval = 1000, chance = 100, minDamage = 0, maxDamage = -203 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -130, length = 4, spread = 0, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -250, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -70, maxDamage = -120, radius = 3, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -150, length = 4, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 30, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_HITBYPOISON, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/familiars/druid_familiar.lua b/data-canary/monster/familiars/druid_familiar.lua index 558d2e91e2e..4e3861b5ba8 100644 --- a/data-canary/monster/familiars/druid_familiar.lua +++ b/data-canary/monster/familiars/druid_familiar.lua @@ -1,4 +1,4 @@ -local mType = Game.createMonsterType("Druid familiar") +local mType = Game.createMonsterType("Druid Familiar") local monster = {} monster.description = "a druid familiar" @@ -75,6 +75,7 @@ monster.attacks = { monster.defenses = { defense = 55, armor = 55, + -- mitigation = ???, { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 600, maxDamage = 600, effect = CONST_ME_MAGIC_GREEN, target = false }, } @@ -93,9 +94,7 @@ monster.elements = { monster.immunities = { { type = "paralyze", condition = true }, - { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/familiars/knight_familiar.lua b/data-canary/monster/familiars/knight_familiar.lua index 4c6c2cd7c04..ce507c0af72 100644 --- a/data-canary/monster/familiars/knight_familiar.lua +++ b/data-canary/monster/familiars/knight_familiar.lua @@ -1,4 +1,4 @@ -local mType = Game.createMonsterType("Knight familiar") +local mType = Game.createMonsterType("Knight Familiar") local monster = {} monster.description = "a knight familiar" @@ -78,7 +78,8 @@ monster.attacks = { monster.defenses = { defense = 55, armor = 55, - { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 400, maxDamage = 400, effect = CONST_ME_MAGIC_GREEN, target = false }, + -- mitigation = ???, + { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 300, maxDamage = 300, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -96,9 +97,7 @@ monster.elements = { monster.immunities = { { type = "paralyze", condition = true }, - { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/familiars/paladin_familiar.lua b/data-canary/monster/familiars/paladin_familiar.lua index 2b678dc132d..42b4736a1f3 100644 --- a/data-canary/monster/familiars/paladin_familiar.lua +++ b/data-canary/monster/familiars/paladin_familiar.lua @@ -1,4 +1,4 @@ -local mType = Game.createMonsterType("Paladin familiar") +local mType = Game.createMonsterType("Paladin Familiar") local monster = {} monster.description = "a paladin familiar" @@ -76,7 +76,8 @@ monster.attacks = { monster.defenses = { defense = 55, armor = 55, - { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 380, maxDamage = 380, effect = CONST_ME_MAGIC_GREEN, target = false }, + -- mitigation = ???, + { name = "combat", interval = 2000, chance = 75, type = COMBAT_HEALING, minDamage = 450, maxDamage = 450, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { @@ -94,9 +95,7 @@ monster.elements = { monster.immunities = { { type = "paralyze", condition = true }, - { type = "outfit", condition = false }, { type = "invisible", condition = true }, - { type = "bleed", condition = false }, } mType:register(monster) diff --git a/data-canary/monster/fey/arctic_faun.lua b/data-canary/monster/fey/arctic_faun.lua new file mode 100644 index 00000000000..56ac876a918 --- /dev/null +++ b/data-canary/monster/fey/arctic_faun.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Arctic Faun") +local monster = {} + +monster.description = "an arctic faun" +monster.experience = 300 +monster.outfit = { + lookType = 980, + lookHead = 85, + lookBody = 0, + lookLegs = 0, + lookFeet = 85, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1626 +monster.Bestiary = { + class = "Fey", + race = BESTY_RACE_FEY, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "Arctic Faun's Island.", +} + +monster.health = 300 +monster.maxHealth = 300 +monster.race = "blood" +monster.corpse = 28811 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Dance with me!", yell = false }, + { text = "In vino veritas! Hahaha!", yell = false }, + { text = "Wine, women and song!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 105 }, + { name = "dandelion seeds", chance = 14870 }, + { name = "strong health potion", chance = 11760 }, + { name = "fresh fruit", chance = 10290 }, + { name = "shimmering beetles", chance = 9330 }, + { name = "leaf star", chance = 8720, maxCount = 3 }, + { name = "goat grass", chance = 7280 }, + { name = "cookie", chance = 6150, maxCount = 5 }, + { name = "grapes", chance = 5400 }, + { name = "rainbow quartz", chance = 5260, maxCount = 2 }, + { name = "small stone", chance = 5260, maxCount = 2 }, + { name = "panpipes", chance = 4510 }, + { name = "great health potion", chance = 3590 }, + { name = "wood cape", chance = 820 }, + { name = "leaf legs", chance = 340 }, + { name = "wooden spellbook", chance = 210 }, + { id = 5792, chance = 140 }, -- die +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 30, + mitigation = 0.83, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 70 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 80 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/fey/boogy.lua b/data-canary/monster/fey/boogy.lua new file mode 100644 index 00000000000..681428a2713 --- /dev/null +++ b/data-canary/monster/fey/boogy.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Boogy") +local monster = {} + +monster.description = "a boogy" +monster.experience = 950 +monster.outfit = { + lookType = 981, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1439 +monster.Bestiary = { + class = "Fey", + race = BESTY_RACE_FEY, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Feyrist (night time) and its underground (all day).", +} + +monster.health = 1300 +monster.maxHealth = 1300 +monster.race = "blood" +monster.corpse = 25819 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 20, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Go to sleep!", yell = false }, +} + +monster.loot = { + { id = 24390, chance = 3000, maxCount = 3 }, -- ancient coin + { id = 7439, chance = 1500 }, -- berserk potion + { id = 9067, chance = 100 }, -- crystal of power + { id = 25693, chance = 15000 }, -- shimmering beetles + { id = 3031, chance = 100000, maxCount = 200 }, -- gold coin + { id = 3306, chance = 900 }, -- golden sickle + { id = 5014, chance = 100 }, -- mandrake + { id = 24962, chance = 2500, maxCount = 2 }, -- prismatic quartz + { id = 16126, chance = 3600, maxCount = 2 }, -- red crystal fragment + { id = 3738, chance = 3200 }, -- sling herb + { id = 677, chance = 3000, maxCount = 3 }, -- small enchanted emerald + { id = 236, chance = 15000 }, -- strong health potion + { id = 814, chance = 3200 }, -- terra amulet + { name = "fairy wings", chance = 15000 }, + { name = "wooden spellbook", chance = 3440 }, + { name = "leaf star", chance = 3440, maxCount = 7 }, + { id = 3727, chance = 4500 }, -- wood mushroom +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + -- bleed + { name = "condition", type = CONDITION_BLEEDING, interval = 3000, chance = 11, minDamage = -100, maxDamage = -300, radius = 6, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_DRAWBLOOD, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -60, maxDamage = -115, range = 7, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONAREA, target = true }, +} + +monster.defenses = { + defense = 35, + armor = 35, + mitigation = 1.24, + { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 0, maxDamage = 110, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 70 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 40 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/fey/dark_faun.lua b/data-canary/monster/fey/dark_faun.lua new file mode 100644 index 00000000000..cb87fafe89b --- /dev/null +++ b/data-canary/monster/fey/dark_faun.lua @@ -0,0 +1,136 @@ +local mType = Game.createMonsterType("Dark Faun") +local monster = {} + +monster.description = "a dark faun" +monster.experience = 900 +monster.outfit = { + lookType = 980, + lookHead = 94, + lookBody = 95, + lookLegs = 0, + lookFeet = 94, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1496 +monster.Bestiary = { + class = "Fey", + race = BESTY_RACE_FEY, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Feyrist (nighttime) and its underground (all day).", +} + +monster.health = 1100 +monster.maxHealth = 1100 +monster.race = "blood" +monster.corpse = 25814 +monster.speed = 108 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 20, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "This will be your last dance!", yell = false }, + { text = "This is a nightmare and you won't wake up!", yell = false }, + { text = "Blood, fight and rage!", yell = false }, + { text = "You're a threat to this realm! You have to die!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 30000, maxCount = 112 }, + { name = "wood cape", chance = 492 }, + { name = "wooden spellbook", chance = 92 }, + { name = "mandrake", chance = 50 }, + { name = "leaf legs", chance = 492 }, + { name = "small stone", chance = 492, maxCount = 4 }, + { name = "small enchanted sapphire", chance = 492, maxCount = 2 }, + { name = "shimmering beetles", chance = 492 }, + { name = "cave turnip", chance = 55000, maxCount = 4 }, + { name = "leaf legs", chance = 719 }, + { name = "dark mushroom", chance = 719 }, + { name = "panpipes", chance = 719 }, + { name = "prismatic quartz", chance = 719 }, + { name = "leaf star", chance = 10000, maxCount = 8 }, + { name = "strong health potion", chance = 6800, maxCount = 2 }, + { name = "goat grass", chance = 5155 }, + { name = "great health potion", chance = 591 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -515 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -115, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, + { name = "drunk", interval = 2000, chance = 11, length = 4, spread = 2, effect = CONST_ME_SOUND_PURPLE, target = false, duration = 25000 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_LEAFSTAR, target = false }, +} + +monster.defenses = { + defense = 50, + armor = 50, + mitigation = 1.21, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 85, maxDamage = 105, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 70 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 40 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/fey/dryad.lua b/data-canary/monster/fey/dryad.lua new file mode 100644 index 00000000000..d10db6a633f --- /dev/null +++ b/data-canary/monster/fey/dryad.lua @@ -0,0 +1,117 @@ +local mType = Game.createMonsterType("Dryad") +local monster = {} + +monster.description = "a dryad" +monster.experience = 190 +monster.outfit = { + lookType = 137, + lookHead = 99, + lookBody = 41, + lookLegs = 5, + lookFeet = 102, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 383 +monster.Bestiary = { + class = "Fey", + race = BESTY_RACE_FEY, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Dryads appear in forest areas of Edron, Port Hope, Carlin and Cormaya during raids in June. \z + There are 5 total waves, the initial one with the raid message and the rest every 15 minutes during next hour.", +} + +monster.health = 310 +monster.maxHealth = 310 +monster.race = "blood" +monster.corpse = 18042 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Feel the wrath of mother Tibia!", yell = false }, + { text = "Defiler of nature!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 40000, maxCount = 20 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, +} + +monster.defenses = { + defense = 10, + armor = 15, + mitigation = 1.26, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/fey/faun.lua b/data-canary/monster/fey/faun.lua new file mode 100644 index 00000000000..e0ee663ca07 --- /dev/null +++ b/data-canary/monster/fey/faun.lua @@ -0,0 +1,137 @@ +local mType = Game.createMonsterType("Faun") +local monster = {} + +monster.description = "a faun" +monster.experience = 800 +monster.outfit = { + lookType = 980, + lookHead = 61, + lookBody = 96, + lookLegs = 95, + lookFeet = 62, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1434 +monster.Bestiary = { + class = "Fey", + race = BESTY_RACE_FEY, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Feyrist (daytime).", +} + +monster.health = 900 +monster.maxHealth = 900 +monster.race = "blood" +monster.corpse = 25815 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 20, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "In vino veritas! Hahaha!", yell = false }, + { text = "Wine, women and song!", yell = false }, + { text = "Are you posing a threat to this realm? I suppose so.", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 30000, maxCount = 136 }, + { name = "goat grass", chance = 5155 }, + { name = "leaf star", chance = 10000, maxCount = 7 }, + { name = "grapes", chance = 30100, maxCount = 2 }, + { name = "small enchanted sapphire", chance = 492, maxCount = 2 }, + { name = "leaf legs", chance = 492 }, + { name = "dandelion seeds", chance = 5800 }, + { name = "shimmering beetles", chance = 492 }, + { name = "panpipes", chance = 172 }, + { name = "cookie", chance = 55000, maxCount = 5 }, + { name = "great health potion", chance = 6400, maxCount = 2 }, + { name = "wooden spellbook", chance = 92 }, + { name = "strong health potion", chance = 6800, maxCount = 2 }, + { name = "fresh fruit", chance = 3400, maxCount = 3 }, + { name = "rainbow quartz", chance = 1086, maxCount = 4 }, + { name = "small stone", chance = 492, maxCount = 3 }, + { name = "wood cape", chance = 492 }, + { id = 5792, chance = 80 }, -- die + { name = "mandrake", chance = 50 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -370 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -115, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, + { name = "drunk", interval = 2000, chance = 11, length = 4, spread = 2, effect = CONST_ME_SOUND_PURPLE, target = false, duration = 25000 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_LEAFSTAR, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 45, + mitigation = 1.10, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 75, maxDamage = 90, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 70 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/fey/nymph.lua b/data-canary/monster/fey/nymph.lua new file mode 100644 index 00000000000..91292e7624f --- /dev/null +++ b/data-canary/monster/fey/nymph.lua @@ -0,0 +1,136 @@ +local mType = Game.createMonsterType("Nymph") +local monster = {} + +monster.description = "a nymph" +monster.experience = 850 +monster.outfit = { + lookType = 989, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1485 +monster.Bestiary = { + class = "Fey", + race = BESTY_RACE_FEY, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Feyrist", +} + +monster.health = 900 +monster.maxHealth = 900 +monster.race = "blood" +monster.corpse = 25807 +monster.speed = 114 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 20, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Looking at a nymph can blind you. Be careful, mortal being!", yell = false }, + { text = "Are you one of those evil nightmare creatures? Leave this realm alone!", yell = false }, + { text = "Come here, sweetheart! I won't hurt you! *giggle*", yell = false }, + { text = "I'm just protecting nature's beauty!", yell = false }, +} + +monster.loot = { + { id = 3659, chance = 400 }, -- blue rose + { id = 3079, chance = 150 }, -- boots of haste + { id = 25695, chance = 12000 }, -- dandelion seeds + { id = 3010, chance = 1800 }, -- emerald bangle + { id = 9013, chance = 500 }, -- flower wreath + { id = 25691, chance = 15000, maxCount = 2 }, -- wild flowers + { id = 3031, chance = 65000, maxCount = 110 }, -- gold coin + { id = 238, chance = 3000 }, -- great mana potion + { id = 8045, chance = 650 }, -- hibiscus dress + { id = 9302, chance = 1000 }, -- sacred tree amulet + { id = 678, chance = 2000, maxCount = 2 }, -- small enchanted amethyst + { id = 9057, chance = 2500, maxCount = 2 }, -- small topaz + { id = 25696, chance = 12000 }, -- colourful snail shell + { id = 25700, chance = 720 }, -- dream blossom staff + { id = 25698, chance = 840 }, -- butterfly ring + { id = 25692, chance = 15000, maxCount = 2 }, -- fresh fruit + { id = 237, chance = 1000 }, -- strong mana potion +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -205 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -85, maxDamage = -135, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -85, maxDamage = -135, range = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_HEARTS, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -85, maxDamage = -135, range = 7, effect = CONST_ME_HEARTS, target = true }, +} + +monster.defenses = { + defense = 60, + armor = 60, + mitigation = 1.26, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 75, maxDamage = 90, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 60 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 40 }, + { type = COMBAT_DEATHDAMAGE, percent = 40 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/fey/pixie.lua b/data-canary/monster/fey/pixie.lua new file mode 100644 index 00000000000..73a5c4cbec1 --- /dev/null +++ b/data-canary/monster/fey/pixie.lua @@ -0,0 +1,137 @@ +local mType = Game.createMonsterType("Pixie") +local monster = {} + +monster.description = "a pixie" +monster.experience = 700 +monster.outfit = { + lookType = 982, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1438 +monster.Bestiary = { + class = "Fey", + race = BESTY_RACE_FEY, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Feyrist.", +} + +monster.health = 770 +monster.maxHealth = 770 +monster.race = "blood" +monster.corpse = 25811 +monster.speed = 120 +monster.manaCost = 450 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 20, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Glamour, glitter, glistering things! Do you have any of those?", yell = false }, + { text = "Sweet dreams!", yell = false }, + { text = "You might be a threat! I'm sorry but I can't allow you to linger here.", yell = false }, + { text = "Let's try a step or two!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 30000, maxCount = 90 }, + { name = "butterfly ring", chance = 492 }, + { name = "wooden spellbook", chance = 92 }, + { name = "dream blossom staff", chance = 92 }, + { id = 3046, chance = 492 }, -- magic light wand + { name = "green mushroom", chance = 492 }, + { name = "small enchanted amethyst", chance = 492, maxCount = 2 }, + { name = "small topaz", chance = 592, maxCount = 2 }, + { name = "rainbow quartz", chance = 719, maxCount = 3 }, + { name = "colourful snail shell", chance = 719 }, + { name = "star herb", chance = 719 }, + { name = "leaf star", chance = 10000, maxCount = 5 }, + { name = "red rose", chance = 30100 }, + { name = "strong mana potion", chance = 6800 }, + { name = "wild flowers", chance = 5155 }, + { name = "great mana potion", chance = 591 }, + { name = "dandelion seeds", chance = 5800 }, + { name = "fresh fruit", chance = 3400, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -85, maxDamage = -135, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "speed", interval = 2000, chance = 11, speedChange = -440, length = 4, spread = 2, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 7000 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -100, range = 4, shootEffect = CONST_ANI_LEAFSTAR, target = false }, + { name = "pixie skill reducer", interval = 2000, chance = 20, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 50, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 40, maxDamage = 75, effect = CONST_ME_MAGIC_GREEN, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 60 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 60 }, + { type = COMBAT_DEATHDAMAGE, percent = 30 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/fey/pooka.lua b/data-canary/monster/fey/pooka.lua new file mode 100644 index 00000000000..ad1f9dd94ef --- /dev/null +++ b/data-canary/monster/fey/pooka.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Pooka") +local monster = {} + +monster.description = "a pooka" +monster.experience = 500 +monster.outfit = { + lookType = 977, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1435 +monster.Bestiary = { + class = "Fey", + race = BESTY_RACE_FEY, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Feyrist (daytime).", +} + +monster.health = 500 +monster.maxHealth = 500 +monster.race = "blood" +monster.corpse = 25823 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 20, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "This was the initial trick, but the second follows quick!", yell = false }, + { text = "Hoppel-di-hopp!", yell = false }, + { text = "Jinx!", yell = false }, +} + +monster.loot = { + { name = "carrot on a stick", chance = 20 }, + { name = "dream blossom staff", chance = 20 }, + { name = "small stone", chance = 200, maxCount = 5 }, + { name = "gold coin", chance = 30000, maxCount = 100 }, + { id = 3049, chance = 492 }, -- stealth ring + { id = 3595, chance = 55000, maxCount = 3 }, -- carrot + { name = "strong health potion", chance = 719 }, + { name = "orange mushroom", chance = 10000 }, + { name = "fern", chance = 30100 }, + { name = "opal", chance = 5155 }, + { name = "shimmering beetles", chance = 591 }, + { name = "rainbow quartz", chance = 5800 }, + { name = "small enchanted ruby", chance = 3400, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -50, range = 4, shootEffect = CONST_ANI_SMALLSTONE, effect = CONST_ME_STONES, target = true }, + { name = "drunk", interval = 2000, chance = 11, length = 4, spread = 2, effect = CONST_ME_STUN, target = false, duration = 5000 }, +} + +monster.defenses = { + defense = 38, + armor = 38, + mitigation = 0.99, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_GREEN, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 70 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/fey/swan_maiden.lua b/data-canary/monster/fey/swan_maiden.lua new file mode 100644 index 00000000000..070c31aae70 --- /dev/null +++ b/data-canary/monster/fey/swan_maiden.lua @@ -0,0 +1,137 @@ +local mType = Game.createMonsterType("Swan Maiden") +local monster = {} + +monster.description = "a swan maiden" +monster.experience = 700 +monster.outfit = { + lookType = 138, + lookHead = 0, + lookBody = 0, + lookLegs = 114, + lookFeet = 78, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1437 +monster.Bestiary = { + class = "Fey", + race = BESTY_RACE_FEY, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "Feyrist Meadows", +} + +monster.health = 800 +monster.maxHealth = 800 +monster.race = "blood" +monster.corpse = 25831 +monster.speed = 117 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 20, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Nightmarish monster! This dream is not meant for you!", yell = false }, + { text = "You won't steal my robe! Back off!", yell = false }, + { text = "You are not allowed to lay eyes on me in this shape!", yell = false }, + { text = "Are you stalking me? You will bitterly regret this!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 30000, maxCount = 112 }, + { name = "small enchanted emerald", chance = 492, maxCount = 2 }, + { name = "green mushroom", chance = 492, maxCount = 2 }, + { name = "white pearl", chance = 492, maxCount = 2 }, + { name = "opal", chance = 492, maxCount = 2 }, + { name = "strong mana potion", chance = 6800 }, + { name = "clerical mace", chance = 5155 }, + { name = "great mana potion", chance = 591 }, + { name = "colourful snail shell", chance = 5800 }, + { name = "diamond sceptre", chance = 3400 }, + { name = "coral brooch", chance = 3400 }, + { name = "flower wreath", chance = 3400 }, + { name = "powder herb", chance = 3400 }, + { name = "silver brooch", chance = 3400 }, + { name = "summer dress", chance = 3400 }, + { name = "wild flowers", chance = 3400 }, + { name = "boots of haste", chance = 50 }, + { name = "butterfly ring", chance = 100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -215 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -60, maxDamage = -115, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "combat", interval = 2000, chance = 11, type = COMBAT_MANADRAIN, minDamage = -82, maxDamage = -215, range = 7, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYAREA, target = true }, + { name = "speed", interval = 2000, chance = 11, speedChange = -450, radius = 6, effect = CONST_ME_PIXIE_EXPLOSION, target = false, duration = 5000 }, +} + +monster.defenses = { + defense = 54, + armor = 54, + mitigation = 1.18, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 85, maxDamage = 105, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 30 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/fey/tainted_soul.lua b/data-canary/monster/fey/tainted_soul.lua new file mode 100644 index 00000000000..47ffe59f267 --- /dev/null +++ b/data-canary/monster/fey/tainted_soul.lua @@ -0,0 +1,116 @@ +local mType = Game.createMonsterType("Tainted Soul") +local monster = {} + +monster.description = "a tainted soul" +monster.experience = 0 +monster.outfit = { + lookType = 712, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1137 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_FEY, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Tainted Caves in the Green Claw Swamp.", +} + +monster.health = 250 +monster.maxHealth = 250 +monster.race = "undead" +monster.corpse = 21977 +monster.speed = 85 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 60000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 15, + targetDistance = 7, + runHealth = 115, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "*Crinkle*", yell = false }, + { text = "*Sizzle*", yell = false }, +} + +monster.loot = { + { name = "small ruby", chance = 1000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -37, range = 1, effect = CONST_ME_MAGIC_RED, target = true }, +} + +monster.defenses = { + defense = 10, + armor = 10, + mitigation = 0.46, + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 15, maxDamage = 25, effect = CONST_ME_MAGIC_GREEN, target = false }, + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 50 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/fey/twisted_pooka.lua b/data-canary/monster/fey/twisted_pooka.lua new file mode 100644 index 00000000000..f240f08ecbe --- /dev/null +++ b/data-canary/monster/fey/twisted_pooka.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Twisted Pooka") +local monster = {} + +monster.description = "a twisted pooka" +monster.experience = 600 +monster.outfit = { + lookType = 978, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1436 +monster.Bestiary = { + class = "Fey", + race = BESTY_RACE_FEY, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Feyrist (nighttime) and its underground (all day).", +} + +monster.health = 700 +monster.maxHealth = 700 +monster.race = "blood" +monster.corpse = 25827 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 20, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "*sniff sniff* Mhmmm ... mortal flesh.", yell = false }, + { text = "Hoppel-di-hopp!", yell = false }, + { text = "I'll gnaw away your toes!", yell = false }, +} + +monster.loot = { + { name = "carrot on a stick", chance = 20 }, + { name = "small stone", chance = 200, maxCount = 5 }, + { name = "gold coin", chance = 30000, maxCount = 100 }, + { id = 3049, chance = 492 }, -- stealth ring + { id = 3595, chance = 55000, maxCount = 3 }, -- carrot + { name = "strong health potion", chance = 719 }, + { name = "orange mushroom", chance = 10000 }, + { name = "fairy wings", chance = 30100 }, + { name = "orange mushroom", chance = 5155 }, + { name = "shimmering beetles", chance = 591 }, + { name = "prismatic quartz", chance = 2500 }, + { name = "crystal of focus", chance = 60 }, + { name = "small enchanted ruby", chance = 3400, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -50, range = 4, shootEffect = CONST_ANI_SMALLSTONE, effect = CONST_ME_STONES, target = true }, + -- earth damage + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -50, maxDamage = -100, range = 3, effect = CONST_ME_POISONAREA, target = true }, + { name = "drunk", interval = 2000, chance = 11, length = 4, spread = 2, effect = CONST_ME_STUN, target = false, duration = 5000 }, +} + +monster.defenses = { + defense = 38, + armor = 41, + mitigation = 1.04, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_GREEN, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = -20 }, + { type = COMBAT_DEATHDAMAGE, percent = 30 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/fey/wisp.lua b/data-canary/monster/fey/wisp.lua new file mode 100644 index 00000000000..ce4854a864b --- /dev/null +++ b/data-canary/monster/fey/wisp.lua @@ -0,0 +1,119 @@ +local mType = Game.createMonsterType("Wisp") +local monster = {} + +monster.description = "a wisp" +monster.experience = 0 +monster.outfit = { + lookType = 294, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 462 +monster.Bestiary = { + class = "Fey", + race = BESTY_RACE_FEY, + toKill = 250, + FirstUnlock = 10, + SecondUnlock = 100, + CharmsPoints = 5, + Stars = 1, + Occurrence = 0, + Locations = "All around Tiquanda and Feyrist. Several groups of Wisps can be found in and around \z + the forests north of Edron. West of Hardek. Inside the Cyclops Camp. North of the triple \z + Wyvern spawn outside Kazordoon. West of Ab'Dendriel. West of Venore Amazon Camp. \z + A few spawns around Venore, 2 spawn on the Formorgar Glacier, and on Krimhorn.", +} + +monster.health = 115 +monster.maxHealth = 115 +monster.race = "undead" +monster.corpse = 6323 +monster.speed = 81 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 60000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 15, + targetDistance = 7, + runHealth = 115, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 4, + color = 204, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Crackle!", yell = false }, + { text = "Tsshh", yell = false }, +} + +monster.loot = { + { name = "moon backpack", chance = 220 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -3, maxDamage = -7, range = 1, effect = CONST_ME_MAGIC_RED, target = true }, +} + +monster.defenses = { + defense = 10, + armor = 7, + mitigation = 0.43, + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 15, maxDamage = 25, effect = CONST_ME_MAGIC_GREEN, target = false }, + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 60 }, + { type = COMBAT_ENERGYDAMAGE, percent = 40 }, + { type = COMBAT_EARTHDAMAGE, percent = 90 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/giants/beast_hulking_prehemoth.lua b/data-canary/monster/giants/beast_hulking_prehemoth.lua new file mode 100644 index 00000000000..3e0b9093791 --- /dev/null +++ b/data-canary/monster/giants/beast_hulking_prehemoth.lua @@ -0,0 +1,94 @@ +local mType = Game.createMonsterType("Beast Hulking Prehemoth") +local monster = {} + +monster.description = "a beast hulking prehemoth" +monster.experience = 0 +monster.outfit = { + lookType = 1553, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.health = 20700 +monster.maxHealth = 20700 +monster.race = "blood" +monster.corpse = 0 +monster.speed = 200 +monster.manaCost = 0 +monster.maxSummons = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "The Moon Goddess is ashamed of you!", yell = false }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -455 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 300, maxDamage = -400, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, +} + +monster.defenses = { + defense = 84, + armor = 84, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = -5 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = -20 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/giants/behemoth.lua b/data-canary/monster/giants/behemoth.lua index 8a6abbdc02f..f4fd8e1f6e5 100644 --- a/data-canary/monster/giants/behemoth.lua +++ b/data-canary/monster/giants/behemoth.lua @@ -73,37 +73,36 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, + { text = "Crush the intruders!", yell = false }, { text = "You're so little!", yell = false }, { text = "Human flesh - delicious!", yell = false }, - { text = "Crush the intruders!", yell = false }, } monster.loot = { { id = 2893, chance = 100 }, -- amphora - { id = 3008, chance = 2530 }, -- crystal necklace - { id = 3031, chance = 595300, maxCount = 100 }, -- gold coin - { id = 3031, chance = 40000, maxCount = 99 }, -- gold coin - { id = 3033, chance = 6380, maxCount = 5 }, -- small amethyst - { id = 3035, chance = 59800, maxCount = 5 }, -- platinum coin - { id = 3058, chance = 750 }, -- strange symbol + { name = "crystal necklace", chance = 2530 }, + { name = "gold coin", chance = 100000, maxCount = 200 }, + { name = "small amethyst", chance = 6380, maxCount = 5 }, + { name = "platinum coin", chance = 59800, maxCount = 5 }, + { name = "strange symbol", chance = 750 }, { id = 3116, chance = 670 }, -- big bone - { id = 3265, chance = 5980 }, -- two handed sword - { id = 3275, chance = 10510 }, -- double axe - { id = 3281, chance = 1006 }, -- giant sword - { id = 3304, chance = 100 }, -- crowbar - { id = 3342, chance = 50 }, -- war axe - { id = 3357, chance = 3930 }, -- plate armor - { id = 3383, chance = 4370 }, -- dark armor + { name = "two handed sword", chance = 5980 }, + { name = "double axe", chance = 10510 }, + { name = "giant sword", chance = 1006 }, + { name = "crowbar", chance = 100 }, + { name = "war axe", chance = 50 }, + { name = "plate armor", chance = 3930 }, + { name = "dark armor", chance = 4370 }, { id = 3456, chance = 650 }, -- pick - { id = 3554, chance = 380 }, -- steel boots - { id = 3577, chance = 30000, maxCount = 6 }, -- meat - { id = 5893, chance = 1090 }, -- perfect behemoth fang - { id = 5930, chance = 430 }, -- behemoth claw - { id = 7368, chance = 9750, maxCount = 5 }, -- assassin star + { name = "steel boots", chance = 380 }, + { name = "meat", chance = 30000, maxCount = 6 }, + { name = "perfect behemoth fang", chance = 1090 }, + { name = "behemoth claw", chance = 860 }, + { name = "assassin star", chance = 9750, maxCount = 5 }, { id = 7396, chance = 170 }, -- behemoth trophy - { id = 7413, chance = 90 }, -- titan axe - { id = 239, chance = 5120 }, -- great health potion - { id = 11447, chance = 14000 }, -- battle stone + { name = "titan axe", chance = 90 }, + { name = "great health potion", chance = 5120 }, + { name = "battle stone", chance = 14000 }, } monster.attacks = { @@ -113,7 +112,8 @@ monster.attacks = { monster.defenses = { defense = 45, - armor = 45, + armor = 50, + mitigation = 1.74, { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } diff --git a/data-canary/monster/giants/cyclops.lua b/data-canary/monster/giants/cyclops.lua index 2e6bb9940e6..811c1897400 100644 --- a/data-canary/monster/giants/cyclops.lua +++ b/data-canary/monster/giants/cyclops.lua @@ -23,9 +23,8 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Ab'Dendriel Underground, Cyclopolis, Femor Hills, Kazordoon Prison, Kazordoon Surroundings, \z - Maze of the Lost Souls, Mistrock, Mount Sternum, Outlaw Camp, Plains of Havoc, Shadowthorn, \z - Thais Northern Dungeon, Thais Surroundings, Thais Underground, Ulderek's Rock, Yalahar Foreigner Quarter.", + Locations = "Plains of Havoc, Mount Sternum, Femor Hills, Cyclops Camp, Cyclopolis, Ancient Temple, Shadowthorn, \z + Orc Fort, Mistrock, Foreigner Quarter, Outlaw Camp and in the Cyclops version of the Forsaken Mine. ", } monster.health = 260 @@ -73,11 +72,11 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, - { text = "Il lorstok human!", yell = false }, - { text = "Toks utat.", yell = false }, { text = "Human, uh whil dyh!", yell = false }, { text = "Youh ah trak!", yell = false }, { text = "Let da mashing begin!", yell = false }, + { text = "Toks utat.", yell = false }, + { text = "Il lorstok human!", yell = false }, } monster.loot = { @@ -102,7 +101,8 @@ monster.attacks = { monster.defenses = { defense = 20, - armor = 20, + armor = 17, + mitigation = 0.62, } monster.elements = { diff --git a/data-canary/monster/giants/cyclops_drone.lua b/data-canary/monster/giants/cyclops_drone.lua index 5ce3edbedb3..229d97faa10 100644 --- a/data-canary/monster/giants/cyclops_drone.lua +++ b/data-canary/monster/giants/cyclops_drone.lua @@ -44,13 +44,13 @@ monster.strategiesTarget = { } monster.flags = { - summonable = true, + summonable = false, attackable = true, hostile = true, convinceable = true, pushable = false, rewardBoss = false, - illusionable = false, + illusionable = true, canPushItems = true, canPushCreatures = true, staticAttackChance = 95, @@ -78,17 +78,17 @@ monster.voices = { } monster.loot = { - { id = 3031, chance = 82000, maxCount = 30 }, -- gold coin + { name = "gold coin", chance = 82000, maxCount = 30 }, { id = 3093, chance = 90 }, -- club ring - { id = 3269, chance = 680 }, -- halberd - { id = 3294, chance = 8000 }, -- short sword - { id = 3384, chance = 190 }, -- dark helmet - { id = 3410, chance = 2000 }, -- plate shield - { id = 3413, chance = 1600 }, -- battle shield - { id = 3577, chance = 50430, maxCount = 2 }, -- meat + { name = "halberd", chance = 680 }, + { name = "short sword", chance = 8000 }, + { name = "dark helmet", chance = 190 }, + { name = "plate shield", chance = 2000 }, + { name = "battle shield", chance = 1600 }, + { name = "meat", chance = 50430, maxCount = 2 }, { id = 7398, chance = 120 }, -- cyclops trophy - { id = 236, chance = 520 }, -- strong health potion - { id = 9657, chance = 6750 }, -- cyclops toe + { name = "strong health potion", chance = 520 }, + { name = "cyclops toe", chance = 6750 }, } monster.attacks = { @@ -98,7 +98,8 @@ monster.attacks = { monster.defenses = { defense = 20, - armor = 20, + armor = 25, + mitigation = 0.72, } monster.elements = { @@ -110,7 +111,7 @@ monster.elements = { { type = COMBAT_MANADRAIN, percent = 0 }, { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 20 }, - { type = COMBAT_HOLYDAMAGE, percent = 1 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, { type = COMBAT_DEATHDAMAGE, percent = -5 }, } diff --git a/data-canary/monster/giants/cyclops_smith.lua b/data-canary/monster/giants/cyclops_smith.lua index 6b0161ce5ce..51c5d57aee1 100644 --- a/data-canary/monster/giants/cyclops_smith.lua +++ b/data-canary/monster/giants/cyclops_smith.lua @@ -45,13 +45,13 @@ monster.strategiesTarget = { } monster.flags = { - summonable = true, + summonable = false, attackable = true, hostile = true, convinceable = true, pushable = false, rewardBoss = false, - illusionable = false, + illusionable = true, canPushItems = true, canPushCreatures = true, staticAttackChance = 95, @@ -78,20 +78,20 @@ monster.voices = { } monster.loot = { - { id = 3031, chance = 82920, maxCount = 70 }, -- gold coin + { name = "gold coin", chance = 82920, maxCount = 70 }, { id = 3093, chance = 90 }, -- club ring - { id = 3266, chance = 5450 }, -- battle axe - { id = 3275, chance = 880 }, -- double axe - { id = 3305, chance = 5200 }, -- battle hammer - { id = 3330, chance = 2000 }, -- heavy machete - { id = 3384, chance = 200 }, -- dark helmet - { id = 3410, chance = 2000 }, -- plate shield - { id = 3413, chance = 6190 }, -- battle shield - { id = 3577, chance = 49950 }, -- meat + { name = "battle axe", chance = 5450 }, + { name = "double axe", chance = 880 }, + { name = "battle hammer", chance = 5200 }, + { name = "heavy machete", chance = 2000 }, + { name = "dark helmet", chance = 200 }, + { name = "plate shield", chance = 2000 }, + { name = "battle shield", chance = 6190 }, + { name = "meat", chance = 49950 }, { id = 7398, chance = 140 }, -- cyclops trophy - { id = 7452, chance = 150 }, -- spiked squelcher - { id = 236, chance = 390 }, -- strong health potion - { id = 9657, chance = 10280 }, -- cyclops toe + { name = "spiked squelcher", chance = 150 }, + { name = "strong health potion", chance = 390 }, + { name = "cyclops toe", chance = 10280 }, } monster.attacks = { @@ -102,7 +102,8 @@ monster.attacks = { monster.defenses = { defense = 25, - armor = 25, + armor = 28, + mitigation = 0.96, } monster.elements = { @@ -114,7 +115,7 @@ monster.elements = { { type = COMBAT_MANADRAIN, percent = 0 }, { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, - { type = COMBAT_HOLYDAMAGE, percent = 1 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, { type = COMBAT_DEATHDAMAGE, percent = -5 }, } diff --git a/data-canary/monster/giants/frost_giant.lua b/data-canary/monster/giants/frost_giant.lua new file mode 100644 index 00000000000..689787a4901 --- /dev/null +++ b/data-canary/monster/giants/frost_giant.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Frost Giant") +local monster = {} + +monster.description = "a frost giant" +monster.experience = 150 +monster.outfit = { + lookType = 257, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 324 +monster.Bestiary = { + class = "Giant", + race = BESTY_RACE_GIANT, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Tyrsung (in the Jotunar mountain), Formorgar Glacier (single spawn), \z + Mammoth Shearing Factory, Chyllfroest.", +} + +monster.health = 270 +monster.maxHealth = 270 +monster.race = "blood" +monster.corpse = 7330 +monster.speed = 95 +monster.manaCost = 490 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hmm Humansoup!", yell = false }, + { text = "Stand still ya tasy snack!", yell = false }, + { text = "Joh Thun!", yell = false }, + { text = "Hörre Sjan Flan!", yell = false }, + { text = "Bröre Smöde!", yell = false }, + { text = "Forle Bramma", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 82000, maxCount = 40 }, + { id = 3093, chance = 130 }, -- club ring + { name = "halberd", chance = 560 }, + { name = "short sword", chance = 8140 }, + { name = "dark helmet", chance = 180 }, + { name = "battle shield", chance = 1350 }, + { name = "meat", chance = 4970, maxCount = 2 }, + { name = "shard", chance = 60 }, + { id = 7441, chance = 2180 }, -- ice cube + { name = "norse shield", chance = 250 }, + { name = "health potion", chance = 819 }, + { name = "frost giant pelt", chance = 5000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -90, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 22, + mitigation = 0.46, + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/giants/frost_giantess.lua b/data-canary/monster/giants/frost_giantess.lua new file mode 100644 index 00000000000..ab49c3f13d9 --- /dev/null +++ b/data-canary/monster/giants/frost_giantess.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Frost Giantess") +local monster = {} + +monster.description = "a frost giantess" +monster.experience = 150 +monster.outfit = { + lookType = 265, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 334 +monster.Bestiary = { + class = "Giant", + race = BESTY_RACE_GIANT, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Tyrsung (in the Jotunar mountain), Formorgar Glacier (single spawn), \z + Mammoth Shearing Factory, Chyllfroest.", +} + +monster.health = 275 +monster.maxHealth = 275 +monster.race = "blood" +monster.corpse = 7330 +monster.speed = 97 +monster.manaCost = 490 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 60, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Ymirs Mjalle!", yell = false }, + { text = "No run so much, must stay fat!", yell = false }, + { text = "H�rre Sjan Flan!", yell = false }, + { text = "Damned fast food.", yell = false }, + { text = "Come kiss the cook!", yell = false }, +} + +monster.loot = { + { name = "small stone", chance = 10360, maxCount = 3 }, + { name = "gold coin", chance = 80000, maxCount = 40 }, + { id = 3093, chance = 70 }, -- club ring + { name = "short sword", chance = 7960 }, + { name = "dark helmet", chance = 170 }, + { name = "battle shield", chance = 1490 }, + { name = "ham", chance = 20990, maxCount = 2 }, + { name = "shard", chance = 100 }, + { id = 7441, chance = 2008 }, -- ice cube + { name = "norse shield", chance = 320 }, + { name = "mana potion", chance = 950 }, + { name = "frost giant pelt", chance = 4800 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -90, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 15, + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -3 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/giants/hulking_prehemoth.lua b/data-canary/monster/giants/hulking_prehemoth.lua new file mode 100644 index 00000000000..aa9ed9b1774 --- /dev/null +++ b/data-canary/monster/giants/hulking_prehemoth.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Hulking Prehemoth") +local monster = {} + +monster.description = "a hulking prehemoth" +monster.experience = 12690 +monster.outfit = { + lookType = 1553, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2271 +monster.Bestiary = { + class = "Giant", + race = BESTY_RACE_GIANT, + toKill = 5000, + FirstUnlock = 200, + SecondUnlock = 2000, + CharmsPoints = 100, + Stars = 5, + Occurrence = 0, + Locations = "Sparkling Pools", +} + +monster.health = 20700 +monster.maxHealth = 20700 +monster.race = "blood" +monster.corpse = 39303 +monster.speed = 191 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "SMAASH!", yell = true }, +} + +monster.loot = { + { name = "Crystal Coin", chance = 28240 }, + { name = "Prehemoth Horns", chance = 19870 }, + { name = "Prehemoth Claw", chance = 16149, minCount = 1, maxCount = 2 }, + { name = "Ultimate Health Potion", chance = 16120 }, + { name = "Furry Club", chance = 7050 }, + { name = "War Hammer", chance = 4660 }, + { name = "War Axe", chance = 3040 }, + { name = "Doublet", chance = 2880 }, + { name = "Silver Brooch", chance = 1160 }, + { name = "Emerald Bangle", chance = 780 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1250 }, + { name = "combat", interval = 3500, chance = 38, type = COMBAT_PHYSICALDAMAGE, minDamage = -850, maxDamage = -1700, range = 4, shootEffect = CONST_ANI_LARGEROCK, target = true }, + { name = "combat", interval = 4100, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -1200, radius = 5, effect = CONST_ME_EXPLOSIONAREA, target = false }, +} + +monster.defenses = { + defense = 84, + armor = 84, + mitigation = 2.51, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 40 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -30 }, + { type = COMBAT_HOLYDAMAGE, percent = -30 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) + +RegisterPrimalPackBeast(monster) diff --git a/data-canary/monster/giants/ogre_brute.lua b/data-canary/monster/giants/ogre_brute.lua new file mode 100644 index 00000000000..10f479ce379 --- /dev/null +++ b/data-canary/monster/giants/ogre_brute.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Ogre Brute") +local monster = {} + +monster.description = "an ogre brute" +monster.experience = 800 +monster.outfit = { + lookType = 857, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1161 +monster.Bestiary = { + class = "Giant", + race = BESTY_RACE_GIANT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Krailos Steppe.", +} + +monster.health = 1000 +monster.maxHealth = 1000 +monster.race = "blood" +monster.corpse = 22143 +monster.speed = 102 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You so juicy!", yell = false }, + { text = "Smash you face in!!!", yell = false }, + { text = "You stop! You lunch!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 92000, maxCount = 130 }, -- gold coin + { id = 3577, chance = 6200 }, -- meat + { id = 3030, chance = 4200 }, -- small ruby + { id = 3026, chance = 6200, maxCount = 3 }, -- white pearl + { id = 11447, chance = 6200 }, -- battle stone + { id = 3598, chance = 6200, maxCount = 7 }, -- cookie + { id = 22188, chance = 5200 }, -- ogre ear stud + { id = 22189, chance = 1200 }, -- ogre nose ring + { id = 22193, chance = 3200, maxCount = 2 }, -- onyx chip + { id = 22194, chance = 3200, maxCount = 3 }, -- opal + { id = 3050, chance = 2200 }, -- power ring + { id = 22191, chance = 1200 }, -- skull fetish + { id = 236, chance = 6200, maxCount = 3 }, -- strong health potion + { id = 7428, chance = 500 }, -- bonebreaker + { id = 22171, chance = 800 }, -- ogre klubba + { id = 3465, chance = 500 }, -- pot + { name = "rusted helmet", chance = 220 }, + { id = 22192, chance = 300 }, -- shamanic mask +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -269, condition = { type = CONDITION_FIRE, totalDamage = 6, interval = 9000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, target = false }, + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_TELEPORT, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 41, + mitigation = 1.18, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/giants/ogre_rowdy.lua b/data-canary/monster/giants/ogre_rowdy.lua new file mode 100644 index 00000000000..70b45bedd2e --- /dev/null +++ b/data-canary/monster/giants/ogre_rowdy.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Ogre Rowdy") +local monster = {} + +monster.description = "an ogre rowdy" +monster.experience = 4200 +monster.outfit = { + lookType = 1213, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1821 +monster.Bestiary = { + class = "Giant", + race = BESTY_RACE_GIANT, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Green Belt, Kilmaresh Mountains underground.", +} + +monster.health = 4500 +monster.maxHealth = 4500 +monster.race = "blood" +monster.corpse = 31531 +monster.speed = 210 +monster.manaCost = 0 + +monster.faction = FACTION_ANUMA +monster.enemyFactions = { FACTION_PLAYER, FACTION_FAFNAR } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 3 }, + { name = "flaming arrow", chance = 22040, maxCount = 19 }, + { name = "ogre ear stud", chance = 12900 }, + { name = "ogre nose ring", chance = 20970 }, + { name = "skull fetish", chance = 12900 }, + { name = "wand of inferno", chance = 8600 }, + { name = "jalapeno pepper", chance = 3760, maxCount = 3 }, + { name = "wand of draconia", chance = 2150 }, + { name = "wand of everblazing", chance = 1080 }, + { name = "ogre choppa", chance = 540 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -400, range = 5, radius = 4, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONHIT, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -450, radius = 3, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 2000, chance = 18, type = COMBAT_FIREDAMAGE, minDamage = -280, maxDamage = -420, range = 3, shootEffect = CONST_ANI_FLAMMINGARROW, target = true }, +} + +monster.defenses = { + defense = 98, + armor = 98, + mitigation = 2.63, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -30 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/giants/ogre_ruffian.lua b/data-canary/monster/giants/ogre_ruffian.lua new file mode 100644 index 00000000000..aa561883463 --- /dev/null +++ b/data-canary/monster/giants/ogre_ruffian.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Ogre Ruffian") +local monster = {} + +monster.description = "an ogre ruffian" +monster.experience = 5000 +monster.outfit = { + lookType = 1212, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1820 +monster.Bestiary = { + class = "Giant", + race = BESTY_RACE_GIANT, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Green Belt, Kilmaresh Mountains underground.", +} + +monster.health = 5500 +monster.maxHealth = 5500 +monster.race = "blood" +monster.corpse = 31527 +monster.speed = 215 +monster.manaCost = 0 + +monster.faction = FACTION_ANUMA +monster.enemyFactions = { FACTION_PLAYER, FACTION_FAFNAR } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 3 }, + { name = "ogre ear stud", chance = 17270 }, + { name = "ogre nose ring", chance = 15830 }, + { name = "pair of iron fists", chance = 2160 }, + { name = "meat", chance = 8630, maxCount = 5 }, + { name = "diamond sceptre", chance = 5760 }, + { name = "war hammer", chance = 2160 }, + { name = "metal spats", chance = 1440 }, + { name = "skull fetish", chance = 1440 }, + { name = "stone skin amulet", chance = 4320 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -450, radius = 5, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -350, range = 4, radius = 5, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_POFF, target = true }, +} + +monster.defenses = { + defense = 102, + armor = 102, + mitigation = 2.72, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 50 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/giants/ogre_sage.lua b/data-canary/monster/giants/ogre_sage.lua new file mode 100644 index 00000000000..5f619a75ce7 --- /dev/null +++ b/data-canary/monster/giants/ogre_sage.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Ogre Sage") +local monster = {} + +monster.description = "an ogre sage" +monster.experience = 5500 +monster.outfit = { + lookType = 1214, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1822 +monster.Bestiary = { + class = "Giant", + race = BESTY_RACE_GIANT, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Green Belt, Kilmaresh Mountains underground.", +} + +monster.health = 4800 +monster.maxHealth = 4800 +monster.race = "blood" +monster.corpse = 31535 +monster.speed = 230 +monster.manaCost = 0 + +monster.faction = FACTION_ANUMA +monster.enemyFactions = { FACTION_PLAYER, FACTION_FAFNAR } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 1, + summons = { + { name = "Young Goanna", chance = 10, interval = 2000, count = 1 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 3 }, + { name = "ogre ear stud", chance = 7950 }, + { name = "ogre nose ring", chance = 15830 }, + { name = "shamanic talisman", chance = 10230 }, + { name = "broken shamanic staff", chance = 12500 }, + { name = "skull fetish", chance = 9090 }, + { name = "terra boots", chance = 4550 }, + { name = "bone fetish", chance = 2270 }, + { name = "sacred tree amulet", chance = 1140 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 2000, chance = 24, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -130, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = true }, + { name = "combat", interval = 2000, chance = 16, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -165, range = 4, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -115, maxDamage = -200, range = 7, radius = 3, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -300, range = 7, radius = 4, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_HITBYPOISON, target = true }, +} + +monster.defenses = { + defense = 93, + armor = 93, + mitigation = 2.51, + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -30 }, + { type = COMBAT_EARTHDAMAGE, percent = 25 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/giants/ogre_savage.lua b/data-canary/monster/giants/ogre_savage.lua new file mode 100644 index 00000000000..5adfbc48728 --- /dev/null +++ b/data-canary/monster/giants/ogre_savage.lua @@ -0,0 +1,131 @@ +local mType = Game.createMonsterType("Ogre Savage") +local monster = {} + +monster.description = "an ogre savage" +monster.experience = 950 +monster.outfit = { + lookType = 858, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1162 +monster.Bestiary = { + class = "Giant", + race = BESTY_RACE_GIANT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Krailos Steppe.", +} + +monster.health = 1400 +monster.maxHealth = 1400 +monster.race = "blood" +monster.corpse = 22147 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You tasty!", yell = false }, + { text = "Must! Chop! Food! Raahh!", yell = false }, + { text = "UGGA UGGA!!", yell = true }, +} + +monster.loot = { + { id = 3031, chance = 92000, maxCount = 130 }, -- gold coin + { id = 22193, chance = 3200, maxCount = 2 }, -- onyx chip + { id = 22194, chance = 3200, maxCount = 3 }, -- opal + { id = 3598, chance = 2200, maxCount = 7 }, -- cookie + { id = 8016, chance = 1200, maxCount = 2 }, -- jalapeno pepper + { id = 9057, chance = 1200, maxCount = 2 }, -- small topaz + { id = 3030, chance = 1200, maxCount = 2 }, -- small ruby + { id = 7439, chance = 1200 }, -- berserk potion + { id = 3078, chance = 2200 }, -- mysterious fetish + { id = 22188, chance = 1200 }, -- ogre ear stud + { id = 22189, chance = 1200 }, -- ogre nose ring + { id = 22191, chance = 1200 }, -- skull fetish + { id = 236, chance = 2200, maxCount = 3 }, -- strong health potion + { id = 3279, chance = 600 }, -- war hammer + { id = 22192, chance = 300 }, -- shamanic mask +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -269, condition = { type = CONDITION_FIRE, totalDamage = 6, interval = 9000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 32, + mitigation = 1.18, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/giants/ogre_shaman.lua b/data-canary/monster/giants/ogre_shaman.lua new file mode 100644 index 00000000000..6e3dd2c2586 --- /dev/null +++ b/data-canary/monster/giants/ogre_shaman.lua @@ -0,0 +1,147 @@ +local mType = Game.createMonsterType("Ogre Shaman") +local monster = {} + +monster.description = "an ogre shaman" +monster.experience = 625 +monster.outfit = { + lookType = 859, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1163 +monster.Bestiary = { + class = "Giant", + race = BESTY_RACE_GIANT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Krailos Steppe.", +} + +monster.health = 800 +monster.maxHealth = 800 +monster.race = "blood" +monster.corpse = 22139 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "Dworc Fleshhunter", chance = 30, interval = 1000, count = 1 }, + { name = "Terror Bird", chance = 30, interval = 1000, count = 1 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Stay here, soul food!", yell = false }, + { text = "You more delicate than clomp!", yell = false }, + { text = "The spirits hunger!", yell = false }, + { text = "A sacrifice for Great Hunger!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 92000, maxCount = 130 }, -- gold coin + { id = 22194, chance = 1200, maxCount = 3 }, -- opal + { id = 22185, chance = 6200, maxCount = 2 }, -- prickly pear + { id = 3030, chance = 2200, maxCount = 2 }, -- small ruby + { id = 3027, chance = 1200, maxCount = 2 }, -- black pearl + { id = 17831, chance = 3200 }, -- bone fetish + { id = 11452, chance = 1200 }, -- broken shamanic staff + { id = 3069, chance = 800 }, -- necrotic rod + { id = 22188, chance = 3200 }, -- ogre ear stud + { id = 22189, chance = 2200 }, -- ogre nose ring + { id = 22184, chance = 1200 }, -- shamanic talisman + { id = 3114, chance = 1200 }, -- skull + { id = 22191, chance = 1200 }, -- skull fetish + { id = 237, chance = 1000, maxCount = 3 }, -- strong mana potion + { id = 3072, chance = 600 }, -- wand of decay + { id = 2901, chance = 500 }, -- waterskin + { id = 22183, chance = 300 }, -- ogre scepta + { id = 22192, chance = 300 }, -- shamanic mask + { id = 3002, chance = 100 }, -- voodoo doll + { id = 2965, chance = 100, maxCount = 2 }, -- didgeridoo +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -269, condition = { type = CONDITION_FIRE, totalDamage = 6, interval = 9000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, target = false }, + { name = "outfit", interval = 2000, chance = 8, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitMonster = "chicken" }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -15, maxDamage = -120, length = 8, spread = 0, effect = CONST_ME_CARNIPHILA, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 30, + mitigation = 1.04, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/giants/orclops_doomhauler.lua b/data-canary/monster/giants/orclops_doomhauler.lua new file mode 100644 index 00000000000..b963069abc0 --- /dev/null +++ b/data-canary/monster/giants/orclops_doomhauler.lua @@ -0,0 +1,138 @@ +local mType = Game.createMonsterType("Orclops Doomhauler") +local monster = {} + +monster.description = "an orclops doomhauler" +monster.experience = 1200 +monster.outfit = { + lookType = 934, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1314 +monster.Bestiary = { + class = "Giant", + race = BESTY_RACE_GIANT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Desecrated Glade, Edron Orc Cave", +} + +monster.health = 1700 +monster.maxHealth = 1700 +monster.race = "blood" +monster.corpse = 25078 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Me mash!", yell = false }, + { text = "GRRRRR!", yell = true }, + { text = "Muhahaha!", yell = false }, + { text = "Me strong, you weak!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 50320, maxCount = 185 }, -- gold coin + { id = 3724, chance = 50320, maxCount = 3 }, -- red mushroom + { id = 236, chance = 50320 }, -- strong health potion + { id = 3078, chance = 20000 }, -- mysterious fetish + { id = 3316, chance = 50320 }, -- orcish axe + { id = 24380, chance = 20000 }, -- bone toothpick + { id = 24381, chance = 4900 }, -- beetle carapace + { id = 24382, chance = 1800, maxCount = 2 }, -- bug meat + { id = 3027, chance = 12750, maxCount = 2 }, -- black pearl + { id = 3030, chance = 2510, maxCount = 3 }, -- small ruby + { id = 7452, chance = 1940 }, -- spiked squelcher + { id = 8015, chance = 1000, maxCount = 2 }, -- onion + { id = 9057, chance = 8870, maxCount = 3 }, -- small topaz + { id = 16123, chance = 9700 }, -- brown crystal splinter + { id = 17828, chance = 15290, maxCount = 3 }, -- pair of iron fists + { id = 2966, chance = 910 }, -- war drum + { id = 7439, chance = 910 }, -- berserk potion + { id = 10457, chance = 910 }, -- beetle necklace + { id = 23811, chance = 300 }, -- reinvigorating seeds +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = -117, maxDamage = -220, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = true }, + -- curse + { name = "condition", type = CONDITION_CURSED, interval = 2000, chance = 50, minDamage = -100, maxDamage = -200, radius = 4, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_EXPLOSIONAREA, target = true }, +} + +monster.defenses = { + defense = 25, + armor = 35, + mitigation = 1.32, + { name = "speed", interval = 2000, chance = 10, speedChange = 336, effect = CONST_ME_MAGIC_RED, target = false, duration = 2000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 30 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/giants/orclops_ravager.lua b/data-canary/monster/giants/orclops_ravager.lua new file mode 100644 index 00000000000..2d0ec5a7ee7 --- /dev/null +++ b/data-canary/monster/giants/orclops_ravager.lua @@ -0,0 +1,136 @@ +local mType = Game.createMonsterType("Orclops Ravager") +local monster = {} + +monster.description = "an orclops ravager" +monster.experience = 1100 +monster.outfit = { + lookType = 935, + lookHead = 94, + lookBody = 1, + lookLegs = 80, + lookFeet = 94, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1320 +monster.Bestiary = { + class = "Giant", + race = BESTY_RACE_GIANT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Desecrated Glade", +} + +monster.health = 1200 +monster.maxHealth = 1200 +monster.race = "blood" +monster.corpse = 25074 +monster.speed = 130 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Crushing! Smashing! Ripping! Yeah!!", yell = false }, + { text = "It's clobberin time!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 50320, maxCount = 120 }, -- gold coin + { id = 3035, chance = 50320 }, -- platinum coin + { id = 236, chance = 50320 }, -- strong health potion + { id = 3078, chance = 50320 }, -- mysterious fetish + { id = 3316, chance = 20000 }, -- orcish axe + { id = 3724, chance = 50320, maxCount = 3 }, -- red mushroom + { id = 23811, chance = 6000 }, -- reinvigorating seeds + { id = 24380, chance = 4900 }, -- bone toothpick + { id = 24381, chance = 1800 }, -- beetle carapace + { id = 24382, chance = 12750 }, -- bug meat + { id = 3027, chance = 2510, maxCount = 2 }, -- black pearl + { id = 3030, chance = 1940, maxCount = 2 }, -- small ruby + { id = 7452, chance = 1000 }, -- spiked squelcher + { id = 8015, chance = 8870 }, -- onion + { id = 9057, chance = 9700 }, -- small topaz + { id = 16123, chance = 15290, maxCount = 3 }, -- brown crystal splinter + { id = 17828, chance = 910 }, -- pair of iron fists + { id = 2966, chance = 910 }, -- war drum + { id = 7439, chance = 910 }, -- berserk potion + { id = 7419, chance = 300 }, -- dreaded cleaver +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = -180, maxDamage = -220, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = true }, +} + +monster.defenses = { + defense = 25, + armor = 35, + mitigation = 1.24, + { name = "speed", interval = 2000, chance = 10, speedChange = 336, effect = CONST_ME_MAGIC_RED, target = false, duration = 2000 }, + { name = "combat", interval = 2000, chance = 17, type = COMBAT_HEALING, minDamage = 80, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/broken_shaper.lua b/data-canary/monster/humanoids/broken_shaper.lua new file mode 100644 index 00000000000..9ed950bbc70 --- /dev/null +++ b/data-canary/monster/humanoids/broken_shaper.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Broken Shaper") +local monster = {} + +monster.description = "a broken shaper" +monster.experience = 1600 +monster.outfit = { + lookType = 932, + lookHead = 94, + lookBody = 76, + lookLegs = 0, + lookFeet = 82, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1321 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Astral Shaper Dungeon, Astral Shaper Ruins, Old Masonry", +} + +monster.health = 2200 +monster.maxHealth = 2200 +monster.race = "blood" +monster.corpse = 25068 +monster.speed = 155 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 98, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "", yell = false }, + { text = "Raar!!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100320, maxCount = 165 }, -- gold coin + { id = 3035, chance = 70320, maxCount = 2 }, -- platinum coin + { id = 24383, chance = 20000, maxCount = 2 }, -- cave turnip + { id = 24384, chance = 17000 }, -- ancient belt buckle + { id = 24385, chance = 20000 }, -- cracked alabaster vase + { id = 24386, chance = 13000 }, -- rhino horn carving + { id = 24390, chance = 4000 }, -- ancient coin + { id = 3147, chance = 15000 }, -- blank rune + { id = 3577, chance = 50320, maxCount = 2 }, -- meat + { id = 5021, chance = 5000, maxCount = 2 }, -- orichalcum pearl + { id = 5912, chance = 1000, maxCount = 2 }, -- blue piece of cloth + { id = 5913, chance = 5000, maxCount = 2 }, -- brown piece of cloth + { id = 5914, chance = 2000, maxCount = 2 }, -- yellow piece of cloth + { id = 3079, chance = 230 }, -- boots of haste + { id = 239, chance = 7000 }, -- great health potion + { id = 3284, chance = 1000 }, -- ice rapier + { id = 3046, chance = 1000 }, -- magic light wand + { id = 22193, chance = 4200 }, -- onyx chip + { id = 3098, chance = 2000 }, -- ring of healing + { id = 3030, chance = 3000 }, -- small ruby + { id = 3029, chance = 5000 }, -- small sapphire + { id = 3725, chance = 6500, maxCount = 5 }, -- brown mushroom +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -150, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = true }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, length = 5, spread = 0, effect = CONST_ME_SOUND_RED, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 37, + mitigation = 1.46, + { name = "speed", interval = 2000, chance = 10, speedChange = 336, effect = CONST_ME_MAGIC_RED, target = false, duration = 2000 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 0, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -15 }, + { type = COMBAT_EARTHDAMAGE, percent = 30 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/chakoya_toolshaper.lua b/data-canary/monster/humanoids/chakoya_toolshaper.lua new file mode 100644 index 00000000000..010c4cf0603 --- /dev/null +++ b/data-canary/monster/humanoids/chakoya_toolshaper.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Chakoya Toolshaper") +local monster = {} + +monster.description = "a chakoya toolshaper" +monster.experience = 40 +monster.outfit = { + lookType = 259, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 328 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Inukaya, Chyllfroest, Chakoya Iceberg.", +} + +monster.health = 80 +monster.maxHealth = 80 +monster.race = "blood" +monster.corpse = 7320 +monster.speed = 68 +monster.manaCost = 305 + +monster.changeTarget = { + interval = 60000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Chikuva!", yell = false }, + { text = "Jinuma jamjam!", yell = false }, + { text = "Suvituka siq chuqua!", yell = false }, + { text = "Kiyosa sipaju!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 77810, maxCount = 20 }, + { name = "mace", chance = 5300 }, + { name = "bone shield", chance = 720 }, + { id = 3456, chance = 1100 }, -- pick + { id = 3578, chance = 25060, maxCount = 2 }, -- fish + { name = "northern pike", chance = 70 }, + { name = "rainbow trout", chance = 140 }, + { name = "green perch", chance = 70 }, + { name = "mammoth whopper", chance = 160 }, + { id = 7441, chance = 450 }, -- ice cube + { name = "fireproof horn", chance = 390 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -45, range = 7, radius = 1, shootEffect = CONST_ANI_SMALLSTONE, target = true }, +} + +monster.defenses = { + defense = 10, + armor = 7, + mitigation = 0.23, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -15 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 40 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/chakoya_tribewarden.lua b/data-canary/monster/humanoids/chakoya_tribewarden.lua new file mode 100644 index 00000000000..76ef89e5fbf --- /dev/null +++ b/data-canary/monster/humanoids/chakoya_tribewarden.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Chakoya Tribewarden") +local monster = {} + +monster.description = "a chakoya tribewarden" +monster.experience = 40 +monster.outfit = { + lookType = 249, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 319 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Inukaya, Chyllfroest, Chakoya Iceberg, Nibelor (during a quest).", +} + +monster.health = 68 +monster.maxHealth = 68 +monster.race = "blood" +monster.corpse = 7320 +monster.speed = 62 +monster.manaCost = 305 + +monster.changeTarget = { + interval = 60000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Quisavu tukavi!", yell = false }, + { text = "Si siyoqua jamjam!", yell = false }, + { text = "Achuq! jinuma!", yell = false }, + { text = "Si ji jusipa!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 79590, maxCount = 20 }, + { name = "short sword", chance = 4810 }, + { name = "bone shield", chance = 1030 }, + { id = 3578, chance = 19370 }, -- fish + { name = "northern pike", chance = 60 }, + { name = "rainbow trout", chance = 50 }, + { name = "green perch", chance = 100 }, + { name = "mammoth whopper", chance = 130 }, + { name = "fireproof horn", chance = 350 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, +} + +monster.defenses = { + defense = 10, + armor = 9, + mitigation = 0.33, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -15 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/chakoya_windcaller.lua b/data-canary/monster/humanoids/chakoya_windcaller.lua new file mode 100644 index 00000000000..e99f6ddb408 --- /dev/null +++ b/data-canary/monster/humanoids/chakoya_windcaller.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Chakoya Windcaller") +local monster = {} + +monster.description = "a chakoya windcaller" +monster.experience = 48 +monster.outfit = { + lookType = 260, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 329 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Inukaya, Chyllfroest, Chakoya Iceberg.", +} + +monster.health = 84 +monster.maxHealth = 84 +monster.race = "blood" +monster.corpse = 7320 +monster.speed = 71 +monster.manaCost = 305 + +monster.changeTarget = { + interval = 60000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Siqsiq ji jusipa!", yell = false }, + { text = "Jagura taluka taqua!", yell = false }, + { text = "Mupi! Si siyoqua jinuma!", yell = false }, + { text = "Quatu nguraka!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 71170, maxCount = 27 }, + { name = "brass helmet", chance = 4390 }, + { name = "bone shield", chance = 960 }, + { id = 3578, chance = 30790, maxCount = 3 }, -- fish + { name = "northern pike", chance = 40 }, + { name = "rainbow trout", chance = 40 }, + { name = "green perch", chance = 110 }, + { name = "fireproof horn", chance = 410 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -22 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -16, maxDamage = -32, range = 7, shootEffect = CONST_ANI_ICE, target = false }, + -- freeze + { name = "condition", type = CONDITION_FREEZING, interval = 2000, chance = 10, minDamage = -130, maxDamage = -160, radius = 3, effect = CONST_ME_ICEAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -9, maxDamage = -30, length = 5, spread = 2, effect = CONST_ME_ICEAREA, target = false }, +} + +monster.defenses = { + defense = 10, + armor = 7, + mitigation = 0.38, + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -15 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 50 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -8 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/cheese_thief.lua b/data-canary/monster/humanoids/cheese_thief.lua new file mode 100644 index 00000000000..3d8676b6a72 --- /dev/null +++ b/data-canary/monster/humanoids/cheese_thief.lua @@ -0,0 +1,98 @@ +local mType = Game.createMonsterType("Cheese Thief") +local monster = {} + +monster.description = "a cheese thief" +monster.experience = 0 +monster.outfit = { + lookType = 534, + lookHead = 101, + lookBody = 0, + lookLegs = 101, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 1100 +monster.maxHealth = 1100 +monster.race = "blood" +monster.corpse = 17454 +monster.speed = 52 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 50, + healthHidden = false, + isBlockable = true, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -100 }, +} + +monster.defenses = { + defense = 50, + armor = 50, + -- mitigation = ???, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/corym_charlatan.lua b/data-canary/monster/humanoids/corym_charlatan.lua new file mode 100644 index 00000000000..e9dce8b0055 --- /dev/null +++ b/data-canary/monster/humanoids/corym_charlatan.lua @@ -0,0 +1,126 @@ +local mType = Game.createMonsterType("Corym Charlatan") +local monster = {} + +monster.description = "a corym charlatan" +monster.experience = 150 +monster.outfit = { + lookType = 532, + lookHead = 0, + lookBody = 78, + lookLegs = 59, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 916 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Venore Corym Cave, Tiquanda Corym Cave, Corym Black Market, \z + Carlin Corym Cave/Dwarf Mines Diggers Depths Mine, Upper Spike.", +} + +monster.health = 250 +monster.maxHealth = 250 +monster.race = "blood" +monster.corpse = 17445 +monster.speed = 95 +monster.manaCost = 490 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Mehehe!", yell = false }, + { text = "Beware! Me hexing you!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 35 }, + { id = 3607, chance = 10000 }, -- cheese + { name = "bola", chance = 7692 }, + { name = "spike shield", chance = 492 }, + { name = "ratana", chance = 909 }, + { name = "life preserver", chance = 854 }, + { name = "cheese cutter", chance = 5882 }, + { name = "cheesy figurine", chance = 518 }, + { name = "earflap", chance = 7142 }, + { name = "soft cheese", chance = 12500 }, + { name = "rat cheese", chance = 14285 }, + { name = "leather harness", chance = 537 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -105 }, +} + +monster.defenses = { + defense = 10, + armor = 17, + mitigation = 0.62, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 25 }, + { type = COMBAT_EARTHDAMAGE, percent = 25 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 15 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/corym_skirmisher.lua b/data-canary/monster/humanoids/corym_skirmisher.lua new file mode 100644 index 00000000000..59980509138 --- /dev/null +++ b/data-canary/monster/humanoids/corym_skirmisher.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Corym Skirmisher") +local monster = {} + +monster.description = "a corym skirmisher" +monster.experience = 260 +monster.outfit = { + lookType = 533, + lookHead = 0, + lookBody = 76, + lookLegs = 83, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 917 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Venore Corym Cave, Tiquanda Corym Cave, Corym Black Market, \z + Carlin Corym Cave/Dwarf Mines Diggers Depths Mine, Upper Spike.", +} + +monster.health = 450 +monster.maxHealth = 450 +monster.race = "blood" +monster.corpse = 17446 +monster.speed = 100 +monster.manaCost = 695 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Squeak! Squeak!", yell = false }, + { text = " ", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 45 }, + { id = 3607, chance = 20000 }, -- cheese + { name = "bola", chance = 7692 }, + { name = "spike shield", chance = 645 }, + { name = "ratana", chance = 2702 }, + { name = "life preserver", chance = 2941 }, + { name = "cheese cutter", chance = 8333 }, + { name = "cheesy figurine", chance = 854 }, + { name = "earflap", chance = 9090 }, + { name = "soft cheese", chance = 14285 }, + { name = "rat cheese", chance = 16666 }, + { name = "rat god doll", chance = 12 }, + { name = "leather harness", chance = 561 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -90, range = 7, shootEffect = CONST_ANI_WHIRLWINDCLUB, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 25, + mitigation = 0.96, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 25 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/corym_vanguard.lua b/data-canary/monster/humanoids/corym_vanguard.lua new file mode 100644 index 00000000000..3326d290d21 --- /dev/null +++ b/data-canary/monster/humanoids/corym_vanguard.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Corym Vanguard") +local monster = {} + +monster.description = "a corym vanguard" +monster.experience = 490 +monster.outfit = { + lookType = 534, + lookHead = 0, + lookBody = 19, + lookLegs = 121, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 918 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Venore Corym Cave, Tiquanda Corym Cave, Corym Black Market, \z + Carlin Corym Cave/Dwarf Mines Diggers Depths Mine, Upper Spike.", +} + +monster.health = 700 +monster.maxHealth = 700 +monster.race = "blood" +monster.corpse = 17454 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 50, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Gimme! Gimme!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 120 }, + { id = 3607, chance = 20000 }, -- cheese + { name = "bola", chance = 10000 }, + { name = "spike shield", chance = 4761 }, + { name = "ratana", chance = 5000 }, + { name = "life preserver", chance = 5000 }, + { name = "cheese cutter", chance = 16666 }, + { name = "cheesy figurine", chance = 3846 }, + { name = "earflap", chance = 11111 }, + { name = "soft cheese", chance = 14285 }, + { name = "rat cheese", chance = 14285 }, + { name = "rat god doll", chance = 14 }, + { name = "leather harness", chance = 1612 }, + { name = "spiky club", chance = 3225 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -140 }, + { name = "corym vanguard wave", interval = 2000, chance = 10, minDamage = -50, maxDamage = -100, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -40, maxDamage = -70, radius = 4, effect = CONST_ME_MORTAREA, target = true }, +} + +monster.defenses = { + defense = 20, + armor = 29, + mitigation = 0.99, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/crazed_summer_rearguard.lua b/data-canary/monster/humanoids/crazed_summer_rearguard.lua new file mode 100644 index 00000000000..8e269d760c4 --- /dev/null +++ b/data-canary/monster/humanoids/crazed_summer_rearguard.lua @@ -0,0 +1,136 @@ +local mType = Game.createMonsterType("Crazed Summer Rearguard") +local monster = {} + +monster.description = "a crazed summer rearguard" +monster.experience = 4700 +monster.outfit = { + lookType = 1136, + lookHead = 114, + lookBody = 94, + lookLegs = 3, + lookFeet = 121, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1733 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Court of Summer, Dream Labyrinth.", +} + +monster.health = 5300 +monster.maxHealth = 5300 +monster.race = "blood" +monster.corpse = 30081 +monster.speed = 200 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Is this real life?", yell = false }, + { text = "Weeeuuu weeeuuu!!!", yell = false }, +} + +monster.loot = { + { name = "power bolt", chance = 1000000 }, + { name = "small enchanted sapphire", chance = 790, maxCount = 2 }, + { name = "platinum coin", chance = 85000, maxCount = 11 }, + { id = 5921, chance = 10500 }, -- heaven blossom + { name = "dream essence egg", chance = 8500 }, + { name = "elvish talisman", chance = 7200 }, + { name = "violet crystal shard", chance = 4500 }, + { name = "small enchanted ruby", chance = 6000 }, + { name = "red crystal fragment", chance = 4500 }, + { name = "leaf star", chance = 4000, maxCount = 8 }, + { id = 23529, chance = 2500 }, -- ring of blue plasma + { name = "sun fruit", chance = 890 }, + { id = 23542, chance = 900 }, -- collar of blue plasma + { name = "wood cape", chance = 1300 }, + { name = "small diamond", chance = 600 }, + { name = "yellow gem", chance = 1000 }, + { name = "crystal crossbow", chance = 500 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 2500, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -300, range = 6, effect = CONST_ME_FIREATTACK, target = true }, + { name = "combat", interval = 3000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -300, range = 6, radius = 2, effect = CONST_ME_FIREAREA, target = true }, +} + +monster.defenses = { + defense = 20, + armor = 76, + mitigation = 2.11, +} + +monster.reflects = { + { type = COMBAT_FIREDAMAGE, percent = 70 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 40 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -25 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/crazed_summer_vanguard.lua b/data-canary/monster/humanoids/crazed_summer_vanguard.lua new file mode 100644 index 00000000000..38fe860c679 --- /dev/null +++ b/data-canary/monster/humanoids/crazed_summer_vanguard.lua @@ -0,0 +1,137 @@ +local mType = Game.createMonsterType("Crazed Summer Vanguard") +local monster = {} + +monster.description = "a crazed summer vanguard" +monster.experience = 5000 +monster.outfit = { + lookType = 1137, + lookHead = 114, + lookBody = 93, + lookLegs = 3, + lookFeet = 83, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 1732 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Court of Summer, Dream Labyrinth.", +} + +monster.health = 5500 +monster.maxHealth = 5500 +monster.race = "blood" +monster.corpse = 30077 +monster.speed = 195 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I see colours, all colours! Or are these just illusions?", yell = false }, + { text = "La di da di doo!!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 85000, maxCount = 13 }, + { name = "elven astral observer", chance = 30000, maxCount = 2 }, + { name = "dream essence egg", chance = 8600 }, + { name = "belted cape", chance = 9500 }, + { name = "two handed sword", chance = 7400 }, + { name = "seeds", chance = 8600 }, + { id = 3307, chance = 6800 }, -- scimitar + { name = "knife", chance = 6600 }, + { name = "dragon necklace", chance = 7150 }, + { name = "magma amulet", chance = 5500 }, + { name = "wand of dragonbreath", chance = 4800 }, + { name = "wand of draconia", chance = 4800 }, + { name = "magma boots", chance = 2900 }, + { name = "sun fruit", chance = 900 }, + { name = "bullseye potion", chance = 300 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 2500, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -300, length = 3, spread = 0, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 3000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -300, radius = 1, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 3500, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 4000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -300, radius = 3, effect = CONST_ME_EXPLOSIONHIT, target = true }, + { name = "sparks chain", interval = 4500, chance = 20, minDamage = -100, maxDamage = -250, range = 3, target = true }, +} + +monster.defenses = { + defense = 20, + armor = 77, + mitigation = 2.05, +} + +monster.reflects = { + { type = COMBAT_FIREDAMAGE, percent = 70 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 50 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -30 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/crazed_winter_rearguard.lua b/data-canary/monster/humanoids/crazed_winter_rearguard.lua new file mode 100644 index 00000000000..d7d54c49c01 --- /dev/null +++ b/data-canary/monster/humanoids/crazed_winter_rearguard.lua @@ -0,0 +1,138 @@ +local mType = Game.createMonsterType("Crazed Winter Rearguard") +local monster = {} + +monster.description = "a crazed winter rearguard" +monster.experience = 4700 +monster.outfit = { + lookType = 1136, + lookHead = 47, + lookBody = 7, + lookLegs = 0, + lookFeet = 85, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1731 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Court of Winter, Dream Labyrinth.", +} + +monster.health = 5200 +monster.maxHealth = 5200 +monster.race = "blood" +monster.corpse = 30127 +monster.speed = 200 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 86000, maxCount = 5 }, + { name = "red crystal fragment", chance = 2000 }, + { id = 3039, chance = 330 }, -- red gem + { name = "ice rapier", chance = 17200 }, + { name = "ultimate health potion", chance = 16850 }, + { name = "great spirit potion", chance = 15780 }, + { id = 30058, chance = 9000, maxCount = 2 }, -- ice flower + { name = "life crystal", chance = 7900 }, + { name = "dream essence egg", chance = 8750 }, + { name = "elven astral observer", chance = 7600 }, + { name = "glacier mask", chance = 6000 }, + { name = "moonlight rod", chance = 5400 }, + { name = "small enchanted sapphire", chance = 4700, maxCount = 7 }, + { name = "northwind rod", chance = 2360 }, + { name = "glacier amulet", chance = 2930 }, + { name = "hailstorm rod", chance = 2660 }, + { name = "glacier robe", chance = 1930 }, + { name = "cyan crystal fragment", chance = 2100 }, + { name = "elven amulet", chance = 1260 }, + { name = "blue gem", chance = 330 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2500, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, range = 5, radius = 1, effect = CONST_ME_ICEAREA, target = true }, + { name = "combat", interval = 3000, chance = 25, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, length = 4, spread = 0, effect = CONST_ME_GIANTICE, target = false }, + { name = "combat", interval = 3500, chance = 25, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -300, radius = 3, effect = CONST_ME_ICEAREA, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 76, + mitigation = 2.11, +} + +monster.reflects = { + { type = COMBAT_ICEDAMAGE, percent = 70 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -15 }, + { type = COMBAT_EARTHDAMAGE, percent = -20 }, + { type = COMBAT_FIREDAMAGE, percent = -20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 40 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/crazed_winter_vanguard.lua b/data-canary/monster/humanoids/crazed_winter_vanguard.lua new file mode 100644 index 00000000000..22cac33bccb --- /dev/null +++ b/data-canary/monster/humanoids/crazed_winter_vanguard.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Crazed Winter Vanguard") +local monster = {} + +monster.description = "a crazed winter vanguard" +monster.experience = 5400 +monster.outfit = { + lookType = 1137, + lookHead = 8, + lookBody = 67, + lookLegs = 8, + lookFeet = 1, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 1730 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Court of Winter, Dream Labyrinth.", +} + +monster.health = 5800 +monster.maxHealth = 5800 +monster.race = "blood" +monster.corpse = 30122 +monster.speed = 190 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Nobody will ever escape from this place, muwahaha!!!", yell = false }, + { text = "These voices… they never stop!", yell = false }, + { text = " I am getting crazy here...Wa wa wahhh!!!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 85000, maxCount = 13 }, + { id = 30058, chance = 13000 }, -- ice flower + { name = "small enchanted ruby", chance = 13300 }, + { name = "miraculum", chance = 10100 }, + { name = "ultimate health potion", chance = 9300 }, + { name = "dream essence egg", chance = 8500 }, + { name = "tiger eye", chance = 6900 }, + { name = "northwind rod", chance = 6000 }, + { name = "glacier amulet", chance = 5000 }, + { name = "ice rapier", chance = 6250 }, + { name = "glacier robe", chance = 2500 }, + { name = "elven amulet", chance = 720 }, + { name = "blue gem", chance = 200 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2500, chance = 30, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, range = 5, radius = 1, effect = CONST_ME_ICEAREA, target = true }, + { name = "combat", interval = 3000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, length = 4, spread = 0, effect = CONST_ME_GIANTICE, target = false }, + { name = "combat", interval = 3500, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -300, radius = 3, effect = CONST_ME_ICEAREA, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 77, + mitigation = 2.16, +} + +monster.reflects = { + { type = COMBAT_ICEDAMAGE, percent = 70 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -20 }, + { type = COMBAT_EARTHDAMAGE, percent = -15 }, + { type = COMBAT_FIREDAMAGE, percent = -30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 50 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/dwarf.lua b/data-canary/monster/humanoids/dwarf.lua new file mode 100644 index 00000000000..3aa07ac02c6 --- /dev/null +++ b/data-canary/monster/humanoids/dwarf.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Dwarf") +local monster = {} + +monster.description = "a dwarf" +monster.experience = 45 +monster.outfit = { + lookType = 69, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 69 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Kazordoon Dwarf Mines, Dwarf Bridge, deep Elvenbane, Tiquanda Dwarf Cave, Cormaya Dwarf Cave, \z + Island of Destiny (Knights area), Beregar.", +} + +monster.health = 90 +monster.maxHealth = 90 +monster.race = "blood" +monster.corpse = 6007 +monster.speed = 85 +monster.manaCost = 320 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hail Durin!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 35000, maxCount = 8 }, + { id = 3097, chance = 100 }, -- dwarven ring + { name = "axe", chance = 15000 }, + { name = "hatchet", chance = 25000 }, + { name = "studded armor", chance = 8000 }, + { name = "copper shield", chance = 10000 }, + { id = 3456, chance = 10000 }, -- pick + { id = 3505, chance = 8000 }, -- letter + { name = "leather legs", chance = 10000 }, + { name = "white mushroom", chance = 50000 }, + { name = "iron ore", chance = 700 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, +} + +monster.defenses = { + defense = 10, + armor = 8, + mitigation = 0.36, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/dwarf_geomancer.lua b/data-canary/monster/humanoids/dwarf_geomancer.lua new file mode 100644 index 00000000000..0e74ad51a86 --- /dev/null +++ b/data-canary/monster/humanoids/dwarf_geomancer.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Dwarf Geomancer") +local monster = {} + +monster.description = "a dwarf geomancer" +monster.experience = 265 +monster.outfit = { + lookType = 66, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 66 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Mount Sternum Undead Cave, Dwarf Mines, Circle Room in Kazordoon, Triangle Tower, \z + Tiquanda Dwarf Cave, Cormaya Dwarven Cave, Beregar Mines.", +} + +monster.health = 380 +monster.maxHealth = 380 +monster.race = "blood" +monster.corpse = 6015 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 4, + runHealth = 110, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hail Durin!", yell = false }, + { text = "Earth is the strongest element.", yell = false }, + { text = "Dust to dust.", yell = false }, +} + +monster.loot = { + { name = "small sapphire", chance = 710 }, + { name = "gold coin", chance = 50000, maxCount = 35 }, + { id = 3046, chance = 14000 }, -- magic light wand + { id = 3059, chance = 360 }, -- spellbook + { id = 3097, chance = 530 }, -- dwarven ring + { name = "blank rune", chance = 33000 }, + { name = "clerical mace", chance = 1120 }, + { name = "pear", chance = 25000 }, + { name = "white mushroom", chance = 60000, maxCount = 2 }, + { name = "iron ore", chance = 120 }, + { name = "terra boots", chance = 470 }, + { name = "geomancer's robe", chance = 8000 }, + { name = "geomancer's staff", chance = 7000 }, +} + +monster.attacks = { + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -110, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -80, range = 7, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 15, + mitigation = 0.91, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_HEALING, minDamage = 75, maxDamage = 125, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 60 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/dwarf_guard.lua b/data-canary/monster/humanoids/dwarf_guard.lua new file mode 100644 index 00000000000..659020748b4 --- /dev/null +++ b/data-canary/monster/humanoids/dwarf_guard.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Dwarf Guard") +local monster = {} + +monster.description = "a dwarf guard" +monster.experience = 165 +monster.outfit = { + lookType = 70, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 70 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Kazordoon Dwarf Mines, Dwacatra, Ferngrims Gate, Cyclopolis, Mount Sternum Undead Cave, \z + Stonehome Rotworm cave (near Edron), Maze of Lost Souls, Tiquanda Dwarf Cave, Beregar, Cormaya Dwarf Cave.", +} + +monster.health = 245 +monster.maxHealth = 245 +monster.race = "blood" +monster.corpse = 6013 +monster.speed = 103 +monster.manaCost = 650 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 20, + random = 10, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hail Durin!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 40000, maxCount = 30 }, + { name = "small amethyst", chance = 140 }, + { id = 3092, chance = 190 }, -- axe ring + { name = "double axe", chance = 600 }, + { name = "battle hammer", chance = 4000 }, + { name = "steel helmet", chance = 1600 }, + { name = "scale armor", chance = 9200 }, + { name = "battle shield", chance = 6000 }, + { name = "leather boots", chance = 40000 }, + { name = "white mushroom", chance = 55000, maxCount = 2 }, + { name = "iron ore", chance = 510 }, + { name = "health potion", chance = 380 }, + { id = 12600, chance = 280 }, -- coal +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -140 }, +} + +monster.defenses = { + defense = 30, + armor = 15, + mitigation = 1.02, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/dwarf_henchman.lua b/data-canary/monster/humanoids/dwarf_henchman.lua new file mode 100644 index 00000000000..39176cfa7b3 --- /dev/null +++ b/data-canary/monster/humanoids/dwarf_henchman.lua @@ -0,0 +1,114 @@ +local mType = Game.createMonsterType("Dwarf Henchman") +local monster = {} + +monster.description = "a dwarf henchman" +monster.experience = 15 +monster.outfit = { + lookType = 160, + lookHead = 115, + lookBody = 77, + lookLegs = 93, + lookFeet = 114, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 379 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Kazordoon Underground", +} + +monster.health = 350 +monster.maxHealth = 350 +monster.race = "blood" +monster.corpse = 6007 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "This place is for our eyes only!", yell = false }, + { text = "We will live and let you die!", yell = false }, + { text = "I will die another day!", yell = false }, + { text = "We have license to kill!", yell = false }, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, + --drown + --envenom +} + +monster.defenses = { + defense = 10, + armor = 16, + mitigation = 0.64, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/dwarf_miner.lua b/data-canary/monster/humanoids/dwarf_miner.lua new file mode 100644 index 00000000000..bca12fdc68b --- /dev/null +++ b/data-canary/monster/humanoids/dwarf_miner.lua @@ -0,0 +1,109 @@ +local mType = Game.createMonsterType("Dwarf Miner") +local monster = {} + +monster.description = "a dwarf miner" +monster.experience = 60 +monster.outfit = { + lookType = 160, + lookHead = 77, + lookBody = 101, + lookLegs = 97, + lookFeet = 115, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 120 +monster.maxHealth = 120 +monster.race = "blood" +monster.corpse = 6007 +monster.speed = 85 +monster.manaCost = 420 + +monster.changeTarget = { + interval = 0, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Work, work!", yell = false }, + { text = "Intruders in the mines!", yell = false }, + { text = "Mine, all mine!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 33333, maxCount = 10 }, + { id = 3097, chance = 793 }, -- dwarven ring + { name = "axe", chance = 14285 }, + { name = "studded armor", chance = 6666 }, + { id = 3456, chance = 11111 }, -- pick + { name = "leather legs", chance = 9090 }, + { name = "meat", chance = 3846 }, + { name = "iron ore", chance = 793 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, +} + +monster.defenses = { + defense = 10, + armor = 7, + mitigation = 0.51, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/dwarf_soldier.lua b/data-canary/monster/humanoids/dwarf_soldier.lua new file mode 100644 index 00000000000..1ec0276d73c --- /dev/null +++ b/data-canary/monster/humanoids/dwarf_soldier.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Dwarf Soldier") +local monster = {} + +monster.description = "a dwarf soldier" +monster.experience = 70 +monster.outfit = { + lookType = 71, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 71 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Kazordoon Dwarf Mines, Cyclopolis, Dwacatra, Ferngrims Gate, Dwarf Bridge, \z + Mount Sternum Undead Cave, Beregar, Tiquanda Dwarf Cave, Cormaya Dwarf Cave.", +} + +monster.health = 135 +monster.maxHealth = 135 +monster.race = "blood" +monster.corpse = 6014 +monster.speed = 88 +monster.manaCost = 360 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hail Durin!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 28000, maxCount = 12 }, + { id = 3092, chance = 120 }, -- axe ring + { name = "battle axe", chance = 2500 }, + { name = "crossbow", chance = 3000 }, + { name = "chain armor", chance = 8000 }, + { name = "soldier helmet", chance = 12000 }, + { name = "dwarven shield", chance = 3000 }, + { name = "bolt", chance = 40000, maxCount = 7 }, + { id = 3457, chance = 10000 }, -- shovel + { name = "white mushroom", chance = 40000, maxCount = 3 }, + { name = "iron ore", chance = 300 }, + { name = "piercing bolt", chance = 4000, maxCount = 3 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -60, range = 7, shootEffect = CONST_ANI_BOLT, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 9, + mitigation = 0.51, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/dworc_fleshhunter.lua b/data-canary/monster/humanoids/dworc_fleshhunter.lua new file mode 100644 index 00000000000..cc9e12dfbbf --- /dev/null +++ b/data-canary/monster/humanoids/dworc_fleshhunter.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Dworc Fleshhunter") +local monster = {} + +monster.description = "a dworc fleshhunter" +monster.experience = 40 +monster.outfit = { + lookType = 215, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 215 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "South of Port Hope (Trapwood) on ground level and underground.", +} + +monster.health = 85 +monster.maxHealth = 85 +monster.race = "blood" +monster.corpse = 6058 +monster.speed = 74 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 8, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grow truk grrrrr.", yell = false }, + { text = "Brak brrretz!", yell = false }, + { text = "Prek tars, dekklep zurk.", yell = false }, +} + +monster.loot = { + { id = 2920, chance = 4750 }, -- torch + { name = "gold coin", chance = 69000, maxCount = 13 }, + { id = 3114, chance = 3300, maxCount = 3 }, -- skull + { name = "poison dagger", chance = 2250 }, + { name = "bone shield", chance = 1000 }, + { name = "cleaver", chance = 9750 }, + { name = "ripper lance", chance = 90 }, + { name = "hunting spear", chance = 2000 }, + { name = "tribal mask", chance = 500 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -15, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, +} + +monster.defenses = { + defense = 10, + armor = 3, + mitigation = 0.20, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -8 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -13 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/dworc_venomsniper.lua b/data-canary/monster/humanoids/dworc_venomsniper.lua new file mode 100644 index 00000000000..94495f9356b --- /dev/null +++ b/data-canary/monster/humanoids/dworc_venomsniper.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Dworc Venomsniper") +local monster = {} + +monster.description = "a dworc venomsniper" +monster.experience = 35 +monster.outfit = { + lookType = 216, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 216 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "South of Port Hope (Trapwood) on ground level and underground and on Foreigner Quarter of Yalahar.", +} + +monster.health = 80 +monster.maxHealth = 80 +monster.race = "blood" +monster.corpse = 6059 +monster.speed = 76 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grow truk grrrrr.", yell = false }, + { text = "Brak brrretz!", yell = false }, + { text = "Prek tars, dekklep zurk.", yell = false }, +} + +monster.loot = { + { id = 2920, chance = 6000 }, -- torch + { name = "gold coin", chance = 75000, maxCount = 13 }, + { name = "bronze amulet", chance = 110 }, + { id = 3114, chance = 1000, maxCount = 2 }, -- skull + { name = "poison dagger", chance = 1500 }, + { name = "leather armor", chance = 10000 }, + { name = "poison arrow", chance = 5000, maxCount = 3 }, + { name = "tribal mask", chance = 510 }, + { name = "bast skirt", chance = 100 }, + { name = "seeds", chance = 200 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -20, maxDamage = -40, range = 5, shootEffect = CONST_ANI_POISON, target = false }, +} + +monster.defenses = { + defense = 10, + armor = 3, + mitigation = 0.38, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -13 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -13 }, + { type = COMBAT_HOLYDAMAGE, percent = 15 }, + { type = COMBAT_DEATHDAMAGE, percent = -8 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/dworc_voodoomaster.lua b/data-canary/monster/humanoids/dworc_voodoomaster.lua new file mode 100644 index 00000000000..9a9770186f3 --- /dev/null +++ b/data-canary/monster/humanoids/dworc_voodoomaster.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Dworc Voodoomaster") +local monster = {} + +monster.description = "a dworc voodoomaster" +monster.experience = 55 +monster.outfit = { + lookType = 214, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 214 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "South of Port Hope around Trapwood. There is also a group of 3 voodoomasters \z + and 2 crypt shamblers on the shore east of Trapwood.", +} + +monster.health = 80 +monster.maxHealth = 80 +monster.race = "blood" +monster.corpse = 6055 +monster.speed = 75 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 4, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grow truk grrrrr.", yell = false }, + { text = "Brak brrretz!", yell = false }, + { text = "Prek tars, dekklep zurk.", yell = false }, +} + +monster.loot = { + { id = 2920, chance = 6000 }, -- torch + { name = "gold coin", chance = 75000, maxCount = 17 }, + { name = "strange symbol", chance = 500 }, + { id = 3114, chance = 1950, maxCount = 3 }, -- skull + { id = 3115, chance = 5800 }, -- bone + { id = 3116, chance = 3000 }, -- big bone + { name = "poison dagger", chance = 1000 }, + { name = "leather armor", chance = 10000 }, + { id = 3002, chance = 130 }, -- voodoo doll + { name = "tribal mask", chance = 500 }, + { name = "health potion", chance = 600 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -40, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = -800, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_TELEPORT, target = false }, + { name = "outfit", interval = 2000, chance = 10, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 5000, outfitMonster = "chicken" }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -6, maxDamage = -18, radius = 6, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "poisonfield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, +} + +monster.defenses = { + defense = 10, + armor = 3, + mitigation = 0.20, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 3, maxDamage = 9, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 35 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/elf.lua b/data-canary/monster/humanoids/elf.lua new file mode 100644 index 00000000000..d7ae1164a58 --- /dev/null +++ b/data-canary/monster/humanoids/elf.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Elf") +local monster = {} + +monster.description = "an elf" +monster.experience = 42 +monster.outfit = { + lookType = 62, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 62 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Yalahar Foreigner Quarter and Trade Quarter, Maze of Lost Souls, Orc Fort (unreachable), \z + Hellgate, Shadowthorn, Ab'Dendriel elf caves, Elvenbane, north of Thais.", +} + +monster.health = 100 +monster.maxHealth = 100 +monster.race = "blood" +monster.corpse = 6003 +monster.speed = 95 +monster.manaCost = 320 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Death to the Defilers!", yell = false }, + { text = "You are not welcome here.", yell = false }, + { text = "Flee as long as you can.", yell = false }, + { text = "Bahaha aka!", yell = false }, + { text = "Ulathil beia Thratha!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 44000, maxCount = 30 }, + { name = "longsword", chance = 10800 }, + { name = "studded helmet", chance = 13500 }, + { name = "studded armor", chance = 8960 }, + { name = "plate shield", chance = 9300 }, + { name = "arrow", chance = 7060, maxCount = 3 }, + { name = "leather boots", chance = 11410 }, + { id = 5921, chance = 940 }, -- heaven blossom + { name = "plum", chance = 20000, maxCount = 2 }, + { name = "elvish talisman", chance = 2100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -25, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, +} + +monster.defenses = { + defense = 10, + armor = 6, + mitigation = 0.30, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/elf_arcanist.lua b/data-canary/monster/humanoids/elf_arcanist.lua new file mode 100644 index 00000000000..b8fa53e3c56 --- /dev/null +++ b/data-canary/monster/humanoids/elf_arcanist.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Elf Arcanist") +local monster = {} + +monster.description = "an elf arcanist" +monster.experience = 175 +monster.outfit = { + lookType = 63, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 63 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Yalahar Foreigner Quarter, Demona, Shadowthorn, northwest of Ab'Dendriel, Maze of Lost Souls, \z + Cyclopolis, Elvenbane, near Mount Sternum.", +} + +monster.health = 220 +monster.maxHealth = 220 +monster.race = "blood" +monster.corpse = 6011 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I'll bring balance upon you!", yell = false }, + { text = "Vihil Ealuel!", yell = false }, + { text = "For the Daughter of the Stars!", yell = false }, + { text = "Tha'shi Cenath!", yell = false }, + { text = "Feel my wrath!", yell = false }, +} + +monster.loot = { + { id = 2815, chance = 31000 }, -- scroll + { name = "candlestick", chance = 2100 }, + { name = "gold coin", chance = 37000, maxCount = 47 }, + { name = "yellow gem", chance = 50 }, + { name = "life crystal", chance = 970 }, + { name = "wand of cosmic energy", chance = 1160 }, + { name = "elven amulet", chance = 1999 }, + { name = "blank rune", chance = 18000 }, + { name = "arrow", chance = 6000, maxCount = 3 }, + { id = 3509, chance = 1000 }, -- inkwell + { name = "sandals", chance = 950 }, + { name = "green tunic", chance = 7000 }, + { name = "melon", chance = 22000 }, + { name = "bread", chance = 14000 }, + { name = "grave flower", chance = 880 }, + { name = "sling herb", chance = 5000 }, + { name = "holy orchid", chance = 2100 }, + { name = "strong mana potion", chance = 3000 }, + { name = "health potion", chance = 4000 }, + { name = "elvish talisman", chance = 10000 }, + { name = "elven astral observer", chance = 7710 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -70, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -30, maxDamage = -50, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -85, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 15, + mitigation = 0.51, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 50 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/elf_overseer.lua b/data-canary/monster/humanoids/elf_overseer.lua new file mode 100644 index 00000000000..85bb997401b --- /dev/null +++ b/data-canary/monster/humanoids/elf_overseer.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Elf Overseer") +local monster = {} + +monster.description = "an elf overseer" +monster.experience = 200 +monster.outfit = { + lookType = 159, + lookHead = 57, + lookBody = 95, + lookLegs = 114, + lookFeet = 116, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 741 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Shadowthorn", +} + +monster.health = 220 +monster.maxHealth = 220 +monster.race = "blood" +monster.corpse = 6011 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I'll bring balance upon you!", yell = false }, + { text = "Vihil Ealuel!", yell = false }, + { text = "For the Daughter of the Stars!", yell = false }, + { text = "Tha'shi Cenath!", yell = false }, + { text = "Feel my wrath!", yell = false }, +} + +monster.loot = { + { id = 2815, chance = 31000 }, -- scroll + { name = "candlestick", chance = 2100 }, + { name = "gold coin", chance = 37000, maxCount = 47 }, + { name = "yellow gem", chance = 50 }, + { name = "life crystal", chance = 970 }, + { name = "wand of cosmic energy", chance = 1160 }, + { name = "elven amulet", chance = 1999 }, + { name = "blank rune", chance = 18000 }, + { name = "arrow", chance = 6000, maxCount = 3 }, + { id = 3509, chance = 1000 }, -- inkwell + { name = "sandals", chance = 950 }, + { name = "green tunic", chance = 7000 }, + { name = "melon", chance = 22000 }, + { name = "bread", chance = 14000 }, + { name = "grave flower", chance = 880 }, + { name = "sling herb", chance = 5000 }, + { name = "holy orchid", chance = 2100 }, + { name = "strong mana potion", chance = 3000 }, + { name = "health potion", chance = 4000 }, + { name = "elvish talisman", chance = 10000 }, + { name = "elven astral observer", chance = 7710 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -94 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -120, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -80, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -135, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 15, + mitigation = 0.51, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 50 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/elf_scout.lua b/data-canary/monster/humanoids/elf_scout.lua new file mode 100644 index 00000000000..4caf78895aa --- /dev/null +++ b/data-canary/monster/humanoids/elf_scout.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Elf Scout") +local monster = {} + +monster.description = "an elf scout" +monster.experience = 75 +monster.outfit = { + lookType = 64, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 64 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Yalahar Foreigner Quarter, Shadowthorn, northwest of Ab'Dendriel, north and west of Mount Sternum, \z + Hellgate, Maze of Lost Souls, near Knightwatch Tower in the Plains of Havoc. \z + Two may also spawn when a Desperate White Deer or an Enraged White Deer is killed.", +} + +monster.health = 160 +monster.maxHealth = 160 +monster.race = "blood" +monster.corpse = 6012 +monster.speed = 110 +monster.manaCost = 360 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Tha'shi Ab'Dendriel!", yell = false }, + { text = "Evicor guide my arrow!", yell = false }, + { text = "Your existence will end here!", yell = false }, + { text = "Feel the sting of my arrows!", yell = false }, + { text = "Thy blood will quench the soil's thirst!", yell = false }, +} + +monster.loot = { + { name = "waterskin", chance = 1350 }, + { name = "gold coin", chance = 75000, maxCount = 25 }, + { name = "bow", chance = 4000 }, + { name = "arrow", chance = 30710, maxCount = 12 }, + { name = "poison arrow", chance = 15400, maxCount = 4 }, + { name = "sandals", chance = 1180 }, + { name = "grapes", chance = 17750 }, + { id = 5921, chance = 1130 }, -- heaven blossom + { name = "elvish bow", chance = 140 }, + { name = "elvish talisman", chance = 5200 }, + { name = "elven scouting glass", chance = 9750 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -80, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, +} + +monster.defenses = { + defense = 10, + armor = 7, + mitigation = 0.46, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/elite_pirat.lua b/data-canary/monster/humanoids/elite_pirat.lua new file mode 100644 index 00000000000..48738c82446 --- /dev/null +++ b/data-canary/monster/humanoids/elite_pirat.lua @@ -0,0 +1,113 @@ +local mType = Game.createMonsterType("Elite Pirat") +local monster = {} + +monster.description = "an elite pirat" +monster.experience = 18000 +monster.outfit = { + lookType = 534, + lookHead = 79, + lookBody = 79, + lookLegs = 94, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 20000 +monster.maxHealth = 20000 +monster.race = "blood" +monster.corpse = 17446 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = true, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 120 }, -- gold coin + { id = 7642, chance = 100000, maxCount = 2 }, -- great spirit potion + { id = 35572, chance = 10000 }, -- pirate coin + { id = 813, chance = 4761 }, -- terra boots + { id = 813, chance = 4761 }, -- terra boots + { id = 17812, chance = 5000 }, -- ratana + { id = 17813, chance = 5000 }, -- life preserver + { id = 17817, chance = 16666 }, -- cheese cutter + { id = 17818, chance = 3846 }, -- cheesy figurine + { id = 35596, chance = 11111 }, -- mouldy powder + { id = 17820, chance = 14285 }, -- soft cheese + { id = 17821, chance = 14285 }, -- rat cheese + { id = 820, chance = 1612 }, -- lightning boots + { id = 818, chance = 3225 }, -- magma boots +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 400, maxDamage = -210 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 80, maxDamage = -110, range = 7, shootEffect = CONST_ANI_WHIRLWINDCLUB, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 15, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/enslaved_dwarf.lua b/data-canary/monster/humanoids/enslaved_dwarf.lua new file mode 100644 index 00000000000..edfbc00cf1b --- /dev/null +++ b/data-canary/monster/humanoids/enslaved_dwarf.lua @@ -0,0 +1,146 @@ +local mType = Game.createMonsterType("Enslaved Dwarf") +local monster = {} + +monster.description = "an enslaved dwarf" +monster.experience = 2700 +monster.outfit = { + lookType = 494, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 886 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Caves of the Lost and Lower Spike.", +} + +monster.health = 3800 +monster.maxHealth = 3800 +monster.race = "blood" +monster.corpse = 16063 +monster.speed = 135 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Bark!", yell = false }, + { text = "Blood!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 99 }, + { name = "gold coin", chance = 50000, maxCount = 50 }, + { name = "small emerald", chance = 10290, maxCount = 2 }, + { name = "small amethyst", chance = 10680, maxCount = 2 }, + { name = "platinum coin", chance = 100000, maxCount = 6 }, + { id = 3092, chance = 1550 }, -- axe ring + { name = "war hammer", chance = 5050 }, + { name = "warrior helmet", chance = 580 }, + { name = "guardian shield", chance = 2300 }, + { name = "tower shield", chance = 190 }, + { name = "ancient shield", chance = 3690 }, + { name = "brown mushroom", chance = 15150, maxCount = 2 }, + { name = "iron ore", chance = 11070 }, + { name = "titan axe", chance = 1170 }, + { name = "sapphire hammer", chance = 80 }, + { name = "spiked squelcher", chance = 80 }, + { name = "glorious axe", chance = 1940 }, + { name = "great mana potion", chance = 6660, maxCount = 2 }, + { name = "great health potion", chance = 7960 }, + { name = "shiny stone", chance = 4660 }, + { id = 12600, chance = 780 }, -- coal + { name = "green crystal shard", chance = 1750 }, + { name = "green crystal splinter", chance = 3110 }, + { name = "brown crystal splinter", chance = 5630, maxCount = 2 }, + { name = "red crystal fragment", chance = 3690 }, + { name = "drill bolt", chance = 3690, maxCount = 5 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -501 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -340, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -250, range = 7, radius = 3, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_EXPLOSIONHIT, target = true }, + { name = "drunk", interval = 2000, chance = 20, radius = 5, effect = CONST_ME_BLOCKHIT, target = false, duration = 6000 }, + { name = "enslaved dwarf skill reducer 1", interval = 2000, chance = 5, target = false }, + { name = "enslaved dwarf skill reducer 2", interval = 2000, chance = 5, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 60, + mitigation = 1.88, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 396, maxDamage = 478, effect = CONST_ME_MAGIC_GREEN, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -3 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 30 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/execowtioner.lua b/data-canary/monster/humanoids/execowtioner.lua new file mode 100644 index 00000000000..7de794d5cf3 --- /dev/null +++ b/data-canary/monster/humanoids/execowtioner.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Execowtioner") +local monster = {} + +monster.description = "an execowtioner" +monster.experience = 2400 +monster.outfit = { + lookType = 609, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1046 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Oramond Mountain Hideout, Oramond Minotaur Camp (northern camp), \z + Underground Glooth Factory, Oramond Dungeon.", +} + +monster.health = 3500 +monster.maxHealth = 3500 +monster.race = "blood" +monster.corpse = 21004 +monster.speed = 135 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 4, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I'm the one who puts the cute into execute!", yell = false }, + { text = "I'm here to punish!", yell = false }, + { text = "Justice is swift and unavoidable!", yell = false }, + { text = "I'll bring justice!", yell = false }, + { text = "There is excellence in execution!", yell = false }, + { text = "Your sentence is death!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 198 }, -- gold coin + { id = 3035, chance = 67610, maxCount = 3 }, -- platinum coin + { id = 9058, chance = 390 }, -- gold ingot + { id = 5911, chance = 3230 }, -- red piece of cloth + { id = 5878, chance = 14710 }, -- minotaur leather + { id = 11472, chance = 6580, maxCount = 2 }, -- minotaur horn + { id = 21201, chance = 13160 }, -- execowtioner mask + { id = 239, chance = 11480 }, -- great health potion + { id = 238, chance = 10060 }, -- great mana potion + { id = 3577, chance = 7230 }, -- meat + { id = 9057, chance = 5810, maxCount = 2 }, -- small topaz + { id = 3030, chance = 4520, maxCount = 2 }, -- small ruby + { id = 7412, chance = 900 }, -- butcher's axe + { id = 3381, chance = 770 }, -- crown armor + { id = 21176, chance = 1420 }, -- execowtioner axe + { id = 3318, chance = 770 }, -- knight axe + { id = 7413, chance = 390 }, -- titan axe + { id = 7401, chance = 520 }, -- minotaur trophy +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 80 }, + { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -135, maxDamage = -280, range = 7, radius = 5, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_DRAWBLOOD, target = true }, + { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -200, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true }, +} + +monster.defenses = { + defense = 40, + armor = 40, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 15 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/firestarter.lua b/data-canary/monster/humanoids/firestarter.lua new file mode 100644 index 00000000000..b300967de51 --- /dev/null +++ b/data-canary/monster/humanoids/firestarter.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Firestarter") +local monster = {} + +monster.description = "a firestarter" +monster.experience = 80 +monster.outfit = { + lookType = 159, + lookHead = 94, + lookBody = 77, + lookLegs = 78, + lookFeet = 79, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 737 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 2, + Locations = "Shadowthorn, during the Thornfire World Change.", +} + +monster.health = 180 +monster.maxHealth = 180 +monster.race = "blood" +monster.corpse = 18318 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "FIRE!", yell = true }, + { text = "BURN!", yell = true }, + { text = "DEATH to the FALSE GOD!!", yell = false }, + { text = "You shall burn in the thornfires!!", yell = false }, + { text = "DOWN with the followers of the bog!!", yell = false }, + { text = "Hey, what's that burnt stench... isn't that... YOU?", yell = false }, + { text = "Set everything on fire!!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 79000, maxCount = 35 }, + { name = "longsword", chance = 6000 }, + { name = "bow", chance = 4000 }, + { name = "grapes", chance = 20000 }, + { id = 5921, chance = 930 }, -- heaven blossom + { name = "elvish bow", chance = 100 }, + { name = "flaming arrow", chance = 30000, maxCount = 12 }, + { name = "elvish talisman", chance = 5000 }, + { id = 12600, chance = 15280 }, -- coal + { name = "flintstone", chance = 340 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -21, radius = 1, shootEffect = CONST_ANI_BURSTARROW, effect = CONST_ME_EXPLOSIONHIT, target = true }, + { name = "firefield", interval = 2000, chance = 10, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, +} + +monster.defenses = { + defense = 15, + armor = 15, + mitigation = 0.51, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 5 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/frost_troll.lua b/data-canary/monster/humanoids/frost_troll.lua index 531419b333f..b4eb9a60c88 100644 --- a/data-canary/monster/humanoids/frost_troll.lua +++ b/data-canary/monster/humanoids/frost_troll.lua @@ -75,14 +75,14 @@ monster.voices = { } monster.loot = { - { id = 3031, chance = 50840, maxCount = 12 }, -- gold coin + { name = "gold coin", chance = 50840, maxCount = 12 }, { id = 3130, chance = 8300 }, -- twigs - { id = 3272, chance = 15500 }, -- rapier - { id = 3277, chance = 21500 }, -- spear + { name = "rapier", chance = 15500 }, + { name = "spear", chance = 21500 }, { id = 3412, chance = 15850 }, -- wooden shield - { id = 3562, chance = 1200 }, -- coat + { name = "coat", chance = 1200 }, { id = 3578, chance = 18000 }, -- fish - { id = 9648, chance = 2000 }, -- frosty ear of a troll + { name = "frosty ear of a troll", chance = 2000 }, } monster.attacks = { @@ -91,20 +91,21 @@ monster.attacks = { monster.defenses = { defense = 15, - armor = 15, + armor = 6, + mitigation = 0.23, } monster.elements = { { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, - { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -15 }, { type = COMBAT_EARTHDAMAGE, percent = -10 }, - { type = COMBAT_FIREDAMAGE, percent = 50 }, + { type = COMBAT_FIREDAMAGE, percent = 40 }, { type = COMBAT_LIFEDRAIN, percent = 0 }, { type = COMBAT_MANADRAIN, percent = 0 }, { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, { type = COMBAT_HOLYDAMAGE, percent = 10 }, - { type = COMBAT_DEATHDAMAGE, percent = -15 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, } monster.immunities = { diff --git a/data-canary/monster/humanoids/furious_orc_berserker.lua b/data-canary/monster/humanoids/furious_orc_berserker.lua new file mode 100644 index 00000000000..5211cd9eeb6 --- /dev/null +++ b/data-canary/monster/humanoids/furious_orc_berserker.lua @@ -0,0 +1,94 @@ +local mType = Game.createMonsterType("Furious Orc Berserker") +local monster = {} + +monster.description = "a furious orc berserker" +monster.experience = 0 +monster.outfit = { + lookType = 8, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 210 +monster.maxHealth = 210 +monster.race = "blood" +monster.corpse = 5980 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "KRAK ORRRRRRK!", yell = true }, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 }, +} + +monster.defenses = { + defense = 2, + armor = 1, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = true }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/furious_troll.lua b/data-canary/monster/humanoids/furious_troll.lua new file mode 100644 index 00000000000..0b1ca133384 --- /dev/null +++ b/data-canary/monster/humanoids/furious_troll.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Furious Troll") +local monster = {} + +monster.description = "a furious troll" +monster.experience = 185 +monster.outfit = { + lookType = 281, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 540 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 1, + Locations = "Old Beregar mines.", +} + +monster.health = 245 +monster.maxHealth = 245 +monster.race = "blood" +monster.corpse = 5960 +monster.speed = 90 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 5, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "Mechanical Fighter", chance = 90, interval = 2000, count = 2 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Slice! Slice!", yell = false }, + { text = "DIE!!!", yell = true }, +} + +monster.loot = { + { name = "gold coin", chance = 93000, maxCount = 146 }, + { name = "platinum coin", chance = 6000 }, + { name = "war hammer", chance = 750 }, + { name = "bunch of troll hair", chance = 4400 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, +} + +monster.defenses = { + defense = 15, + armor = 15, + mitigation = 1.02, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/glooth_powered_minotaur.lua b/data-canary/monster/humanoids/glooth_powered_minotaur.lua new file mode 100644 index 00000000000..084000ef41a --- /dev/null +++ b/data-canary/monster/humanoids/glooth_powered_minotaur.lua @@ -0,0 +1,98 @@ +local mType = Game.createMonsterType("Glooth Powered Minotaur") +local monster = {} + +monster.description = "a glooth powered minotaur" +monster.experience = 2600 +monster.outfit = { + lookType = 607, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 3200 +monster.maxHealth = 3200 +monster.race = "blood" +monster.corpse = 20996 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "POOOWEEER!", yell = true }, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -290 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, radius = 3, effect = CONST_ME_HITAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -225, range = 7, radius = 4, effect = CONST_ME_MAGIC_RED, target = true }, +} + +monster.defenses = { + defense = 45, + armor = 40, + -- mitigation = ???, + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 145, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 95 }, + { type = COMBAT_ENERGYDAMAGE, percent = 95 }, + { type = COMBAT_EARTHDAMAGE, percent = 95 }, + { type = COMBAT_FIREDAMAGE, percent = 95 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 95 }, + { type = COMBAT_HOLYDAMAGE, percent = 95 }, + { type = COMBAT_DEATHDAMAGE, percent = 95 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/goblin.lua b/data-canary/monster/humanoids/goblin.lua index c232303a02f..20d96f107af 100644 --- a/data-canary/monster/humanoids/goblin.lua +++ b/data-canary/monster/humanoids/goblin.lua @@ -71,26 +71,26 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, - { text = "Me have him!", yell = false }, { text = "Zig Zag! Gobo attack!", yell = false }, - { text = "Help! Goblinkiller!", yell = false }, - { text = "Bugga! Bugga!", yell = false }, { text = "Me green, me mean!", yell = false }, + { text = "Bugga! Bugga!", yell = false }, + { text = "Help! Goblinkiller!", yell = false }, + { text = "Me have him!", yell = false }, } monster.loot = { - { id = 1781, chance = 15290, maxCount = 3 }, -- small stone - { id = 3031, chance = 50320, maxCount = 9 }, -- gold coin + { name = "small stone", chance = 15290, maxCount = 3 }, + { name = "gold coin", chance = 50320, maxCount = 9 }, { id = 3115, chance = 1130 }, -- bone - { id = 3120, chance = 1000 }, -- mouldy cheese - { id = 3267, chance = 1800 }, -- dagger - { id = 3294, chance = 8870 }, -- short sword - { id = 3337, chance = 4900 }, -- bone club - { id = 3355, chance = 1940 }, -- leather helmet - { id = 3361, chance = 2510 }, -- leather armor - { id = 3462, chance = 9700 }, -- small axe + { name = "mouldy cheese", chance = 1000 }, + { name = "dagger", chance = 1800 }, + { name = "short sword", chance = 8870 }, + { name = "bone club", chance = 4900 }, + { name = "leather helmet", chance = 1940 }, + { name = "leather armor", chance = 2510 }, + { name = "small axe", chance = 9700 }, { id = 3578, chance = 12750 }, -- fish - { id = 11539, chance = 910 }, -- goblin ear + { name = "goblin ear", chance = 910 }, } monster.attacks = { @@ -100,19 +100,20 @@ monster.attacks = { monster.defenses = { defense = 10, - armor = 10, + armor = 6, + mitigation = 0.20, } monster.elements = { { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, { type = COMBAT_ENERGYDAMAGE, percent = 20 }, - { type = COMBAT_EARTHDAMAGE, percent = -12 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, { type = COMBAT_FIREDAMAGE, percent = 0 }, { type = COMBAT_LIFEDRAIN, percent = 0 }, { type = COMBAT_MANADRAIN, percent = 0 }, { type = COMBAT_DROWNDAMAGE, percent = 0 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, - { type = COMBAT_HOLYDAMAGE, percent = 1 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, { type = COMBAT_DEATHDAMAGE, percent = -10 }, } diff --git a/data-canary/monster/humanoids/goblin_assassin.lua b/data-canary/monster/humanoids/goblin_assassin.lua new file mode 100644 index 00000000000..81be68826f7 --- /dev/null +++ b/data-canary/monster/humanoids/goblin_assassin.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Goblin Assassin") +local monster = {} + +monster.description = "a goblin assassin" +monster.experience = 52 +monster.outfit = { + lookType = 296, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 463 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Femor Hills, Edron Goblin Cave and Fenrock.", +} + +monster.health = 75 +monster.maxHealth = 75 +monster.race = "blood" +monster.corpse = 6002 +monster.speed = 70 +monster.manaCost = 360 + +monster.changeTarget = { + interval = 10000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Goblin Powahhh!", yell = false }, + { text = "Me kill you!", yell = false }, + { text = "Me green menace!", yell = false }, + { text = "Gobabunga!", yell = false }, + { text = "Gooobliiiins!", yell = false }, +} + +monster.loot = { + { name = "small stone", chance = 9900, maxCount = 3 }, + { name = "gold coin", chance = 50000, maxCount = 9 }, + { id = 3115, chance = 13000 }, -- bone + { name = "mouldy cheese", chance = 6610 }, + { name = "dagger", chance = 17000 }, + { name = "short sword", chance = 8820 }, + { name = "bone club", chance = 4770 }, + { name = "leather helmet", chance = 13000 }, + { name = "leather armor", chance = 7240 }, + { name = "small axe", chance = 9800 }, + { id = 3578, chance = 12400 }, -- fish +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, + { name = "drunk", interval = 2000, chance = 10, shootEffect = CONST_ANI_POISON, target = false, duration = 10000 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -35, range = 6, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 6, + mitigation = 0.15, + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, + { name = "speed", interval = 2000, chance = 15, speedChange = 100, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/goblin_leader.lua b/data-canary/monster/humanoids/goblin_leader.lua new file mode 100644 index 00000000000..39edb35ec96 --- /dev/null +++ b/data-canary/monster/humanoids/goblin_leader.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Goblin Leader") +local monster = {} + +monster.description = "a goblin leader" +monster.experience = 75 +monster.outfit = { + lookType = 61, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 377 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 30, + Stars = 2, + Occurrence = 3, + Locations = "Way to Beregar, below Femor Hills (Tower Defence Quest), near Femor Hills during Goblin raid.", +} + +monster.health = 50 +monster.maxHealth = 50 +monster.race = "blood" +monster.corpse = 6002 +monster.speed = 60 +monster.manaCost = 290 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.events = { + "GoblinLeaderDeath", +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Go go, Gobo attack!!", yell = false }, + { text = "Me the greenest and the meanest!", yell = false }, + { text = "Me have power to crush you!", yell = false }, + { text = "Goblinkiller! Catch him !!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 40000, maxCount = 10 }, + { id = 3115, chance = 11500 }, -- bone + { name = "mouldy cheese", chance = 9000 }, + { name = "dagger", chance = 10300 }, + { name = "short sword", chance = 15400 }, + { name = "bone club", chance = 1300 }, + { name = "leather helmet", chance = 16670 }, + { name = "leather armor", chance = 5000 }, + { name = "small axe", chance = 12800 }, + { id = 3578, chance = 15000 }, -- fish +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -45, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, +} + +monster.defenses = { + defense = 10, + armor = 7, + mitigation = 0.33, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/goblin_scavenger.lua b/data-canary/monster/humanoids/goblin_scavenger.lua new file mode 100644 index 00000000000..7bb4951248b --- /dev/null +++ b/data-canary/monster/humanoids/goblin_scavenger.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Goblin Scavenger") +local monster = {} + +monster.description = "a goblin scavenger" +monster.experience = 37 +monster.outfit = { + lookType = 297, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 464 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Femor Hills, Edron Goblin Cave, and Fenrock.", +} + +monster.health = 60 +monster.maxHealth = 60 +monster.race = "blood" +monster.corpse = 6002 +monster.speed = 66 +monster.manaCost = 310 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Shiny, shiny!", yell = false }, + { text = "You mean!", yell = false }, + { text = "All mine!", yell = false }, + { text = "Uhh!", yell = false }, + { text = "Gimme gimme!", yell = false }, +} + +monster.loot = { + { name = "small stone", chance = 25560, maxCount = 2 }, + { name = "gold coin", chance = 50810, maxCount = 9 }, + { id = 3115, chance = 12450 }, -- bone + { name = "mouldy cheese", chance = 7000 }, + { name = "dagger", chance = 18280 }, + { name = "short sword", chance = 8900 }, + { name = "bone club", chance = 5000 }, + { name = "leather helmet", chance = 10180 }, + { name = "leather armor", chance = 7700 }, + { name = "small axe", chance = 9790 }, + { id = 3578, chance = 13640 }, -- fish +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -30, range = 7, shootEffect = CONST_ANI_SPEAR, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_LIFEDRAIN, minDamage = -22, maxDamage = -30, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -1, maxDamage = -30, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 7, + mitigation = 0.23, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 16, effect = CONST_ME_ENERGYHIT, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/insane_siren.lua b/data-canary/monster/humanoids/insane_siren.lua new file mode 100644 index 00000000000..b5a6d3acddd --- /dev/null +++ b/data-canary/monster/humanoids/insane_siren.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Insane Siren") +local monster = {} + +monster.description = "an insane siren" +monster.experience = 6000 +monster.outfit = { + lookType = 1136, + lookHead = 72, + lookBody = 94, + lookLegs = 79, + lookFeet = 4, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 1735 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Court of Summer.", +} + +monster.health = 6500 +monster.maxHealth = 6500 +monster.race = "blood" +monster.corpse = 30133 +monster.speed = 210 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Dream or nightmare?", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 12 }, + { name = "ultimate health potion", chance = 14970 }, + { name = "miraculum", chance = 13090 }, + { name = "dream essence egg", chance = 11980 }, + { name = "wand of draconia", chance = 7700 }, + { name = "holy orchid", chance = 5650 }, + { name = "magma amulet", chance = 5130 }, + { name = "wand of inferno", chance = 4360 }, + { name = "fire axe", chance = 3590 }, + { name = "magma coat", chance = 3340 }, + { name = "wand of dragonbreath", chance = 2650 }, + { name = "sun fruit", chance = 2570 }, + { name = "magma legs", chance = 1200 }, + { name = "magma monocle", chance = 260 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 2300, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -300, length = 3, spread = 0, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 2600, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -300, radius = 1, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 2900, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 3200, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -300, radius = 3, effect = CONST_ME_EXPLOSIONHIT, target = true }, + { name = "combat", interval = 3500, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -300, range = 6, effect = CONST_ME_FIREATTACK, target = true }, + { name = "combat", interval = 3800, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -300, range = 6, radius = 2, effect = CONST_ME_FIREAREA, target = true }, + { name = "sparks chain", interval = 4100, chance = 17, minDamage = -100, maxDamage = -200, range = 3, target = true }, +} + +monster.defenses = { + defense = 20, + armor = 76, + mitigation = 2.11, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 55 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -20 }, + { type = COMBAT_HOLYDAMAGE, percent = 25 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/island_troll.lua b/data-canary/monster/humanoids/island_troll.lua index dcc7b486d05..6fb3c99e5c4 100644 --- a/data-canary/monster/humanoids/island_troll.lua +++ b/data-canary/monster/humanoids/island_troll.lua @@ -60,6 +60,7 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = false, + isPreyExclusive = true, } monster.light = { @@ -79,17 +80,17 @@ monster.voices = { monster.loot = { { id = 3003, chance = 8000 }, -- rope - { id = 3031, chance = 60000, maxCount = 10 }, -- gold coin - { id = 3054, chance = 70 }, -- silver amulet - { id = 3268, chance = 18000 }, -- hand axe - { id = 3277, chance = 20000 }, -- spear - { id = 3336, chance = 5000 }, -- studded club - { id = 3355, chance = 10000 }, -- leather helmet + { name = "gold coin", chance = 60000, maxCount = 10 }, + { name = "silver amulet", chance = 70 }, + { name = "hand axe", chance = 18000 }, + { name = "spear", chance = 20000 }, + { name = "studded club", chance = 5000 }, + { name = "leather helmet", chance = 10000 }, { id = 3412, chance = 16000 }, -- wooden shield - { id = 3552, chance = 10500 }, -- leather boots - { id = 5096, chance = 5000 }, -- mango + { name = "leather boots", chance = 10500 }, + { name = "mango", chance = 5000 }, { id = 5901, chance = 30000 }, -- wood - { id = 901, chance = 40 }, -- marlin + { name = "marlin", chance = 40 }, } monster.attacks = { @@ -98,7 +99,8 @@ monster.attacks = { monster.defenses = { defense = 10, - armor = 10, + armor = 6, + mitigation = 0.20, } monster.elements = { diff --git a/data-canary/monster/humanoids/little_corym_charlatan.lua b/data-canary/monster/humanoids/little_corym_charlatan.lua new file mode 100644 index 00000000000..4f364eaa856 --- /dev/null +++ b/data-canary/monster/humanoids/little_corym_charlatan.lua @@ -0,0 +1,111 @@ +local mType = Game.createMonsterType("Little Corym Charlatan") +local monster = {} + +monster.description = "a little corym charlatan" +monster.experience = 40 +monster.outfit = { + lookType = 532, + lookHead = 0, + lookBody = 79, + lookLegs = 80, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 920 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 1, + Locations = "Venore marshes.", +} + +monster.health = 90 +monster.maxHealth = 90 +monster.race = "blood" +monster.corpse = 17449 +monster.speed = 85 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, +} + +monster.defenses = { + defense = 10, + armor = 3, + mitigation = 0.23, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/lost_basher.lua b/data-canary/monster/humanoids/lost_basher.lua new file mode 100644 index 00000000000..f8866bdd177 --- /dev/null +++ b/data-canary/monster/humanoids/lost_basher.lua @@ -0,0 +1,141 @@ +local mType = Game.createMonsterType("Lost Basher") +local monster = {} + +monster.description = "a lost basher" +monster.experience = 2300 +monster.outfit = { + lookType = 538, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 925 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Caves of the Lost, Lower Spike and in the Lost Dwarf version of the Forsaken Mine.", +} + +monster.health = 2600 +monster.maxHealth = 2600 +monster.race = "blood" +monster.corpse = 17683 +monster.speed = 130 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Yhouuuu!", yell = false }, +} + +monster.loot = { + { name = "piggy bank", chance = 4450 }, + { name = "gold coin", chance = 60000, maxCount = 100 }, + { name = "platinum coin", chance = 70000, maxCount = 2 }, + { name = "fire axe", chance = 310 }, + { name = "war axe", chance = 120 }, + { name = "knight legs", chance = 310 }, + { name = "black shield", chance = 3710 }, + { name = "brown mushroom", chance = 15170, maxCount = 2 }, + { name = "iron ore", chance = 5280 }, + { name = "chaos mace", chance = 160 }, + { name = "spiked squelcher", chance = 420 }, + { name = "great mana potion", chance = 11240 }, + { name = "terra boots", chance = 780 }, + { name = "ultimate health potion", chance = 10250 }, + { name = "small topaz", chance = 10200 }, + { id = 12600, chance = 21130 }, -- coal + { name = "blue crystal shard", chance = 840 }, + { name = "lost basher's spike", chance = 17260 }, + { name = "lost basher's spike", chance = 14380 }, + { name = "bloody dwarven beard", chance = 1730 }, + { name = "pair of iron fists", chance = 1410 }, + { name = "buckle", chance = 10930 }, + { name = "bonecarving knife", chance = 7320 }, + { name = "basalt fetish", chance = 8800 }, + { name = "basalt figurine", chance = 9470 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -351 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -220, range = 7, radius = 3, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true }, + { name = "drunk", interval = 2000, chance = 15, radius = 4, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_SOUND_RED, target = true, duration = 6000 }, + { name = "speed", interval = 2000, chance = 15, speedChange = -650, radius = 2, effect = CONST_ME_ENERGYHIT, target = false, duration = 15000 }, +} + +monster.defenses = { + defense = 30, + armor = 57, + mitigation = 1.62, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 250, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/lost_berserker.lua b/data-canary/monster/humanoids/lost_berserker.lua new file mode 100644 index 00000000000..cbc7012ff95 --- /dev/null +++ b/data-canary/monster/humanoids/lost_berserker.lua @@ -0,0 +1,144 @@ +local mType = Game.createMonsterType("Lost Berserker") +local monster = {} + +monster.description = "a lost berserker" +monster.experience = 4800 +monster.outfit = { + lookType = 496, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 888 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Warzones 2 and 3.", +} + +monster.health = 5900 +monster.maxHealth = 5900 +monster.race = "blood" +monster.corpse = 16071 +monster.speed = 150 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 15, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Kill! Kiill! Kill!", yell = false }, + { text = "Death! Death! Death!", yell = false }, +} + +monster.loot = { + { name = "piggy bank", chance = 3920 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "platinum coin", chance = 100000, maxCount = 9 }, + { id = 3097, chance = 2280 }, -- dwarven ring + { name = "knight axe", chance = 2070 }, + { name = "fire axe", chance = 380 }, + { name = "royal helmet", chance = 150 }, + { name = "guardian shield", chance = 1400 }, + { name = "tower shield", chance = 1002 }, + { name = "black shield", chance = 640 }, + { name = "brown mushroom", chance = 15190, maxCount = 2 }, + { name = "iron ore", chance = 8490 }, + { name = "magic sulphur", chance = 720 }, + { name = "chaos mace", chance = 550 }, + { name = "spiked squelcher", chance = 810 }, + { name = "great mana potion", chance = 13650 }, + { name = "great health potion", chance = 13650 }, + { name = "terra boots", chance = 640 }, + { name = "small topaz", chance = 7970, maxCount = 2 }, + { name = "clay lump", chance = 930 }, + { id = 12600, chance = 2050 }, -- coal + { name = "violet crystal shard", chance = 3500 }, + { name = "brown crystal splinter", chance = 7540, maxCount = 2 }, + { name = "blue crystal splinter", chance = 4610 }, + { name = "green crystal fragment", chance = 6870 }, + { name = "drill bolt", chance = 8210, maxCount = 10 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -501 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -250, range = 7, radius = 3, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_EXPLOSIONAREA, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -100, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = -800, radius = 2, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, +} + +monster.defenses = { + defense = 40, + armor = 80, + mitigation = 2.40, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/lost_exile.lua b/data-canary/monster/humanoids/lost_exile.lua new file mode 100644 index 00000000000..fa024e08b1d --- /dev/null +++ b/data-canary/monster/humanoids/lost_exile.lua @@ -0,0 +1,151 @@ +local mType = Game.createMonsterType("Lost Exile") +local monster = {} + +monster.description = "a lost exile" +monster.experience = 1800 +monster.outfit = { + lookType = 537, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "LastExileDeath", +} + +monster.raceId = 1529 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "South east of the Gnome Deep Hub's entrance.", +} + +monster.health = 1600 +monster.maxHealth = 1600 +monster.race = "blood" +monster.corpse = 17684 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "**", yell = false }, + { text = "**", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 200 }, + { name = "platinum coin", chance = 60240, maxCount = 2 }, + { name = "strong health potion", chance = 10950, maxCount = 2 }, + { name = "great mana potion", chance = 8330, maxCount = 2 }, + { name = "brown mushroom", chance = 16900, maxCount = 2 }, + { id = 12600, chance = 13100 }, -- coal + { name = "holy ash", chance = 13100 }, + { name = "small topaz", chance = 10240 }, + { name = "lost husher's staff", chance = 6900 }, + { name = "skull shatterer", chance = 7620 }, + { name = "wimp tooth chain", chance = 11900 }, + { name = "red hair dye", chance = 12620 }, + { name = "basalt fetish", chance = 8100 }, + { name = "bonecarving knife", chance = 8100 }, + { name = "basalt figurine", chance = 8100 }, + { name = "bone fetish", chance = 8881 }, + { id = 3097, chance = 1043 }, -- dwarven ring + { name = "guardian shield", chance = 1430 }, + { name = "buckle", chance = 1900 }, + { name = "clay lump", chance = 710 }, + { name = "knight axe", chance = 950 }, + { name = "terra boots", chance = 240 }, + { name = "suspicious device", chance = 250 }, + { name = "tower shield", chance = 240 }, + { name = "terra legs", chance = 240 }, + { name = "fire axe", chance = 710 }, + { name = "skull staff", chance = 480 }, + { name = "spiked squelcher", chance = 240 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120 }, + { name = "sudden death rune", interval = 2000, chance = 15, minDamage = -150, maxDamage = -350, range = 3, length = 6, spread = 0, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -150, maxDamage = -250, range = 3, length = 5, spread = 5, effect = CONST_ME_SMOKE, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -290, range = 3, length = 5, spread = 5, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_POISONAREA, target = false }, + { name = "sudden death rune", interval = 2000, chance = 15, minDamage = -70, maxDamage = -250, range = 7, target = false }, + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, target = false, duration = 5000 }, +} + +monster.defenses = { + defense = 20, + armor = 20, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 0, maxDamage = 160, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/lost_husher.lua b/data-canary/monster/humanoids/lost_husher.lua new file mode 100644 index 00000000000..419bae1ab96 --- /dev/null +++ b/data-canary/monster/humanoids/lost_husher.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Lost Husher") +local monster = {} + +monster.description = "a lost husher" +monster.experience = 1100 +monster.outfit = { + lookType = 537, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 924 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Caves of the Lost, Lower Spike and in the Lost Dwarf version of the Forsaken Mine.", +} + +monster.health = 1600 +monster.maxHealth = 1600 +monster.race = "blood" +monster.corpse = 17684 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Arr far zwar!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "platinum coin", chance = 58670, maxCount = 2 }, + { name = "fire axe", chance = 330 }, + { name = "skull staff", chance = 280 }, + { name = "guardian shield", chance = 830 }, + { name = "tower shield", chance = 440 }, + { name = "brown mushroom", chance = 14920, maxCount = 2 }, + { name = "spiked squelcher", chance = 50 }, + { name = "strong health potion", chance = 11050, maxCount = 3 }, + { name = "great mana potion", chance = 10770, maxCount = 2 }, + { name = "terra legs", chance = 50 }, + { name = "terra boots", chance = 880 }, + { name = "small topaz", chance = 9780 }, + { name = "clay lump", chance = 500 }, + { id = 12600, chance = 10930 }, -- coal + { name = "buckle", chance = 8180 }, + { name = "buckle", chance = 770 }, + { name = "bonecarving knife", chance = 8510 }, + { name = "wimp tooth chain", chance = 8950 }, + { name = "skull shatterer", chance = 12320 }, + { name = "red hair dye", chance = 8510 }, + { name = "basalt figurine", chance = 8560 }, +} + +monster.attacks = { + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -300, length = 6, spread = 0, effect = CONST_ME_BLACKSMOKE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -250, range = 7, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_MAGIC_GREEN, target = true }, + { name = "drunk", interval = 2000, chance = 10, radius = 4, effect = CONST_ME_SOUND_RED, target = false, duration = 6000 }, +} + +monster.defenses = { + defense = 25, + armor = 55, + mitigation = 1.35, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 75, maxDamage = 92, effect = CONST_ME_YELLOWENERGY, target = false }, + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_TELEPORT }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/lost_thrower.lua b/data-canary/monster/humanoids/lost_thrower.lua new file mode 100644 index 00000000000..21a14bce085 --- /dev/null +++ b/data-canary/monster/humanoids/lost_thrower.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Lost Thrower") +local monster = {} + +monster.description = "a lost thrower" +monster.experience = 1500 +monster.outfit = { + lookType = 539, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 926 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Caves of the Lost, Lower Spike and in the Lost Dwarf version of the Forsaken Mine.", +} + +monster.health = 1700 +monster.maxHealth = 1700 +monster.race = "blood" +monster.corpse = 17718 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 37 }, + { name = "platinum coin", chance = 70000, maxCount = 2 }, + { name = "brown mushroom", chance = 14500, maxCount = 2 }, + { name = "iron ore", chance = 9470 }, + { name = "great mana potion", chance = 13470 }, + { name = "great health potion", chance = 14730 }, + { id = 12600, chance = 12180 }, -- coal + { name = "buckle", chance = 850 }, + { name = "broken throwing axe", chance = 1390 }, + { name = "helmet of the lost", chance = 13560 }, + { name = "lost bracers", chance = 14860 }, + { name = "mad froth", chance = 11810 }, + { name = "basalt fetish", chance = 6150 }, + { name = "basalt figurine", chance = 7900 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -301 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -250, range = 7, radius = 1, shootEffect = CONST_ANI_THROWINGSTAR, effect = CONST_ME_EXPLOSIONAREA, target = true }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, range = 7, radius = 2, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -300, range = 7, radius = 2, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_STUN, target = true }, + { name = "drunk", interval = 2000, chance = 10, radius = 3, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true, duration = 6000 }, +} + +monster.defenses = { + defense = 30, + armor = 50, + mitigation = 1.40, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 100, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_TELEPORT }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/minotaur.lua b/data-canary/monster/humanoids/minotaur.lua new file mode 100644 index 00000000000..b4a2b39e037 --- /dev/null +++ b/data-canary/monster/humanoids/minotaur.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Minotaur") +local monster = {} + +monster.description = "a minotaur" +monster.experience = 50 +monster.outfit = { + lookType = 25, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 25 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Mino Hell (Rookgaard), Two outside Bear Room Quest, (Rookgaard) and also 2x on the premium side, \z + Mintwallin, Folda, Minotaur Pyramid, Outlaw Camp, Kazordoon minotaur cave, Plains of Havoc, Elven Bane, \z + Deeper Fibula Dungeon (level 50+ to open the door), Ancient Temple, Maze of Lost Souls, \z + Thais Minotaur Camp, Foreigner Quarter.", +} + +monster.health = 100 +monster.maxHealth = 100 +monster.race = "blood" +monster.corpse = 5969 +monster.speed = 84 +monster.manaCost = 330 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Kaplar!", yell = false }, + { text = "Hurr", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 67500, maxCount = 25 }, + { name = "bronze amulet", chance = 110 }, + { id = 3264, chance = 5000 }, -- sword + { name = "axe", chance = 4000 }, + { name = "mace", chance = 12840 }, + { name = "brass helmet", chance = 7700 }, + { name = "chain armor", chance = 10000 }, + { name = "plate shield", chance = 20020 }, + { id = 3457, chance = 310 }, -- shovel + { name = "meat", chance = 5000 }, + { name = "minotaur leather", chance = 990 }, + { name = "minotaur horn", chance = 2090, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, +} + +monster.defenses = { + defense = 15, + armor = 11, + mitigation = 0.28, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/minotaur_amazon.lua b/data-canary/monster/humanoids/minotaur_amazon.lua new file mode 100644 index 00000000000..7139b2bc776 --- /dev/null +++ b/data-canary/monster/humanoids/minotaur_amazon.lua @@ -0,0 +1,141 @@ +local mType = Game.createMonsterType("Minotaur Amazon") +local monster = {} + +monster.description = "a minotaur amazon" +monster.experience = 2200 +monster.outfit = { + lookType = 608, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1045 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Underground Glooth Factory, Oramond Minotaur Camp, Oramond Dungeon", +} + +monster.health = 2600 +monster.maxHealth = 2600 +monster.race = "blood" +monster.corpse = 21000 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 11, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 240, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I'll protect the herd!", yell = false }, + { text = "Never surrender!", yell = false }, + { text = "You won't hurt us!", yell = false }, +} + +monster.loot = { + { id = 7368, chance = 3040, maxCount = 5 }, -- assassin star + { id = 21204, chance = 19830 }, -- cowbell + { id = 3031, chance = 100000, maxCount = 196 }, -- gold coin + { id = 3582, chance = 60780 }, -- ham + { id = 3577, chance = 4920 }, -- meat + { id = 3035, chance = 62080, maxCount = 3 }, -- platinum coin + { id = 9058, chance = 290 }, -- gold ingot + { id = 5878, chance = 17950 }, -- minotaur leather + { id = 239, chance = 7670 }, -- great health potion + { id = 238, chance = 7380 }, -- great mana potion + { id = 11472, chance = 6800, maxCount = 2 }, -- minotaur horn + { id = 3098, chance = 3040 }, -- ring of healing + { id = 3030, chance = 5500, maxCount = 2 }, -- small ruby + { id = 9057, chance = 900, maxCount = 2 }, -- small topaz + { id = 3033, chance = 970, maxCount = 2 }, -- small amethyst + { id = 3032, chance = 4050, maxCount = 2 }, -- small emerald + { id = 21175, chance = 3040 }, -- mino shield + { id = 21174, chance = 1740 }, -- mino lance + { id = 5911, chance = 710 }, -- red piece of cloth + { id = 3039, chance = 430 }, -- red gem + { id = 3081, chance = 850 }, -- stone skin amulet + { id = 3037, chance = 870 }, -- yellow gem + { id = 3369, chance = 1160 }, -- warrior helmet + { id = 7443, chance = 720 }, -- bullseye potion +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 50 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -305, length = 8, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 16, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 22, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -150, range = 7, shootEffect = CONST_ANI_HUNTINGSPEAR, effect = CONST_ME_EXPLOSIONAREA, target = false }, + -- bleed + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 40, minDamage = -300, maxDamage = -400, radius = 4, effect = CONST_ME_DRAWBLOOD, shootEffect = CONST_ANI_THROWINGKNIFE, target = true }, + { name = "minotaur amazon paralyze", interval = 2000, chance = 15, target = false }, +} + +monster.defenses = { + defense = 35, + armor = 37, + mitigation = 1.18, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/minotaur_archer.lua b/data-canary/monster/humanoids/minotaur_archer.lua new file mode 100644 index 00000000000..31274a91737 --- /dev/null +++ b/data-canary/monster/humanoids/minotaur_archer.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Minotaur Archer") +local monster = {} + +monster.description = "a minotaur archer" +monster.experience = 65 +monster.outfit = { + lookType = 24, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 24 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Ancient Temple, way to Mintwallin, Folda Underground Cave, Outlaw Camp, Plains of Havoc, \z + Kazordoon Minotaur Tower, Daramian Minotaur Pyramid, Deeper Fibula Dungeon (level 50+ to open the door), \z + Hero Cave, Foreigner Quarter and Elvenbane.", +} + +monster.health = 100 +monster.maxHealth = 100 +monster.race = "blood" +monster.corpse = 5982 +monster.speed = 80 +monster.manaCost = 390 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Ruan Wihmpy!", yell = false }, + { text = "Kaplar!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 75410, maxCount = 30 }, + { name = "crossbow", chance = 830 }, + { name = "brass armor", chance = 530 }, + { name = "scale armor", chance = 530 }, + { name = "bolt", chance = 90450, maxCount = 20 }, + { name = "meat", chance = 5000 }, + { name = "minotaur leather", chance = 1900 }, + { name = "piercing bolt", chance = 12340, maxCount = 4 }, + { name = "broken crossbow", chance = 15400 }, + { name = "minotaur horn", chance = 1990, maxCount = 2 }, + { name = "piece of archer armor", chance = 8260 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -80, range = 7, shootEffect = CONST_ANI_BOLT, target = false }, +} + +monster.defenses = { + defense = 10, + armor = 6, + mitigation = 0.20, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/minotaur_bruiser.lua b/data-canary/monster/humanoids/minotaur_bruiser.lua new file mode 100644 index 00000000000..51eb241298c --- /dev/null +++ b/data-canary/monster/humanoids/minotaur_bruiser.lua @@ -0,0 +1,110 @@ +local mType = Game.createMonsterType("Minotaur Bruiser") +local monster = {} + +monster.description = "a minotaur bruiser" +monster.experience = 50 +monster.outfit = { + lookType = 25, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "MorrisMinotaurDeath", +} + +monster.health = 100 +monster.maxHealth = 100 +monster.race = "blood" +monster.corpse = 5969 +monster.speed = 84 +monster.manaCost = 330 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3031, chance = 65700, maxCount = 15 }, -- gold coin + { id = 3410, chance = 20000 }, -- plate shield + { id = 3286, chance = 12900 }, -- mace + { id = 3358, chance = 10000 }, -- chain armor + { id = 3354, chance = 7800 }, -- brass helmet + { id = 3264, chance = 5000 }, -- sword + { id = 3577, chance = 5000 }, -- meat + { id = 3274, chance = 4000 }, -- axe + { id = 11472, chance = 2000, maxCount = 2 }, -- minotaur horn + { id = 5878, chance = 980 }, -- minotaur leather + { id = 3457, chance = 310 }, -- shovel +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, +} + +monster.defenses = { + defense = 15, + armor = 11, + mitigation = 0.18, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/minotaur_cult_follower.lua b/data-canary/monster/humanoids/minotaur_cult_follower.lua new file mode 100644 index 00000000000..18883c46827 --- /dev/null +++ b/data-canary/monster/humanoids/minotaur_cult_follower.lua @@ -0,0 +1,141 @@ +local mType = Game.createMonsterType("Minotaur Cult Follower") +local monster = {} + +monster.description = "a minotaur cult follower" +monster.experience = 950 +monster.outfit = { + lookType = 25, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "MinotaurCultTaskDeath", +} + +monster.raceId = 1508 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Minotaurs Cult Cave", +} + +monster.health = 1600 +monster.maxHealth = 1600 +monster.race = "blood" +monster.corpse = 5969 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "We will rule!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 150 }, + { name = "cowbell", chance = 22480 }, + { name = "cultish robe", chance = 14720 }, + { name = "plate shield", chance = 20020 }, + { name = "great health potion", chance = 11840 }, + { name = "small ruby", chance = 3690, maxCount = 2 }, + { name = "small topaz", chance = 3170, maxCount = 2 }, + { name = "yellow gem", chance = 280 }, + { name = "platinum coin", chance = 65250, maxCount = 3 }, + { name = "plate shield", chance = 20710 }, + { name = "small emerald", chance = 3410, maxCount = 2 }, + { name = "small amethyst", chance = 2950, maxCount = 2 }, + { name = "red piece of cloth", chance = 810 }, + { name = "ham", chance = 59410 }, + { name = "bronze amulet", chance = 15140 }, + { name = "mino shield", chance = 12670 }, + { id = 3098, chance = 3190 }, -- ring of healing + { name = "mino lance", chance = 1810 }, + { name = "warrior helmet", chance = 570 }, + { id = 3039, chance = 170 }, -- red gem + { name = "meat", chance = 8020 }, + { name = "minotaur leather", chance = 11530 }, + { name = "minotaur horn", chance = 14550, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -110, maxDamage = -210, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 32, + mitigation = 1.24, + { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/minotaur_cult_prophet.lua b/data-canary/monster/humanoids/minotaur_cult_prophet.lua new file mode 100644 index 00000000000..5f86e2de209 --- /dev/null +++ b/data-canary/monster/humanoids/minotaur_cult_prophet.lua @@ -0,0 +1,140 @@ +local mType = Game.createMonsterType("Minotaur Cult Prophet") +local monster = {} + +monster.description = "a minotaur cult prophet" +monster.experience = 1100 +monster.outfit = { + lookType = 23, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "MinotaurCultTaskDeath", +} + +monster.raceId = 1509 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Minotaurs Cult Cave", +} + +monster.health = 1700 +monster.maxHealth = 1700 +monster.race = "blood" +monster.corpse = 5981 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Bow to the power of the iron bull!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 150 }, + { name = "cowbell", chance = 18570 }, + { name = "moonlight rod", chance = 8480 }, + { name = "cultish robe", chance = 15450 }, + { name = "great health potion", chance = 7070 }, + { name = "great mana potion", chance = 16810 }, + { name = "gold ingot", chance = 1120 }, + { name = "small ruby", chance = 7160 }, + { name = "small topaz", chance = 7650 }, + { name = "yellow gem", chance = 490 }, + { name = "platinum coin", chance = 67040, maxCount = 3 }, + { name = "small emerald", chance = 11160 }, + { name = "small diamond", chance = 2900, maxCount = 2 }, + { name = "small amethyst", chance = 6680, maxCount = 2 }, + { name = "red piece of cloth", chance = 630 }, + { id = 3098, chance = 6730 }, -- ring of healing + { id = 3039, chance = 390 }, -- red gem + { name = "meat", chance = 8040 }, + { name = "ham", chance = 60140 }, + { name = "minotaur leather", chance = 14230 }, + { name = "minotaur horn", chance = 18270, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -350, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, +} + +monster.defenses = { + defense = 15, + armor = 28, + mitigation = 1.10, + { name = "Minotaur Cult Prophet Mass Healing", interval = 2000, chance = 20, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/minotaur_cult_zealot.lua b/data-canary/monster/humanoids/minotaur_cult_zealot.lua new file mode 100644 index 00000000000..571d3faa060 --- /dev/null +++ b/data-canary/monster/humanoids/minotaur_cult_zealot.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Minotaur Cult Zealot") +local monster = {} + +monster.description = "a minotaur cult zealot" +monster.experience = 1350 +monster.outfit = { + lookType = 29, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "MinotaurCultTaskDeath", +} + +monster.raceId = 1510 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Minotaurs Cult Cave", +} + +monster.health = 1800 +monster.maxHealth = 1800 +monster.race = "blood" +monster.corpse = 5983 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 150 }, + { name = "snakebite rod", chance = 11670 }, + { name = "taurus mace", chance = 5360 }, + { name = "cultish robe", chance = 9200 }, + { name = "purple robe", chance = 16230 }, + { name = "strong mana potion", chance = 10660, maxCount = 3 }, + { name = "small ruby", chance = 2030, maxCount = 2 }, + { name = "small topaz", chance = 2680, maxCount = 2 }, + { name = "yellow gem", chance = 220 }, + { name = "platinum coin", chance = 39350, maxCount = 3 }, + { name = "small emerald", chance = 2540, maxCount = 2 }, + { name = "small sapphire", chance = 2170, maxCount = 2 }, + { name = "small diamond", chance = 2900, maxCount = 2 }, + { name = "small amethyst", chance = 2610, maxCount = 2 }, + { name = "red piece of cloth", chance = 2460 }, + { id = 3039, chance = 70 }, -- red gem + { name = "minotaur leather", chance = 4780 }, + { name = "minotaur horn", chance = 2320, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -340 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -320, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true }, +} + +monster.defenses = { + defense = 30, + armor = 35, + mitigation = 1.37, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/minotaur_guard.lua b/data-canary/monster/humanoids/minotaur_guard.lua new file mode 100644 index 00000000000..4f09a214a4b --- /dev/null +++ b/data-canary/monster/humanoids/minotaur_guard.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Minotaur Guard") +local monster = {} + +monster.description = "a minotaur guard" +monster.experience = 160 +monster.outfit = { + lookType = 29, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 29 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Ancient Temple, Mintwallin, Minotaur Pyramid, Maze of Lost Souls, Folda, Cyclopolis, \z + Deeper Fibula Dungeon (level 50+ to open the door), Hero Cave, underground of Elvenbane, \z + Plains of Havoc, Kazordoon Minotaur Cave, Foreigner Quarter.", +} + +monster.health = 185 +monster.maxHealth = 185 +monster.race = "blood" +monster.corpse = 5983 +monster.speed = 95 +monster.manaCost = 550 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 20, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Kirrl Karrrl!", yell = false }, + { text = "Kaplar", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 59640, maxCount = 20 }, + { name = "double axe", chance = 400 }, + { name = "chain armor", chance = 2980 }, + { name = "brass armor", chance = 4390 }, + { name = "battle shield", chance = 2150 }, + { name = "fishing rod", chance = 480 }, + { name = "minotaur leather", chance = 1000 }, + { id = 7401, chance = 80 }, -- minotaur trophy + { name = "health potion", chance = 400 }, + { name = "minotaur horn", chance = 8330, maxCount = 2 }, + { name = "piece of warrior armor", chance = 5040 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, +} + +monster.defenses = { + defense = 20, + armor = 15, + mitigation = 0.83, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/minotaur_hunter.lua b/data-canary/monster/humanoids/minotaur_hunter.lua new file mode 100644 index 00000000000..40305444f68 --- /dev/null +++ b/data-canary/monster/humanoids/minotaur_hunter.lua @@ -0,0 +1,142 @@ +local mType = Game.createMonsterType("Minotaur Hunter") +local monster = {} + +monster.description = "a minotaur hunter" +monster.experience = 1700 +monster.outfit = { + lookType = 612, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1052 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Oramond/Southern Plains, Minotaur Hills, \z + Oramond Dungeon (depending on Magistrate votes), Underground Glooth Factory.", +} + +monster.health = 1400 +monster.maxHealth = 1400 +monster.race = "blood" +monster.corpse = 21095 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 11, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 300, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You are marked for death!", yell = false }, + { text = "This time the prey is you!", yell = false }, + { text = "You are hunted!", yell = false }, + { text = "You'll make a fine trophy!", yell = false }, + { text = "Bullseye!", yell = false }, +} + +monster.loot = { + { id = 3147, chance = 13600, maxCount = 2 }, -- blank rune + { id = 3031, chance = 99500, maxCount = 199 }, -- gold coin + { id = 3347, chance = 14880, maxCount = 5 }, -- hunting spear + { id = 3035, chance = 33890, maxCount = 3 }, -- platinum coin + { id = 7378, chance = 11410, maxCount = 5 }, -- royal spear + { id = 236, chance = 10350, maxCount = 2 }, -- strong health potion + { id = 237, chance = 10620, maxCount = 2 }, -- strong mana potion + { id = 5944, chance = 7430 }, -- soul orb + { id = 5878, chance = 5030 }, -- minotaur leather + { id = 11472, chance = 4720, maxCount = 2 }, -- minotaur horn + { id = 3030, chance = 2640, maxCount = 3 }, -- small ruby + { id = 3033, chance = 2580, maxCount = 3 }, -- small amethyst + { id = 3049, chance = 2220 }, -- stealth ring + { id = 5912, chance = 1670 }, -- blue piece of cloth + { id = 5910, chance = 1420 }, -- green piece of cloth + { id = 5911, chance = 1360 }, -- red piece of cloth + { id = 21175, chance = 640 }, -- mino shield + { id = 3037, chance = 470 }, -- yellow gem + { id = 3039, chance = 400 }, -- red gem + { id = 7401, chance = 190 }, -- minotaur trophy + { id = 21166, chance = 170 }, -- mooh'tah plate +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 50 }, + { name = "combat", interval = 2000, chance = 22, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -150, range = 7, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_EXPLOSIONAREA, target = false }, + -- bleed + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 40, minDamage = -300, maxDamage = -400, range = 7, radius = 3, shootEffect = CONST_ANI_THROWINGKNIFE, effect = CONST_ME_HITAREA, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -160, maxDamage = -260, range = 7, radius = 2, shootEffect = CONST_ANI_BURSTARROW, effect = CONST_ME_EXPLOSIONHIT, target = true }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAIN, minDamage = -35, maxDamage = -150, radius = 4, effect = CONST_ME_EXPLOSIONAREA, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 36, + mitigation = 1.71, + { name = "combat", interval = 2000, chance = 7, type = COMBAT_HEALING, minDamage = 95, maxDamage = 180, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = 520, effect = CONST_ME_POFF, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/minotaur_invader.lua b/data-canary/monster/humanoids/minotaur_invader.lua new file mode 100644 index 00000000000..1d219511c1c --- /dev/null +++ b/data-canary/monster/humanoids/minotaur_invader.lua @@ -0,0 +1,116 @@ +local mType = Game.createMonsterType("Minotaur Invader") +local monster = {} + +monster.description = "a minotaur invader" +monster.experience = 1600 +monster.outfit = { + lookType = 29, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1109 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Second floor Glooth Underground Factory, east side during the Oramond Minotaurs raid.", +} + +monster.health = 1850 +monster.maxHealth = 1850 +monster.race = "blood" +monster.corpse = 5983 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "For the victory!", yell = false }, + { text = "We will crush the enemy!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 59640, maxCount = 160 }, -- gold coin + { id = 11472, chance = 8330, maxCount = 2 }, -- minotaur horn + { id = 11482, chance = 5040 }, -- piece of warrior armor + { id = 5878, chance = 1000 }, -- minotaur leather + { id = 7401, chance = 90 }, -- minotaur trophy +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, +} + +monster.defenses = { + defense = 20, + armor = 40, + mitigation = 1.76, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/minotaur_mage.lua b/data-canary/monster/humanoids/minotaur_mage.lua new file mode 100644 index 00000000000..f5686f16bac --- /dev/null +++ b/data-canary/monster/humanoids/minotaur_mage.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Minotaur Mage") +local monster = {} + +monster.description = "a minotaur mage" +monster.experience = 150 +monster.outfit = { + lookType = 23, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 23 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Cyclopolis, Mintwallin, Maze of Lost Souls, Dark Pyramid, Folda (hidden cave), \z + Kazordoon (The Horned Fox's hideout), the Plains of Havoc, Point of No Return south of Outlaw Camp, \z + Elvenbane, the depths of Fibula Dungeon (level 50+), cave east from Dwarf Bridge, Foreigner Quarter, \z + Rookgaard Minotaur Hell (not reachable).", +} + +monster.health = 155 +monster.maxHealth = 155 +monster.race = "blood" +monster.corpse = 5981 +monster.speed = 85 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Learrn tha secrret uf deathhh!", yell = false }, + { text = "Kaplar!", yell = false }, +} + +monster.loot = { + { id = 2920, chance = 4950 }, -- torch + { name = "gold coin", chance = 85780, maxCount = 35 }, + { name = "wand of cosmic energy", chance = 600 }, + { name = "leather helmet", chance = 3000 }, + { name = "leather legs", chance = 5190 }, + { id = 3595, chance = 15003, maxCount = 8 }, -- carrot + { name = "minotaur leather", chance = 2290 }, + { name = "taurus mace", chance = 1000 }, + { name = "mana potion", chance = 490 }, + { name = "minotaur horn", chance = 3020, maxCount = 2 }, + { name = "purple robe", chance = 6430, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -20, maxDamage = -59, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -105, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, + { name = "energyfield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_ENERGYBALL, target = true }, +} + +monster.defenses = { + defense = 15, + armor = 18, + mitigation = 1.04, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/minotaur_occultist.lua b/data-canary/monster/humanoids/minotaur_occultist.lua new file mode 100644 index 00000000000..c2196704337 --- /dev/null +++ b/data-canary/monster/humanoids/minotaur_occultist.lua @@ -0,0 +1,107 @@ +local mType = Game.createMonsterType("Minotaur Occultist") +local monster = {} + +monster.description = "a minotaur occultist" +monster.experience = 100 +monster.outfit = { + lookType = 23, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 125 +monster.maxHealth = 125 +monster.race = "blood" +monster.corpse = 5981 +monster.speed = 85 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 21 }, -- gold coin + { id = 3595, chance = 35000, maxCount = 4 }, -- carrot + { id = 17824, chance = 12000 }, -- swampling club + { id = 11472, chance = 10000 }, -- minotaur horn + { id = 3559, chance = 9000 }, -- leather legs + { id = 268, chance = 3500 }, -- mana potion + { id = 2920, chance = 3500 }, -- torch + { id = 3355, chance = 1800 }, -- leather helmet + { id = 11473, chance = 1800 }, -- purple robe +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -20, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -20, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = false }, + { name = "energyfield", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGYBALL, target = true }, +} + +monster.defenses = { + defense = 10, + armor = 8, + mitigation = 0.40, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/minotaur_poacher.lua b/data-canary/monster/humanoids/minotaur_poacher.lua new file mode 100644 index 00000000000..d2f8ba6a22f --- /dev/null +++ b/data-canary/monster/humanoids/minotaur_poacher.lua @@ -0,0 +1,106 @@ +local mType = Game.createMonsterType("Minotaur Poacher") +local monster = {} + +monster.description = "a minotaur poacher" +monster.experience = 55 +monster.outfit = { + lookType = 24, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 160 +monster.maxHealth = 160 +monster.race = "blood" +monster.corpse = 5982 +monster.speed = 80 +monster.manaCost = 390 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 28 }, + { name = "bolt", chance = 60660, maxCount = 18 }, + { name = "piercing bolt", chance = 60660, maxCount = 4 }, + { name = "broken crossbow", chance = 19400 }, + { name = "chain armor", chance = 9840 }, + { name = "studded armor", chance = 4920 }, + { name = "meat", chance = 3280 }, + { name = "minotaur leather", chance = 1400 }, + { name = "crossbow", chance = 710 }, + { name = "minotaur horn", chance = 710 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -20, range = 7, shootEffect = CONST_ANI_BOLT, target = false }, +} + +monster.defenses = { + defense = 5, + armor = 6, + mitigation = 0.30, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/minotaur_totem.lua b/data-canary/monster/humanoids/minotaur_totem.lua new file mode 100644 index 00000000000..5686cb8b995 --- /dev/null +++ b/data-canary/monster/humanoids/minotaur_totem.lua @@ -0,0 +1,87 @@ +local mType = Game.createMonsterType("Minotaur Totem") +local monster = {} + +monster.description = "a minotaur totem" +monster.experience = 500 +monster.outfit = { + lookTypeEx = 2299, +} + +monster.health = 6000 +monster.maxHealth = 6000 +monster.race = "undead" +monster.corpse = 0 +monster.speed = 39 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 16, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = true, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = {} + +monster.defenses = { + defense = 30, + armor = 30, + mitigation = 0.98, + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 0, maxDamage = 1000, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/mooh'tah_warrior.lua b/data-canary/monster/humanoids/mooh'tah_warrior.lua new file mode 100644 index 00000000000..d163ac881f2 --- /dev/null +++ b/data-canary/monster/humanoids/mooh'tah_warrior.lua @@ -0,0 +1,136 @@ +local mType = Game.createMonsterType("Mooh'Tah Warrior") +local monster = {} + +monster.description = "a mooh'tah warrior" +monster.experience = 900 +monster.outfit = { + lookType = 611, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1051 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Oramond/Southern Plains, Minotaur Hills, \z + Oramond Dungeon (depending on Magistrate votes), Underground Glooth Factory.", +} + +monster.health = 1200 +monster.maxHealth = 1200 +monster.race = "blood" +monster.corpse = 21091 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 4, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Feel the power of the Mooh'Tah!", yell = false }, + { text = "Ommm!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 119 }, + { name = "platinum coin", chance = 45450, maxCount = 3 }, + { id = 21202, chance = 18970 }, -- mooh'tah shell + { name = "strong mana potion", chance = 9290 }, + { name = "strong health potion", chance = 8500 }, + { name = "small ruby", chance = 7710 }, + { name = "small emerald", chance = 6320 }, + { name = "small amethyst", chance = 5340 }, + { name = "minotaur leather", chance = 5340 }, + { name = "minotaur horn", chance = 4550, maxCount = 2 }, + { name = "small topaz", chance = 4350 }, + { id = 3094, chance = 1580 }, -- sword ring + { name = "cowtana", chance = 1380 }, + { id = 21166, chance = 1380 }, -- mooh'tah plate + { name = "knight armor", chance = 990 }, + { name = "red piece of cloth", chance = 790 }, + { name = "knight legs", chance = 590 }, + { name = "guardian shield", chance = 590 }, + { id = 7401, chance = 160 }, -- minotaur trophy +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 45, attack = 80 }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -200, length = 4, spread = 0, effect = CONST_ME_YELLOWENERGY, target = false }, + { name = "combat", interval = 2000, chance = 11, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -135, range = 7, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -150, radius = 3, effect = CONST_ME_HITAREA, target = false }, + { name = "mooh'tah master skill reducer", interval = 2000, chance = 19, range = 7, target = false }, +} + +monster.defenses = { + defense = 37, + armor = 37, + mitigation = 1.35, + { name = "combat", interval = 2000, chance = 22, type = COMBAT_HEALING, minDamage = 110, maxDamage = 160, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "haste", interval = 2000, chance = 8, speedChange = 220, effect = CONST_ME_MAGIC_RED, target = false, duration = 1000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 15 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/moohtant.lua b/data-canary/monster/humanoids/moohtant.lua new file mode 100644 index 00000000000..dc730c4f488 --- /dev/null +++ b/data-canary/monster/humanoids/moohtant.lua @@ -0,0 +1,131 @@ +local mType = Game.createMonsterType("Moohtant") +local monster = {} + +monster.description = "a moohtant" +monster.experience = 2600 +monster.outfit = { + lookType = 607, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1044 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Oramond Mountain Hideout, Oramond Minotaur Camp (northern camp), \z + Underground Glooth Factory, Oramond Dungeon.", +} + +monster.health = 3200 +monster.maxHealth = 3200 +monster.race = "blood" +monster.corpse = 20996 +monster.speed = 130 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 3, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 195 }, -- gold coin + { id = 3035, chance = 58160, maxCount = 2 }, -- platinum coin + { id = 21200, chance = 2740, maxCount = 2 }, -- moohtant horn + { id = 21199, chance = 1770 }, -- giant pacifier + { id = 239, chance = 7380, maxCount = 3 }, -- great health potion + { id = 238, chance = 7230, maxCount = 3 }, -- great mana potion + { id = 3577, chance = 6520 }, -- meat + { id = 3030, chance = 4680, maxCount = 2 }, -- small ruby + { id = 5878, chance = 4110 }, -- minotaur leather + { id = 3028, chance = 4400, maxCount = 2 }, -- small diamond + { id = 3098, chance = 2410 }, -- ring of healing + { id = 5911, chance = 900 }, -- red piece of cloth + { id = 21173, chance = 860 }, -- moohtant cudgel + { id = 3037, chance = 710 }, -- yellow gem + { id = 7452, chance = 430 }, -- spiked squelcher + { id = 7427, chance = 280 }, -- chaos mace + { id = 9058, chance = 280 }, -- gold ingot + { id = 7401, chance = 280 }, -- minotaur trophy +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 110, attack = 50 }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -230, length = 3, spread = 0, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -200, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 2000, chance = 19, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -225, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -235, range = 7, radius = 4, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONAREA, target = true }, +} + +monster.defenses = { + defense = 45, + armor = 40, + { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 50, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/orc.lua b/data-canary/monster/humanoids/orc.lua new file mode 100644 index 00000000000..ed940eef6fa --- /dev/null +++ b/data-canary/monster/humanoids/orc.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Orc") +local monster = {} + +monster.description = "an orc" +monster.experience = 25 +monster.outfit = { + lookType = 5, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 5 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Ulderek's Rock, Edron Orc Cave, Ancient Temple, Ice Islands, Venore Orc Cave, \z + Rookgaard Orc Fortress, Rookgaard main cave, Fibula Dungeon, Elvenbane, Foreigner Quarter, Zao Orc Land.", +} + +monster.health = 70 +monster.maxHealth = 70 +monster.race = "blood" +monster.corpse = 5966 +monster.speed = 75 +monster.manaCost = 300 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grow truk grrrrr.", yell = false }, + { text = "Prek tars, dekklep zurk.", yell = false }, + { text = "Grak brrretz!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 84810, maxCount = 14 }, + { name = "sabre", chance = 5850 }, + { name = "axe", chance = 4960 }, + { name = "studded helmet", chance = 2950 }, + { name = "studded armor", chance = 7860 }, + { name = "studded shield", chance = 7300 }, + { name = "meat", chance = 10160 }, + { name = "orc tooth", chance = 210 }, + { name = "orc leather", chance = 590 }, + { id = 23986, chance = 1000 }, -- heavy old tome +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, +} + +monster.defenses = { + defense = 10, + armor = 4, + mitigation = 0.20, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/orc_berserker.lua b/data-canary/monster/humanoids/orc_berserker.lua new file mode 100644 index 00000000000..ac4cfb014c9 --- /dev/null +++ b/data-canary/monster/humanoids/orc_berserker.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Orc Berserker") +local monster = {} + +monster.description = "an orc berserker" +monster.experience = 195 +monster.outfit = { + lookType = 8, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 8 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Orc Fort, Dwacatra, Orc Peninsula, Elvenbane, Edron Orc Cave, Plains of Havoc, below Point of No Return in Outlaw Camp, Maze of Lost Souls, Cyclopolis, Desert Dungeon, Ancient Temple, Foreigner Quarter, Zao Orc Land.", +} + +monster.health = 210 +monster.maxHealth = 210 +monster.race = "blood" +monster.corpse = 5980 +monster.speed = 125 +monster.manaCost = 590 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 60, + health = 40, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "KRAK ORRRRRRK!", yell = true }, +} + +monster.loot = { + { id = 2914, chance = 830 }, -- lamp + { name = "gold coin", chance = 54000, maxCount = 12 }, + { name = "battle axe", chance = 6110 }, + { name = "halberd", chance = 7280 }, + { name = "chain armor", chance = 890 }, + { name = "ham", chance = 10400 }, + { name = "hunting spear", chance = 5000 }, + { name = "orc tooth", chance = 3000 }, + { name = "orcish gear", chance = 9400 }, + { name = "orc leather", chance = 4000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, +} + +monster.defenses = { + defense = 15, + armor = 12, + mitigation = 0.30, + { name = "speed", interval = 2000, chance = 15, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/orc_leader.lua b/data-canary/monster/humanoids/orc_leader.lua new file mode 100644 index 00000000000..7cac6279eb6 --- /dev/null +++ b/data-canary/monster/humanoids/orc_leader.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Orc Leader") +local monster = {} + +monster.description = "an orc leader" +monster.experience = 270 +monster.outfit = { + lookType = 59, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 59 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Orc Fort, Edron Orc Cave, South of the temple in PoH, Maze of Lost Souls, Cyclopolis, Zao Orc Land.", +} + +monster.health = 450 +monster.maxHealth = 450 +monster.race = "blood" +monster.corpse = 6001 +monster.speed = 115 +monster.manaCost = 640 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 15, + damage = 15, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Ulderek futgyr human!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 28000, maxCount = 35 }, + { id = 3091, chance = 3920 }, -- sword ring + { name = "longsword", chance = 2800 }, + { name = "throwing knife", chance = 9950, maxCount = 4 }, + { name = "broadsword", chance = 610 }, + { id = 3307, chance = 1860 }, -- scimitar + { name = "plate armor", chance = 1650 }, + { name = "warrior helmet", chance = 180 }, + { name = "brass legs", chance = 3100 }, + { name = "plate shield", chance = 1650 }, + { name = "plate legs", chance = 440 }, + { id = 3578, chance = 29400 }, -- fish + { name = "brown mushroom", chance = 9650 }, + { name = "royal spear", chance = 2400 }, + { name = "health potion", chance = 550 }, + { name = "orc tooth", chance = 1030 }, + { name = "orc leather", chance = 19510 }, + { name = "skull belt", chance = 2008 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -185 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -70, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 20, + mitigation = 1.18, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/orc_marauder.lua b/data-canary/monster/humanoids/orc_marauder.lua new file mode 100644 index 00000000000..e6a2a6bf736 --- /dev/null +++ b/data-canary/monster/humanoids/orc_marauder.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Orc Marauder") +local monster = {} + +monster.description = "an orc marauder" +monster.experience = 205 +monster.outfit = { + lookType = 342, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 614 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Zao Orc Land.", +} + +monster.health = 235 +monster.maxHealth = 235 +monster.race = "blood" +monster.corpse = 10334 +monster.speed = 195 +monster.manaCost = 490 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grrrrrr", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 55000, maxCount = 90 }, + { name = "obsidian lance", chance = 1110 }, + { name = "orcish axe", chance = 1320 }, + { name = "crossbow", chance = 440 }, + { name = "bow", chance = 5210 }, + { name = "meat", chance = 24600 }, + { name = "silkweaver bow", chance = 70 }, + { name = "orc tooth", chance = 3890 }, + { name = "shaggy tail", chance = 10090 }, + { name = "broken crossbow", chance = 4830 }, + { name = "orc leather", chance = 3800 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ONYXARROW, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 16, + mitigation = 0.83, + { name = "speed", interval = 2000, chance = 15, speedChange = 350, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/orc_rider.lua b/data-canary/monster/humanoids/orc_rider.lua new file mode 100644 index 00000000000..a76fe5d2a4b --- /dev/null +++ b/data-canary/monster/humanoids/orc_rider.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Orc Rider") +local monster = {} + +monster.description = "an orc rider" +monster.experience = 110 +monster.outfit = { + lookType = 4, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 4 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Orc Fort, Orc Peninsula, near Dark Cathedral, Zao Orc Land.", +} + +monster.health = 180 +monster.maxHealth = 180 +monster.race = "blood" +monster.corpse = 6010 +monster.speed = 130 +monster.manaCost = 490 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 30, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Orc arga Huummmak!", yell = false }, + { text = "Grrrrrrr", yell = false }, +} + +monster.loot = { + { id = 2920, chance = 980 }, -- torch + { id = 3012, chance = 10210 }, -- wolf tooth chain + { name = "gold coin", chance = 46000, maxCount = 81 }, + { name = "obsidian lance", chance = 1100 }, + { name = "orcish axe", chance = 6880 }, + { name = "scale armor", chance = 610 }, + { name = "battle shield", chance = 9900 }, + { name = "meat", chance = 24000, maxCount = 3 }, + { name = "orc tooth", chance = 2000 }, + { name = "warwolf fur", chance = 9410 }, + { name = "orc leather", chance = 9760 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 }, +} + +monster.defenses = { + defense = 15, + armor = 9, + mitigation = 0.51, + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/orc_shaman.lua b/data-canary/monster/humanoids/orc_shaman.lua new file mode 100644 index 00000000000..33977e34630 --- /dev/null +++ b/data-canary/monster/humanoids/orc_shaman.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Orc Shaman") +local monster = {} + +monster.description = "an orc shaman" +monster.experience = 110 +monster.outfit = { + lookType = 6, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 6 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Edron Orc Cave, Temple of Xayepocax, below Point of No Return in Outlaw Camp, Venore Orc Cave, \z + Maze of Lost Souls, Orc Fort, north west of Thais, Elvenbane, Plains Of Havoc, Foreigner Quarter, Zao Orc Land.", +} + +monster.health = 115 +monster.maxHealth = 115 +monster.race = "blood" +monster.corpse = 5978 +monster.speed = 70 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 4, + summons = { + { name = "Snake", chance = 20, interval = 2000, count = 3 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Huumans stinkk!", yell = false }, + { text = "Grak brrretz gulu.", yell = false }, +} + +monster.loot = { + { id = 2824, chance = 520 }, -- book + { name = "gold coin", chance = 90000, maxCount = 5 }, + { name = "wand of decay", chance = 1000 }, + { name = "spear", chance = 4850 }, + { name = "chain armor", chance = 8750 }, + { name = "corncob", chance = 10600, maxCount = 2 }, + { name = "orc tooth", chance = 2100 }, + { name = "broken shamanic staff", chance = 10300 }, + { name = "shamanic hood", chance = 6860 }, + { name = "orc leather", chance = 4300 }, + { id = 23986, chance = 1000 }, -- heavy old tome +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -20, maxDamage = -31, range = 7, shootEffect = CONST_ANI_ENERGYBALL, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_FIREDAMAGE, minDamage = -5, maxDamage = -43, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, +} + +monster.defenses = { + defense = 10, + armor = 8, + mitigation = 0.25, + { name = "combat", interval = 2000, chance = 60, type = COMBAT_HEALING, minDamage = 27, maxDamage = 43, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 50 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/orc_spearman.lua b/data-canary/monster/humanoids/orc_spearman.lua new file mode 100644 index 00000000000..8c7fee62b59 --- /dev/null +++ b/data-canary/monster/humanoids/orc_spearman.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Orc Spearman") +local monster = {} + +monster.description = "an orc spearman" +monster.experience = 38 +monster.outfit = { + lookType = 50, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 50 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Orc Fortress, Folda Dungeon, Edron Orc Cave and around it, Ancient Temple, \z + Venore Orc Cave, below the Point of No Return in Outlaw Camp, Plains of Havoc, \z + North of Thais in the Orc Peninsula, Elvenbane and Orc Camp in Foreigner Quarter. \z + Also found in Rookgaard West plains, Zao Orc Land.", +} + +monster.health = 105 +monster.maxHealth = 105 +monster.race = "blood" +monster.corpse = 5996 +monster.speed = 88 +monster.manaCost = 310 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Ugaar!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 25050, maxCount = 11 }, + { name = "spear", chance = 17440 }, + { name = "machete", chance = 3000 }, + { name = "studded legs", chance = 10000 }, + { name = "studded helmet", chance = 9000 }, + { name = "meat", chance = 30200 }, + { name = "orc tooth", chance = 150 }, + { name = "orc leather", chance = 2300 }, + { id = 23986, chance = 1000 }, -- heavy old tome +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -30, range = 7, shootEffect = CONST_ANI_SPEAR, target = false }, +} + +monster.defenses = { + defense = 10, + armor = 6, + mitigation = 0.30, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/orc_warlord.lua b/data-canary/monster/humanoids/orc_warlord.lua new file mode 100644 index 00000000000..db5b0e20288 --- /dev/null +++ b/data-canary/monster/humanoids/orc_warlord.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Orc Warlord") +local monster = {} + +monster.description = "an orc warlord" +monster.experience = 670 +monster.outfit = { + lookType = 2, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Orc Fortress, Foreigner Quarter, Zao Orc Land.", +} + +monster.health = 950 +monster.maxHealth = 950 +monster.race = "blood" +monster.corpse = 6008 +monster.speed = 117 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 15, + damage = 15, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Ikem rambo zambo!", yell = false }, + { text = "Orc buta bana!", yell = false }, + { text = "Ranat Ulderek!", yell = false }, + { text = "Futchi maruk buta!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 18000, maxCount = 45 }, + { id = 3049, chance = 90 }, -- stealth ring + { name = "gold ring", chance = 30 }, + { name = "protection amulet", chance = 2190 }, + { name = "two handed sword", chance = 1680 }, + { name = "throwing star", chance = 13920, maxCount = 18 }, + { id = 3307, chance = 3450 }, -- scimitar + { name = "orcish axe", chance = 5400 }, + { name = "dragon hammer", chance = 320 }, + { name = "plate armor", chance = 5210 }, + { name = "brass armor", chance = 740 }, + { name = "dark helmet", chance = 1260 }, + { name = "crusader helmet", chance = 280 }, + { name = "plate legs", chance = 4280 }, + { id = 3578, chance = 10800, maxCount = 2 }, -- fish + { name = "hunting spear", chance = 5260 }, + { id = 7395, chance = 50 }, -- orc trophy + { name = "health potion", chance = 470 }, + { name = "magma boots", chance = 280 }, + { name = "orc tooth", chance = 9640 }, + { name = "broken helmet", chance = 24350 }, + { name = "orc leather", chance = 20620 }, + { name = "skull belt", chance = 4610 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false }, +} + +monster.defenses = { + defense = 35, + armor = 28, + mitigation = 1.46, + { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 80 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/orc_warrior.lua b/data-canary/monster/humanoids/orc_warrior.lua new file mode 100644 index 00000000000..0a19598720e --- /dev/null +++ b/data-canary/monster/humanoids/orc_warrior.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Orc Warrior") +local monster = {} + +monster.description = "an orc warrior" +monster.experience = 50 +monster.outfit = { + lookType = 7, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 7 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Ancient Temple in Thais, Orc Fort, below Point of No Return in Outlaw Camp and inside a \z + mountain north of it, Orc Peninsula, Folda, Edron Orc cave, Maze of Lost Souls, Elvenbane Castle, \z + Foreigner Quarter, Zao Orc Land.", +} + +monster.health = 125 +monster.maxHealth = 125 +monster.race = "blood" +monster.corpse = 5979 +monster.speed = 95 +monster.manaCost = 360 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 11, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Alk!", yell = false }, + { text = "Trak grrrr brik.", yell = false }, + { text = "Grow truk grrrr.", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 65000, maxCount = 15 }, + { name = "poison dagger", chance = 120 }, + { name = "chain armor", chance = 7360 }, + { name = "copper shield", chance = 560 }, + { name = "meat", chance = 15000 }, + { name = "orc tooth", chance = 700 }, + { name = "broken helmet", chance = 10800 }, + { name = "orc leather", chance = 4000 }, + { name = "skull belt", chance = 980 }, + { id = 23986, chance = 1000 }, -- heavy old tome +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 }, +} + +monster.defenses = { + defense = 15, + armor = 8, + mitigation = 0.36, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/pirat_artillerist.lua b/data-canary/monster/humanoids/pirat_artillerist.lua new file mode 100644 index 00000000000..a174e126444 --- /dev/null +++ b/data-canary/monster/humanoids/pirat_artillerist.lua @@ -0,0 +1,115 @@ +local mType = Game.createMonsterType("Pirat Artillerist") +local monster = {} + +monster.description = "a pirat artillerist" +monster.experience = 2800 +monster.outfit = { + lookType = 1346, + lookHead = 126, + lookBody = 94, + lookLegs = 86, + lookFeet = 94, + lookAddons = 2, + lookMount = 0, +} + +monster.health = 2700 +monster.maxHealth = 2700 +monster.race = "blood" +monster.corpse = 35372 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 50, + healthHidden = false, + isBlockable = true, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 120 }, -- gold coin + { id = 7642, chance = 100000, maxCount = 2 }, -- great spirit potion + { id = 35572, chance = 10000 }, -- pirate coin + { id = 813, chance = 4761 }, -- terra boots + { id = 813, chance = 4761 }, -- terra boots + { id = 17812, chance = 5000 }, -- ratana + { id = 17813, chance = 5000 }, -- life preserver + { id = 17817, chance = 16666 }, -- cheese cutter + { id = 17818, chance = 3846 }, -- cheesy figurine + { id = 35596, chance = 11111 }, -- mouldy powder + { id = 17820, chance = 14285 }, -- soft cheese + { id = 17821, chance = 14285 }, -- rat cheese + { id = 820, chance = 1612 }, -- lightning boots + { id = 818, chance = 3225 }, -- magma boots +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 450, maxDamage = -140 }, + { name = "corym vanguard wave", interval = 2000, chance = 10, minDamage = -50, maxDamage = -100, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -40, maxDamage = -70, radius = 4, effect = CONST_ME_MORTAREA, target = true }, +} + +monster.defenses = { + defense = 65, + armor = 65, + -- mitigation = ???, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/pirat_bombardier.lua b/data-canary/monster/humanoids/pirat_bombardier.lua new file mode 100644 index 00000000000..d82ce8d909b --- /dev/null +++ b/data-canary/monster/humanoids/pirat_bombardier.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Pirat Bombardier") +local monster = {} + +monster.description = "a pirat bombardier" +monster.experience = 1700 +monster.outfit = { + lookType = 1346, + lookHead = 57, + lookBody = 125, + lookLegs = 86, + lookFeet = 67, + lookAddons = 2, + lookMount = 0, +} + +monster.raceId = 2038 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Pirat Mine, The Wreckoning", +} + +monster.health = 2300 +monster.maxHealth = 2300 +monster.race = "blood" +monster.corpse = 35384 +monster.speed = 185 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 50, + healthHidden = false, + isBlockable = true, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "great mana potion", chance = 30000, maxCount = 2 }, + { name = "pirate coin", chance = 7000, maxCount = 10 }, + { name = "terra boots", chance = 6000 }, + { name = "pirat's tail", chance = 4000 }, + { name = "magma boots", chance = 3000 }, + { name = "mouldy powder", chance = 4000 }, + { id = 23529, chance = 2000 }, -- ring of blue plasma + { name = "lightning boots", chance = 1000 }, + { name = "wood cape", chance = 1000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -350 }, + { name = "energy beam", interval = 2000, chance = 10, minDamage = -80, maxDamage = -160, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "energy wave", interval = 2000, chance = 10, minDamage = -35, maxDamage = -75, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 65, + mitigation = 1.82, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = -20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/pirat_cutthroat.lua b/data-canary/monster/humanoids/pirat_cutthroat.lua new file mode 100644 index 00000000000..ec13c5dcf7d --- /dev/null +++ b/data-canary/monster/humanoids/pirat_cutthroat.lua @@ -0,0 +1,120 @@ +local mType = Game.createMonsterType("Pirat Cutthroat") +local monster = {} + +monster.description = "a pirat cutthroat" +monster.experience = 1800 +monster.outfit = { + lookType = 1346, + lookHead = 2, + lookBody = 96, + lookLegs = 78, + lookFeet = 96, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 2036 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Darashia, Krailos Steppe, Liberty Bay, Pirat Mines, Port Hope, Thais, The Wreckoning.", +} + +monster.health = 2600 +monster.maxHealth = 2600 +monster.race = "blood" +monster.corpse = 35372 +monster.speed = 160 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 1, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "great health potion", chance = 44810, maxCount = 4 }, + { name = "ice rapier", chance = 25950 }, + { name = "knight axe", chance = 12500 }, + { name = "crystal sword", chance = 19420 }, + { name = "pirate coin", chance = 17810, maxCount = 10 }, + { name = "crowbar", chance = 7810 }, + { name = "knight armor", chance = 9550 }, + { name = "focus cape", chance = 8250 }, + { name = "pirat's tail", chance = 2120 }, + { name = "shark fins", chance = 1750 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 2000, chance = 18, type = COMBAT_PHYSICALDAMAGE, minDamage = -110, maxDamage = -190, length = 4, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -120, maxDamage = -175, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, +} + +monster.defenses = { + defense = 68, + armor = 72, + mitigation = 1.88, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/pirat_mate.lua b/data-canary/monster/humanoids/pirat_mate.lua new file mode 100644 index 00000000000..78255444fc2 --- /dev/null +++ b/data-canary/monster/humanoids/pirat_mate.lua @@ -0,0 +1,129 @@ +local mType = Game.createMonsterType("Pirat Mate") +local monster = {} + +monster.description = "a pirat mate" +monster.experience = 2400 +monster.outfit = { + lookType = 1346, + lookHead = 0, + lookBody = 95, + lookLegs = 95, + lookFeet = 113, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2039 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "The Wreckoning", +} + +monster.health = 3200 +monster.maxHealth = 3200 +monster.race = "blood" +monster.corpse = 35388 +monster.speed = 175 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 50, + healthHidden = false, + isBlockable = true, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "pirate coin", chance = 10000, maxCount = 10 }, + { name = "cyan crystal fragment", chance = 10000 }, + { name = "small diamond", chance = 10000 }, + { name = "red crystal fragment", chance = 10000 }, + { name = "mouldy powder", chance = 9000 }, + { name = "pirat's tail", chance = 7000 }, + { id = 3039, chance = 6000 }, -- red gem + { name = "fire sword", chance = 5000 }, + { name = "small emerald", chance = 5000 }, + { name = "onyx chip", chance = 4000 }, + { name = "shark fins", chance = 4000 }, + { name = "yellow gem", chance = 3000 }, + { name = "ice rapier", chance = 3000 }, + { name = "green crystal shard", chance = 2000 }, + { name = "small treasure chest", chance = 2000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "energy beam", interval = 2000, chance = 10, minDamage = -150, maxDamage = -210, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "energy wave", interval = 2000, chance = 10, minDamage = -140, maxDamage = -80, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 75, + mitigation = 1.94, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 30, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = -30 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/pirat_scoundrel.lua b/data-canary/monster/humanoids/pirat_scoundrel.lua new file mode 100644 index 00000000000..0f6105f0b6c --- /dev/null +++ b/data-canary/monster/humanoids/pirat_scoundrel.lua @@ -0,0 +1,119 @@ +local mType = Game.createMonsterType("Pirat Scoundrel") +local monster = {} + +monster.description = "a pirat scoundrel" +monster.experience = 1600 +monster.outfit = { + lookType = 1346, + lookHead = 97, + lookBody = 119, + lookLegs = 80, + lookFeet = 80, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2037 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Pirat Mine, The Wreckoning", +} + +monster.health = 2200 +monster.maxHealth = 2200 +monster.race = "blood" +monster.corpse = 35380 +monster.speed = 190 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 1, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "great mana potion", chance = 44810 }, + { name = "wand of inferno", chance = 12500 }, + { id = 35588, chance = 19420 }, -- grappling hook + { name = "pirate coin", chance = 17810, maxCount = 10 }, + { name = "pirat's tail", chance = 2120 }, + { name = "springsprout rod", chance = 9550 }, + { name = "wand of starstorm", chance = 1750 }, + { name = "wand of voodoo", chance = 1450 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -110, maxDamage = -180, range = 7, radius = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -140, radius = 3, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -90, maxDamage = -120, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 60, + mitigation = 1.74, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 26 }, + { type = COMBAT_EARTHDAMAGE, percent = -30 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/running_elite_orc_guard.lua b/data-canary/monster/humanoids/running_elite_orc_guard.lua new file mode 100644 index 00000000000..a017c853787 --- /dev/null +++ b/data-canary/monster/humanoids/running_elite_orc_guard.lua @@ -0,0 +1,94 @@ +local mType = Game.createMonsterType("Running Elite Orc Guard") +local monster = {} + +monster.description = "a running elite orc guard" +monster.experience = 0 +monster.outfit = { + lookType = 2, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 950 +monster.maxHealth = 950 +monster.race = "blood" +monster.corpse = 6008 +monster.speed = 117 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = false, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 950, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "UAAAAH FETCHI!", yell = false }, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 }, +} + +monster.defenses = { + defense = 35, + armor = 35, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 100 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = true }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/shaper_matriarch.lua b/data-canary/monster/humanoids/shaper_matriarch.lua new file mode 100644 index 00000000000..0cac3a23448 --- /dev/null +++ b/data-canary/monster/humanoids/shaper_matriarch.lua @@ -0,0 +1,136 @@ +local mType = Game.createMonsterType("Shaper Matriarch") +local monster = {} + +monster.description = "a shaper matriarch" +monster.experience = 1650 +monster.outfit = { + lookType = 933, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1394 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Old Masonry, Astral Shaper Ruins, small dungeon under the Formorgar Mines.", +} + +monster.health = 2000 +monster.maxHealth = 2000 +monster.race = "blood" +monster.corpse = 25071 +monster.speed = 130 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Tar Marra Zik Tazz!", yell = false }, +} + +monster.loot = { + { id = 24390, chance = 6000 }, -- ancient coin + { id = 3027, chance = 2500 }, -- black pearl + { id = 24383, chance = 18000, maxCount = 2 }, -- cave turnip + { id = 24385, chance = 15000 }, -- cracked alabaster vase + { id = 3728, chance = 6800 }, -- dark mushroom + { id = 24392, chance = 4300 }, -- gemmed figurine + { id = 3031, chance = 50320, maxCount = 150 }, -- gold coin + { id = 3035, chance = 80000, maxCount = 2 }, -- platinum coin + { id = 24962, chance = 2800 }, -- prismatic quartz + { id = 24386, chance = 20000 }, -- rhino horn carving + { id = 3098, chance = 1300 }, -- ring of healing + { id = 8908, chance = 4500 }, -- slightly rusted helmet + { id = 3114, chance = 10000 }, -- skull + { id = 3030, chance = 4000 }, -- small ruby + { id = 3081, chance = 1500 }, -- stone skin amulet + { id = 237, chance = 15000 }, -- strong mana potion + { id = 24387, chance = 15000 }, -- tarnished rhino figurine + { id = 3072, chance = 2000 }, -- wand of decay + { id = 8094, chance = 800 }, -- wand of voodoo + { id = 2901, chance = 2000 }, -- waterskin +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 15, attack = 25 }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = -35, maxDamage = -160, range = 7, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = -35, maxDamage = -160, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -400, length = 6, spread = 3, effect = CONST_ME_MORTAREA, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 40, + mitigation = 1.18, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 400, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = 15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/soul-broken_harbinger.lua b/data-canary/monster/humanoids/soul-broken_harbinger.lua new file mode 100644 index 00000000000..d4d36d4733c --- /dev/null +++ b/data-canary/monster/humanoids/soul-broken_harbinger.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Soul-Broken Harbinger") +local monster = {} + +monster.description = "a soul-broken harbinger" +monster.experience = 5800 +monster.outfit = { + lookType = 1137, + lookHead = 85, + lookBody = 10, + lookLegs = 16, + lookFeet = 83, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 1734 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Court of Winter.", +} + +monster.health = 6300 +monster.maxHealth = 6300 +monster.race = "blood" +monster.corpse = 30137 +monster.speed = 210 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 12 }, + { id = 30058, chance = 15750, maxCount = 3 }, -- ice flower + { name = "dream essence egg", chance = 13700 }, + { name = "elvish talisman", chance = 4790 }, + { name = "knight legs", chance = 4450 }, + { name = "glacier kilt", chance = 4110 }, + { name = "glacier shoes", chance = 3770 }, + { name = "ice rapier", chance = 3770 }, + { name = "spellbook of mind control", chance = 2400 }, + { name = "crown shield", chance = 1710 }, + { name = "wood cape", chance = 1710 }, + { id = 23529, chance = 1370 }, -- ring of blue plasma + { name = "tower shield", chance = 680 }, + { id = 23543, chance = 680 }, -- collar of green plasma +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2100, chance = 40, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, range = 5, radius = 1, effect = CONST_ME_ICEAREA, target = true }, + { name = "combat", interval = 2600, chance = 30, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, length = 4, spread = 0, effect = CONST_ME_GIANTICE, target = false }, + { name = "combat", interval = 3100, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -300, radius = 3, effect = CONST_ME_ICEAREA, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 76, + mitigation = 2.08, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.reflects = { + { type = COMBAT_ICEDAMAGE, percent = 70 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 55 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/swamp_troll.lua b/data-canary/monster/humanoids/swamp_troll.lua new file mode 100644 index 00000000000..db18293d2fa --- /dev/null +++ b/data-canary/monster/humanoids/swamp_troll.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Swamp Troll") +local monster = {} + +monster.description = "a swamp troll" +monster.experience = 25 +monster.outfit = { + lookType = 76, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 76 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Port Hope Swamp Trolls, Venore Swamp Troll Cave, all around north area of Port Hope, \z + small spawn north-west of Venore and in cave south-east of Thais, also one in Foreigner Quarter.", +} + +monster.health = 55 +monster.maxHealth = 55 +monster.race = "venom" +monster.corpse = 6018 +monster.speed = 64 +monster.manaCost = 320 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Me strong! Me ate spinach!", yell = false }, + { text = "Groar!", yell = false }, + { text = "Grrrr", yell = false }, +} + +monster.loot = { + { id = 2920, chance = 15000 }, -- torch + { name = "gold coin", chance = 50300, maxCount = 5 }, + { name = "mouldy cheese", chance = 10000 }, + { name = "spear", chance = 13000 }, + { name = "fishing rod", chance = 60 }, + { name = "leather boots", chance = 9500 }, + { id = 3578, chance = 60000 }, -- fish + { name = "troll green", chance = 1200 }, + { id = 5901, chance = 2140 }, -- wood + { name = "swamp grass", chance = 3100 }, + { name = "medicine pouch", chance = 2160 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -13, condition = { type = CONDITION_POISON, totalDamage = 1, interval = 4000 } }, +} + +monster.defenses = { + defense = 15, + armor = 6, + mitigation = 0.25, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 15 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/troll.lua b/data-canary/monster/humanoids/troll.lua index 6916c409d03..0e42c993ce3 100644 --- a/data-canary/monster/humanoids/troll.lua +++ b/data-canary/monster/humanoids/troll.lua @@ -71,25 +71,25 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, + { text = "Hmmm, bugs", yell = false }, + { text = "Hmmm, dogs", yell = false }, { text = "Grrr", yell = false }, { text = "Groar", yell = false }, { text = "Gruntz!", yell = false }, - { text = "Hmmm, bugs", yell = false }, - { text = "Hmmm, dogs", yell = false }, } monster.loot = { { id = 3003, chance = 7950 }, -- rope - { id = 3031, chance = 65300, maxCount = 12 }, -- gold coin - { id = 3054, chance = 80 }, -- silver amulet - { id = 3268, chance = 18000 }, -- hand axe - { id = 3277, chance = 13000 }, -- spear - { id = 3336, chance = 5000 }, -- studded club - { id = 3355, chance = 12000 }, -- leather helmet + { name = "gold coin", chance = 65300, maxCount = 12 }, + { name = "silver amulet", chance = 80 }, + { name = "hand axe", chance = 18000 }, + { name = "spear", chance = 13000 }, + { name = "studded club", chance = 5000 }, + { name = "leather helmet", chance = 12000 }, { id = 3412, chance = 4730 }, -- wooden shield - { id = 3552, chance = 10000 }, -- leather boots - { id = 3577, chance = 15000 }, -- meat - { id = 9689, chance = 1000 }, -- bunch of troll hair + { name = "leather boots", chance = 10000 }, + { name = "meat", chance = 15000 }, + { name = "bunch of troll hair", chance = 1000 }, { id = 23986, chance = 1000 }, -- heavy old tome } @@ -99,12 +99,13 @@ monster.attacks = { monster.defenses = { defense = 10, - armor = 10, + armor = 6, + mitigation = 0.20, } monster.elements = { { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, - { type = COMBAT_ENERGYDAMAGE, percent = 25 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, { type = COMBAT_EARTHDAMAGE, percent = -10 }, { type = COMBAT_FIREDAMAGE, percent = 0 }, { type = COMBAT_LIFEDRAIN, percent = 0 }, diff --git a/data-canary/monster/humanoids/troll_champion.lua b/data-canary/monster/humanoids/troll_champion.lua new file mode 100644 index 00000000000..92270300b28 --- /dev/null +++ b/data-canary/monster/humanoids/troll_champion.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Troll Champion") +local monster = {} + +monster.description = "a troll champion" +monster.experience = 40 +monster.outfit = { + lookType = 281, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 392 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Edron Troll-Goblin Peninsula, Ab'dendriel Shadow Caves, Thais South-East Troll Caves, \z + Dusalk's Troll Clan Cave, Island of Destiny in Paladin's guild.", +} + +monster.health = 75 +monster.maxHealth = 75 +monster.race = "blood" +monster.corpse = 861 +monster.speed = 69 +monster.manaCost = 350 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Meee maity!", yell = false }, + { text = "Grrrr", yell = false }, + { text = "Whaaaz up!?", yell = false }, + { text = "Gruntz!", yell = false }, + { text = "Groar", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 64000, maxCount = 12 }, + { name = "silver amulet", chance = 230 }, + { name = "spear", chance = 25000 }, + { name = "studded club", chance = 5450 }, + { id = 3412, chance = 6000 }, -- wooden shield + { name = "arrow", chance = 5450, maxCount = 5 }, + { name = "leather boots", chance = 9000 }, + { name = "meat", chance = 9650 }, + { name = "bunch of troll hair", chance = 3000 }, + { name = "trollroot", chance = 750 }, +} +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, +} + +monster.defenses = { + defense = 20, + armor = 10, + mitigation = 0.28, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/troll_guard.lua b/data-canary/monster/humanoids/troll_guard.lua new file mode 100644 index 00000000000..412ac857643 --- /dev/null +++ b/data-canary/monster/humanoids/troll_guard.lua @@ -0,0 +1,113 @@ +local mType = Game.createMonsterType("Troll Guard") +local monster = {} + +monster.description = "a troll guard" +monster.experience = 25 +monster.outfit = { + lookType = 281, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 745 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 5, + FirstUnlock = 1, + SecondUnlock = 3, + CharmsPoints = 30, + Stars = 2, + Occurrence = 3, + Locations = "Rookgaard and in Thais during raids", +} + +monster.health = 60 +monster.maxHealth = 60 +monster.race = "blood" +monster.corpse = 861 +monster.speed = 63 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 17, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3003, chance = 10000 }, -- rope + { name = "gold coin", chance = 58000, maxCount = 12 }, + { name = "studded club", chance = 3000 }, + { name = "meat", chance = 14000, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -9 }, +} + +monster.defenses = { + defense = 2, + armor = 4, + mitigation = 0.15, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/troll_legionnaire.lua b/data-canary/monster/humanoids/troll_legionnaire.lua new file mode 100644 index 00000000000..ed68e167322 --- /dev/null +++ b/data-canary/monster/humanoids/troll_legionnaire.lua @@ -0,0 +1,118 @@ +local mType = Game.createMonsterType("Troll Legionnaire") +local monster = {} + +monster.description = "a troll legionnaire" +monster.experience = 140 +monster.outfit = { + lookType = 53, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 541 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Old Beregar mines. In group with Furious Trolls almost all the time.", +} + +monster.health = 210 +monster.maxHealth = 210 +monster.race = "blood" +monster.corpse = 5998 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 5, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 30, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Attack!", yell = false }, + { text = "Graaaaar!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 92000, maxCount = 155 }, + { id = 3049, chance = 560 }, -- stealth ring + { name = "throwing star", chance = 28000, maxCount = 10 }, + { name = "frosty ear of a troll", chance = 5120 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, + { name = "combat", interval = 2000, chance = 18, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -130, range = 6, shootEffect = CONST_ANI_THROWINGSTAR, target = true }, +} + +monster.defenses = { + defense = 9, + armor = 12, + mitigation = 0.64, + { name = "invisible", interval = 2000, chance = 18, effect = CONST_ME_MAGIC_BLUE }, + { name = "combat", interval = 2000, chance = 28, type = COMBAT_HEALING, minDamage = 17, maxDamage = 25, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/twisted_shaper.lua b/data-canary/monster/humanoids/twisted_shaper.lua new file mode 100644 index 00000000000..564d71cb077 --- /dev/null +++ b/data-canary/monster/humanoids/twisted_shaper.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Twisted Shaper") +local monster = {} + +monster.description = "a twisted shaper" +monster.experience = 1750 +monster.outfit = { + lookType = 932, + lookHead = 105, + lookBody = 0, + lookLegs = 0, + lookFeet = 94, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1322 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Astral Shaper Dungeon, Old Masonry, small dungeon under the Formorgar Mines.", +} + +monster.health = 2500 +monster.maxHealth = 2500 +monster.race = "blood" +monster.corpse = 25068 +monster.speed = 140 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Ti Jezz Kur Tar!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 80320, maxCount = 222 }, -- gold coin + { id = 3035, chance = 50320, maxCount = 4 }, -- platinum coin + { id = 3725, chance = 5000, maxCount = 2 }, -- brown mushroom + { id = 3577, chance = 10000, maxCount = 2 }, -- meat + { id = 24383, chance = 20000, maxCount = 2 }, -- cave turnip + { id = 5021, chance = 5000, maxCount = 2 }, -- orichalcum pearl + { id = 3030, chance = 5600, maxCount = 5 }, -- small ruby + { id = 22193, chance = 4900 }, -- onyx chip + { id = 24387, chance = 14580 }, -- tarnished rhino figurine + { id = 239, chance = 7300 }, -- great health potion + { id = 3051, chance = 7660 }, -- energy ring + { id = 3073, chance = 3810 }, -- wand of cosmic energy + { id = 3055, chance = 370 }, -- platinum amulet + { id = 24384, chance = 17000 }, -- ancient belt buckle + { id = 24385, chance = 20000 }, -- cracked alabaster vase + { id = 24390, chance = 4000 }, -- ancient coin +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -50, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -100, length = 5, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -100, radius = 7, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 9, speedChange = -440, effect = CONST_ME_GIANTICE, target = true, duration = 7000 }, +} + +monster.defenses = { + defense = 25, + armor = 25, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 400, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 30 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/worm_priestess.lua b/data-canary/monster/humanoids/worm_priestess.lua new file mode 100644 index 00000000000..53070064518 --- /dev/null +++ b/data-canary/monster/humanoids/worm_priestess.lua @@ -0,0 +1,140 @@ +local mType = Game.createMonsterType("Worm Priestess") +local monster = {} + +monster.description = "a worm priestess" +monster.experience = 1500 +monster.outfit = { + lookType = 613, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1053 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Oramond/Southern Plains, Minotaur Hills, \z + Oramond Dungeon (depending on Magistrate votes), Underground Glooth Factory, Oramond Fury Dungeon.", +} + +monster.health = 1100 +monster.maxHealth = 1100 +monster.race = "blood" +monster.corpse = 21099 +monster.speed = 99 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 200, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "An enemy of the worm shall become his food!", yell = false }, + { text = "The great worm will swallow you!", yell = false }, + { text = "From the earthy depths he comes and brings freedom!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 150 }, -- gold coin + { id = 3035, chance = 41130, maxCount = 3 }, -- platinum coin + { id = 11473, chance = 15850 }, -- purple robe + { id = 237, chance = 12380, maxCount = 3 }, -- strong mana potion + { id = 3066, chance = 11470 }, -- snakebite rod + { id = 7425, chance = 5210 }, -- taurus mace + { id = 2920, chance = 4760 }, -- torch + { id = 5878, chance = 4640 }, -- minotaur leather + { id = 11472, chance = 2940, maxCount = 2 }, -- minotaur horn + { id = 3033, chance = 2500, maxCount = 2 }, -- small amethyst + { id = 3032, chance = 2370, maxCount = 2 }, -- small emerald + { id = 3030, chance = 2200, maxCount = 2 }, -- small ruby + { id = 9057, chance = 2460, maxCount = 2 }, -- small topaz + { id = 3028, chance = 2430, maxCount = 2 }, -- small diamond + { id = 5911, chance = 1350 }, -- red piece of cloth + { id = 5910, chance = 1400 }, -- green piece of cloth + { id = 5912, chance = 1820 }, -- blue piece of cloth + { id = 8082, chance = 1590 }, -- underworld rod + { id = 3037, chance = 560 }, -- yellow gem + { id = 3039, chance = 430 }, -- red gem + { id = 7401, chance = 160 }, -- minotaur trophy +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 50 }, + { name = "combat", interval = 2000, chance = 24, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -130, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = true }, + { name = "combat", interval = 2000, chance = 16, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -165, range = 4, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_POISONAREA, target = false }, + { name = "worm priestess paralyze", interval = 2000, chance = 12, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -115, maxDamage = -200, range = 7, radius = 3, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -300, range = 7, radius = 4, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_HITBYPOISON, target = true }, +} + +monster.defenses = { + defense = 20, + armor = 36, + mitigation = 1.37, + { name = "combat", interval = 2000, chance = 8, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "haste", interval = 2000, chance = 9, speedChange = 198, effect = CONST_ME_MAGIC_RED, target = false, duration = 1000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humanoids/young_troll.lua b/data-canary/monster/humanoids/young_troll.lua new file mode 100644 index 00000000000..b7668bdc1bb --- /dev/null +++ b/data-canary/monster/humanoids/young_troll.lua @@ -0,0 +1,99 @@ +local mType = Game.createMonsterType("Young Troll") +local monster = {} + +monster.description = "a young troll" +monster.experience = 12 +monster.outfit = { + lookType = 15, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 30 +monster.maxHealth = 30 +monster.race = "blood" +monster.corpse = 5960 +monster.speed = 58 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hmmm, dogs", yell = false }, + { text = "Gruntz!", yell = false }, +} + +monster.loot = { + { id = 3003, chance = 10000 }, -- rope + { name = "gold coin", chance = 58000, maxCount = 12 }, + { name = "meat", chance = 14000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10 }, +} + +monster.defenses = { + defense = 2, + armor = 2, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/acolyte_of_darkness.lua b/data-canary/monster/humans/acolyte_of_darkness.lua new file mode 100644 index 00000000000..019197ec3d2 --- /dev/null +++ b/data-canary/monster/humans/acolyte_of_darkness.lua @@ -0,0 +1,116 @@ +local mType = Game.createMonsterType("Acolyte of Darkness") +local monster = {} + +monster.description = "an acolyte of darkness" +monster.experience = 200 +monster.outfit = { + lookType = 9, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 578 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 30, + Stars = 2, + Occurrence = 3, + Locations = "Drefia.", +} + +monster.health = 325 +monster.maxHealth = 325 +monster.race = "blood" +monster.corpse = 18174 +monster.speed = 90 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Mine is the power of the night!", yell = false }, + { text = "You can not hope to stop us all!", yell = false }, + { text = "The power of darkness is with me!", yell = false }, +} + +monster.loot = { + { name = "midnight shard", chance = 1300 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -60, maxDamage = -120, range = 1, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -65, maxDamage = -120, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, +} + +monster.defenses = { + defense = 19, + armor = 19, + mitigation = 0.78, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/acolyte_of_the_cult.lua b/data-canary/monster/humans/acolyte_of_the_cult.lua new file mode 100644 index 00000000000..34b4fea2657 --- /dev/null +++ b/data-canary/monster/humans/acolyte_of_the_cult.lua @@ -0,0 +1,137 @@ +local mType = Game.createMonsterType("Acolyte of the Cult") +local monster = {} + +monster.description = "an acolyte of the cult" +monster.experience = 300 +monster.outfit = { + lookType = 194, + lookHead = 95, + lookBody = 100, + lookLegs = 100, + lookFeet = 19, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 253 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Goroma, Deeper Cult Cave, Formorgar Mines, Magician Quarter, Forbidden Temple.", +} + +monster.health = 390 +monster.maxHealth = 390 +monster.race = "blood" +monster.corpse = 18038 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 1, + summons = { + { name = "Skeleton", chance = 10, interval = 2000, count = 1 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Praise the voodoo!", yell = false }, + { text = "Power to the cult!", yell = false }, + { text = "Feel the power of the cult!", yell = false }, +} + +monster.loot = { + { id = 2828, chance = 730 }, -- book + { name = "gold coin", chance = 66940, maxCount = 40 }, + { name = "small emerald", chance = 550 }, + { id = 3052, chance = 560 }, -- life ring + { name = "terra rod", chance = 250 }, + { name = "dragon necklace", chance = 1050 }, + { name = "morning star", chance = 4990 }, + { name = "pirate voodoo doll", chance = 1060 }, + { id = 6088, chance = 480 }, -- music sheet + { name = "cultish robe", chance = 8070 }, + { name = "cultish symbol", chance = 40 }, + { name = "rope belt", chance = 10420 }, + { name = "broken key ring", chance = 60 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, condition = { type = CONDITION_POISON, totalDamage = 2, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -60, maxDamage = -120, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_MAGIC_RED, target = true }, + { name = "drunk", interval = 2000, chance = 5, range = 7, radius = 1, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYDAMAGE, target = true, duration = 3000 }, +} + +monster.defenses = { + defense = 15, + armor = 30, + mitigation = 1.13, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/adept_of_the_cult.lua b/data-canary/monster/humans/adept_of_the_cult.lua new file mode 100644 index 00000000000..11cb6bc235a --- /dev/null +++ b/data-canary/monster/humans/adept_of_the_cult.lua @@ -0,0 +1,141 @@ +local mType = Game.createMonsterType("Adept of the Cult") +local monster = {} + +monster.description = "an adept of the cult" +monster.experience = 400 +monster.outfit = { + lookType = 194, + lookHead = 95, + lookBody = 94, + lookLegs = 94, + lookFeet = 19, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 254 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Goroma, Liberty Bay's deeper cult dungeon, Formorgar Mines, Magician Quarter, Forbidden Temple.", +} + +monster.health = 430 +monster.maxHealth = 430 +monster.race = "blood" +monster.corpse = 18030 +monster.speed = 95 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "Ghoul", chance = 10, interval = 2000, count = 2 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Feel the power of the cult!", yell = false }, + { text = "Praise the voodoo!", yell = false }, + { text = "Power to the cult!", yell = false }, +} + +monster.loot = { + { id = 2828, chance = 940 }, -- book + { name = "small ruby", chance = 320 }, + { name = "gold coin", chance = 65520, maxCount = 60 }, + { id = 3053, chance = 420 }, -- time ring + { name = "silver amulet", chance = 1020 }, + { name = "hailstorm rod", chance = 220 }, + { name = "clerical mace", chance = 1260 }, + { name = "red robe", chance = 80 }, + { name = "pirate voodoo doll", chance = 1730 }, + { id = 6089, chance = 700 }, -- music sheet + { name = "lunar staff", chance = 120 }, + { name = "amber staff", chance = 680 }, + { name = "cultish robe", chance = 10080 }, + { name = "cultish symbol", chance = 90 }, + { name = "rope belt", chance = 10000 }, + { name = "broken key ring", chance = 120 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90, condition = { type = CONDITION_POISON, totalDamage = 2, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -70, maxDamage = -150, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, + { name = "drunk", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYDAMAGE, target = true, duration = 4000 }, +} + +monster.defenses = { + defense = 20, + armor = 33, + mitigation = 1.13, + { name = "combat", interval = 3000, chance = 20, type = COMBAT_HEALING, minDamage = 45, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_YELLOW_RINGS }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/adventurer.lua b/data-canary/monster/humans/adventurer.lua new file mode 100644 index 00000000000..865b7b65391 --- /dev/null +++ b/data-canary/monster/humans/adventurer.lua @@ -0,0 +1,103 @@ +local mType = Game.createMonsterType("Adventurer") +local monster = {} + +monster.description = "an adventurer" +monster.experience = 0 +monster.outfit = { + lookType = 129, + lookHead = 93, + lookBody = 15, + lookLegs = 72, + lookFeet = 80, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 922 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Venore swamp.", +} + +monster.health = 65 +monster.maxHealth = 65 +monster.race = "blood" +monster.corpse = 18034 +monster.speed = 53 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = false, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 65, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} +monster.defenses = { + defense = 5, + armor = 8, + mitigation = 0.28, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/amazon.lua b/data-canary/monster/humans/amazon.lua index e73dd0be0f2..35745de1c50 100644 --- a/data-canary/monster/humans/amazon.lua +++ b/data-canary/monster/humans/amazon.lua @@ -23,8 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Venore Amazon Camp, Carlin Amazon Camp, Amazon Tower, east of Carlin, underneath the Fields of Glory, \z - west of Venore, Oasis Tomb, on the smallest of the Laguna Islands, Foreigner Quarter and Trade Quarter.", + Locations = "Venore Amazon Camp, Carlin Amazon Camp, Amazon Tower, east of Carlin, underneath the Fields of Glory, west of Venore, Oasis Tomb, on the smallest of the Laguna Islands, Foreigner Quarter and Trade Quarter.", } monster.health = 110 @@ -48,7 +47,7 @@ monster.flags = { attackable = true, hostile = true, convinceable = true, - pushable = false, + pushable = true, rewardBoss = false, illusionable = true, canPushItems = true, @@ -71,22 +70,22 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, - { text = "Yeeee ha!", yell = false }, { text = "Your head shall be mine!", yell = false }, { text = "Your head will be mine!", yell = false }, + { text = "Yeeee ha!", yell = false }, } monster.loot = { - { id = 3267, chance = 80000 }, -- dagger + { name = "dagger", chance = 80000 }, { id = 3114, chance = 80000, maxCount = 2 }, -- skull - { id = 3031, chance = 40000, maxCount = 20 }, -- gold coin - { id = 3602, chance = 30000 }, -- brown bread - { id = 3273, chance = 23000 }, -- sabre - { id = 11443, chance = 10000 }, -- girlish hair decoration - { id = 11444, chance = 5200 }, -- protective charm + { name = "gold coin", chance = 40000, maxCount = 20 }, + { name = "brown bread", chance = 30000 }, + { name = "sabre", chance = 23000 }, + { name = "girlish hair decoration", chance = 10000 }, + { name = "protective charm", chance = 5200 }, { id = 2920, chance = 1000 }, -- torch - { id = 3008, chance = 260 }, -- crystal necklace - { id = 3030, chance = 130 }, -- small ruby + { name = "crystal necklace", chance = 260 }, + { name = "small ruby", chance = 130 }, } monster.attacks = { @@ -97,6 +96,7 @@ monster.attacks = { monster.defenses = { defense = 10, armor = 10, + mitigation = 0.28, } monster.elements = { diff --git a/data-canary/monster/humans/angry_adventurer.lua b/data-canary/monster/humans/angry_adventurer.lua new file mode 100644 index 00000000000..14b38b2d180 --- /dev/null +++ b/data-canary/monster/humans/angry_adventurer.lua @@ -0,0 +1,94 @@ +local mType = Game.createMonsterType("Angry Adventurer") +local monster = {} + +monster.description = "an angry adventurer" +monster.experience = 50 +monster.outfit = { + lookType = 129, + lookHead = 92, + lookBody = 15, + lookLegs = 92, + lookFeet = 82, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 65 +monster.maxHealth = 65 +monster.race = "blood" +monster.corpse = 18034 +monster.speed = 97 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 }, +} + +monster.defenses = { + defense = 15, + armor = 15, + mitigation = 0.35, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/assassin.lua b/data-canary/monster/humans/assassin.lua index abab4ea8e7a..4eea6717abc 100644 --- a/data-canary/monster/humans/assassin.lua +++ b/data-canary/monster/humans/assassin.lua @@ -5,7 +5,7 @@ monster.description = "an assassin" monster.experience = 105 monster.outfit = { lookType = 152, - lookHead = 114, + lookHead = 95, lookBody = 95, lookLegs = 95, lookFeet = 95, @@ -45,7 +45,7 @@ monster.strategiesTarget = { } monster.flags = { - summonable = true, + summonable = false, attackable = true, hostile = true, convinceable = true, @@ -72,25 +72,25 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, + { text = "You are on my deathlist!", yell = false }, { text = "Die!", yell = false }, { text = "Feel the hand of death!", yell = false }, - { text = "You are on my deathlist!", yell = false }, } monster.loot = { { id = 2920, chance = 29980, maxCount = 2 }, -- torch - { id = 3028, chance = 220 }, -- small diamond - { id = 3031, chance = 83210, maxCount = 50 }, -- gold coin - { id = 3031, chance = 7250, maxCount = 14 }, -- gold coin - { id = 3291, chance = 9500 }, -- knife - { id = 3292, chance = 4000 }, -- combat knife - { id = 3351, chance = 3230 }, -- steel helmet - { id = 3409, chance = 970 }, -- steel shield - { id = 3410, chance = 1900 }, -- plate shield - { id = 3413, chance = 1600 }, -- battle shield - { id = 3404, chance = 480 }, -- leopard armor - { id = 3405, chance = 230 }, -- horseman helmet - { id = 7366, chance = 4200, maxCount = 7 }, -- viper star + { name = "small diamond", chance = 220 }, + { name = "gold coin", chance = 83210, maxCount = 50 }, + { name = "gold coin", chance = 7250, maxCount = 14 }, + { name = "knife", chance = 9500 }, + { name = "combat knife", chance = 4000 }, + { name = "steel helmet", chance = 3230 }, + { name = "steel shield", chance = 970 }, + { name = "plate shield", chance = 1900 }, + { name = "battle shield", chance = 1600 }, + { name = "leopard armor", chance = 480 }, + { name = "horseman helmet", chance = 230 }, + { name = "viper star", chance = 4200, maxCount = 7 }, } monster.attacks = { @@ -102,12 +102,13 @@ monster.attacks = { monster.defenses = { defense = 15, - armor = 15, + armor = 17, + mitigation = 1.04, { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, } monster.elements = { - { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, { type = COMBAT_ENERGYDAMAGE, percent = 0 }, { type = COMBAT_EARTHDAMAGE, percent = 0 }, { type = COMBAT_FIREDAMAGE, percent = 0 }, diff --git a/data-canary/monster/humans/bandit.lua b/data-canary/monster/humans/bandit.lua index b96b11556ad..0204984c5e2 100644 --- a/data-canary/monster/humans/bandit.lua +++ b/data-canary/monster/humans/bandit.lua @@ -6,9 +6,9 @@ monster.experience = 65 monster.outfit = { lookType = 129, lookHead = 58, - lookBody = 59, - lookLegs = 45, - lookFeet = 114, + lookBody = 40, + lookLegs = 24, + lookFeet = 95, lookAddons = 0, lookMount = 0, } @@ -71,20 +71,20 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, - { text = "Your money or your life!", yell = false }, { text = "Hand me your purse!", yell = false }, + { text = "Your money or your life!", yell = false }, } monster.loot = { - { id = 3031, chance = 49000, maxCount = 30 }, -- gold coin - { id = 3274, chance = 29900 }, -- axe - { id = 3286, chance = 10100 }, -- mace - { id = 3352, chance = 5000 }, -- chain helmet - { id = 3353, chance = 520 }, -- iron helmet - { id = 3359, chance = 2500 }, -- brass armor - { id = 3411, chance = 16800 }, -- brass shield - { id = 3559, chance = 15500 }, -- leather legs - { id = 3596, chance = 7630, maxCount = 2 }, -- tomato + { name = "gold coin", chance = 49000, maxCount = 30 }, + { name = "axe", chance = 29900 }, + { name = "mace", chance = 10100 }, + { name = "chain helmet", chance = 5000 }, + { name = "iron helmet", chance = 520 }, + { name = "brass armor", chance = 2500 }, + { name = "brass shield", chance = 16800 }, + { name = "leather legs", chance = 15500 }, + { name = "tomato", chance = 7630, maxCount = 2 }, } monster.attacks = { @@ -93,7 +93,8 @@ monster.attacks = { monster.defenses = { defense = 15, - armor = 15, + armor = 11, + mitigation = 0.43, } monster.elements = { diff --git a/data-canary/monster/humans/barbarian_bloodwalker.lua b/data-canary/monster/humans/barbarian_bloodwalker.lua new file mode 100644 index 00000000000..b81af9de2fb --- /dev/null +++ b/data-canary/monster/humans/barbarian_bloodwalker.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Barbarian Bloodwalker") +local monster = {} + +monster.description = "a barbarian bloodwalker" +monster.experience = 195 +monster.outfit = { + lookType = 255, + lookHead = 114, + lookBody = 113, + lookLegs = 132, + lookFeet = 94, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 323 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Krimhorn, Bittermor, Ragnir, Arena and Zoo Quarter inside the Arena.", +} + +monster.health = 305 +monster.maxHealth = 305 +monster.race = "blood" +monster.corpse = 18054 +monster.speed = 118 +monster.manaCost = 590 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "YAAAHEEE!", yell = true }, + { text = "SLAUGHTER!", yell = true }, + { text = "CARNAGE!", yell = true }, + { text = "You can run but you can't hide", yell = false }, +} + +monster.loot = { + { id = 2914, chance = 8280 }, -- lamp + { name = "gold coin", chance = 55310, maxCount = 12 }, + { name = "battle axe", chance = 5910 }, + { name = "halberd", chance = 6740 }, + { name = "chain helmet", chance = 10520 }, + { name = "chain armor", chance = 10420 }, + { name = "ham", chance = 4900 }, + { name = "beastslayer axe", chance = 380 }, + { name = "red piece of cloth", chance = 540 }, + { name = "shard", chance = 300 }, + { name = "fur boots", chance = 100 }, + { name = "health potion", chance = 980 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 }, +} + +monster.defenses = { + defense = 0, + armor = 9, + mitigation = 0.25, + { name = "speed", interval = 2000, chance = 15, speedChange = 240, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = -5 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 50 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/barbarian_brutetamer.lua b/data-canary/monster/humans/barbarian_brutetamer.lua new file mode 100644 index 00000000000..80e7a4262c3 --- /dev/null +++ b/data-canary/monster/humans/barbarian_brutetamer.lua @@ -0,0 +1,136 @@ +local mType = Game.createMonsterType("Barbarian Brutetamer") +local monster = {} + +monster.description = "a barbarian brutetamer" +monster.experience = 90 +monster.outfit = { + lookType = 264, + lookHead = 78, + lookBody = 97, + lookLegs = 95, + lookFeet = 121, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 332 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Krimhorn, Bittermor, Ragnir, and Fenrock.", +} + +monster.health = 145 +monster.maxHealth = 145 +monster.race = "blood" +monster.corpse = 18058 +monster.speed = 89 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 60000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "War Wolf", chance = 10, interval = 2000, count = 2 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "To me, creatures of the wild!", yell = false }, + { text = "My instincts tell me about your cowardice.", yell = false }, + { text = "Feel the power of the beast!", yell = false }, +} + +monster.loot = { + { id = 2824, chance = 4750 }, -- book + { name = "gold coin", chance = 90230, maxCount = 15 }, + { id = 3289, chance = 6550 }, -- staff + { name = "chain armor", chance = 9300 }, + { name = "corncob", chance = 10940, maxCount = 2 }, + { name = "hunting spear", chance = 5200 }, + { name = "fur bag", chance = 7590 }, + { name = "brutetamer's staff", chance = 340 }, + { name = "fur boots", chance = 170 }, + { name = "mammoth fur cape", chance = 150 }, + { name = "mammoth fur shorts", chance = 90 }, + { name = "mana potion", chance = 580 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -34, range = 7, radius = 1, shootEffect = CONST_ANI_SNOWBALL, target = true }, + { name = "barbarian brutetamer skill reducer", interval = 2000, chance = 15, range = 5, target = false }, +} + +monster.defenses = { + defense = 0, + armor = 8, + mitigation = 0.36, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 50 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/barbarian_headsplitter.lua b/data-canary/monster/humans/barbarian_headsplitter.lua new file mode 100644 index 00000000000..45a6034a805 --- /dev/null +++ b/data-canary/monster/humans/barbarian_headsplitter.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Barbarian Headsplitter") +local monster = {} + +monster.description = "a barbarian headsplitter" +monster.experience = 85 +monster.outfit = { + lookType = 253, + lookHead = 115, + lookBody = 86, + lookLegs = 119, + lookFeet = 113, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 333 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Krimhorn, Bittermor, Ragnir, and Fenrock.", +} + +monster.health = 100 +monster.maxHealth = 100 +monster.race = "blood" +monster.corpse = 18062 +monster.speed = 84 +monster.manaCost = 450 + +monster.changeTarget = { + interval = 60000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I will regain my honor with your blood!", yell = false }, + { text = "Surrender is not option!", yell = false }, + { text = "Its you or me!", yell = false }, + { text = "Die! Die! Die!", yell = false }, +} + +monster.loot = { + { id = 2920, chance = 60300 }, -- torch + { name = "gold coin", chance = 75600, maxCount = 30 }, + { id = 3052, chance = 230 }, -- life ring + { name = "knife", chance = 14890 }, + { name = "brass helmet", chance = 20140 }, + { name = "viking helmet", chance = 5020 }, + { id = 3114, chance = 8000, maxCount = 2 }, -- skull + { name = "scale armor", chance = 4060 }, + { name = "brown piece of cloth", chance = 980 }, + { name = "fur boots", chance = 90 }, + { name = "krimhorn helmet", chance = 110 }, + { name = "health potion", chance = 560 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -60, range = 7, radius = 1, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true }, +} + +monster.defenses = { + defense = 0, + armor = 7, + mitigation = 0.36, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 50 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/barbarian_skullhunter.lua b/data-canary/monster/humans/barbarian_skullhunter.lua new file mode 100644 index 00000000000..7e8e263ec31 --- /dev/null +++ b/data-canary/monster/humans/barbarian_skullhunter.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Barbarian Skullhunter") +local monster = {} + +monster.description = "a barbarian skullhunter" +monster.experience = 85 +monster.outfit = { + lookType = 254, + lookHead = 0, + lookBody = 77, + lookLegs = 96, + lookFeet = 114, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 322 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Ragnir, Krimhorn, Bittermor, and Fenrock.", +} + +monster.health = 135 +monster.maxHealth = 135 +monster.race = "blood" +monster.corpse = 18066 +monster.speed = 84 +monster.manaCost = 450 + +monster.changeTarget = { + interval = 60000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You will become my trophy.", yell = false }, + { text = "Fight harder, coward.", yell = false }, + { text = "Show that you are a worthy opponent.", yell = false }, +} + +monster.loot = { + { id = 2920, chance = 6680 }, -- torch + { name = "gold coin", chance = 8240, maxCount = 30 }, + { id = 3052, chance = 300 }, -- life ring + { id = 3114, chance = 3000 }, -- skull + { name = "knife", chance = 1067 }, + { name = "brass helmet", chance = 2200 }, + { name = "viking helmet", chance = 860 }, + { name = "scale armor", chance = 440 }, + { name = "brown piece of cloth", chance = 500 }, + { name = "crystal sword", chance = 100 }, + { name = "fur boots", chance = 100 }, + { name = "ragnir helmet", chance = 100 }, + { name = "health potion", chance = 100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 }, +} + +monster.defenses = { + defense = 0, + armor = 8, + mitigation = 0.33, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 50 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/black_sphinx_acolyte.lua b/data-canary/monster/humans/black_sphinx_acolyte.lua new file mode 100644 index 00000000000..924b18fd4f0 --- /dev/null +++ b/data-canary/monster/humans/black_sphinx_acolyte.lua @@ -0,0 +1,131 @@ +local mType = Game.createMonsterType("Black Sphinx Acolyte") +local monster = {} + +monster.description = "a black sphinx acolyte" +monster.experience = 7200 +monster.outfit = { + lookType = 1200, + lookHead = 95, + lookBody = 95, + lookLegs = 94, + lookFeet = 95, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1800 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Issavi Sewers, Kilmaresh Catacombs and Kilmaresh Mountains (above and under ground).", +} + +monster.health = 8100 +monster.maxHealth = 8100 +monster.race = "blood" +monster.corpse = 31423 +monster.speed = 155 +monster.manaCost = 0 + +monster.faction = FACTION_FAFNAR +monster.enemyFactions = { FACTION_PLAYER, FACTION_ANUMA } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 1, + summons = { + { name = "Skeleton Elite Warrior", chance = 10, interval = 2000, count = 1 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Darkness is the mother of all knowledge!", yell = false }, + { text = "Get thee gone, unworthy!", yell = false }, + { text = "The Black Sphinx will prevail!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 5 }, + { name = "blue crystal shard", chance = 5000 }, + { name = "snakebite rod", chance = 4700 }, + { name = "underworld rod", chance = 3400 }, + { name = "violet gem", chance = 2600 }, + { name = "opal", chance = 2200, maxCount = 2 }, + { name = "wand of voodoo", chance = 2200 }, + { id = 31331, chance = 3400 }, -- empty honey glass + { name = "small enchanted emerald", chance = 1500, maxCount = 3 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -400, radius = 3, effect = CONST_ME_SMALLPLANTS, target = false }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -450, range = 4, radius = 3, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, +} + +monster.defenses = { + defense = 82, + armor = 82, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -30 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/blood_hand.lua b/data-canary/monster/humans/blood_hand.lua new file mode 100644 index 00000000000..042196f4864 --- /dev/null +++ b/data-canary/monster/humans/blood_hand.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Blood Hand") +local monster = {} + +monster.description = "a blood hand" +monster.experience = 750 +monster.outfit = { + lookType = 552, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 974 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Drefia.", +} + +monster.health = 700 +monster.maxHealth = 700 +monster.race = "blood" +monster.corpse = 18940 +monster.speed = 96 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Blood for the dark god!", yell = false }, + { text = "Die, filth!", yell = false }, + { text = "For the Blood God!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 130 }, + { name = "necrotic rod", chance = 3000 }, + { name = "boots of haste", chance = 210 }, + { name = "skull staff", chance = 130 }, + { name = "mystic turban", chance = 790 }, + { name = "white piece of cloth", chance = 840 }, + { name = "red piece of cloth", chance = 500 }, + { name = "noble axe", chance = 10 }, + { name = "strong mana potion", chance = 5590 }, + { name = "spellbook of enlightenment", chance = 790 }, + { name = "book of necromantic rituals", chance = 9340 }, + { id = 3039, chance = 710 }, -- red gem + { name = "lancet", chance = 10680 }, + { name = "horoscope", chance = 7950 }, + { name = "blood tincture in a vial", chance = 15460 }, + { name = "incantation notes", chance = 8820 }, + { name = "pieces of magic chalk", chance = 6120 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -158, condition = { type = CONDITION_POISON, totalDamage = 80, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -100, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = -600, radius = 4, effect = CONST_ME_BLOCKHIT, target = true, duration = 15000 }, + -- bleed + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 15, minDamage = -120, maxDamage = -160, radius = 6, effect = CONST_ME_HITAREA, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 48, + mitigation = 1.10, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 70, maxDamage = 90, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "effect", interval = 2000, chance = 10, radius = 1, effect = CONST_ME_INSECTS, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/blood_priest.lua b/data-canary/monster/humans/blood_priest.lua new file mode 100644 index 00000000000..ecf8642d4f3 --- /dev/null +++ b/data-canary/monster/humans/blood_priest.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Blood Priest") +local monster = {} + +monster.description = "a blood priest" +monster.experience = 900 +monster.outfit = { + lookType = 553, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 961 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Drefia and Old Fortress.", +} + +monster.health = 820 +monster.maxHealth = 820 +monster.race = "blood" +monster.corpse = 18945 +monster.speed = 99 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "The Blood God is thirsty!", yell = false }, + { text = "Give your blood to the Dark God!", yell = false }, +} + +monster.loot = { + { name = "small ruby", chance = 3510, maxCount = 2 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 71 }, + { name = "boots of haste", chance = 120 }, + { name = "skull staff", chance = 180 }, + { name = "mystic turban", chance = 2170 }, + { name = "white piece of cloth", chance = 3040 }, + { name = "red piece of cloth", chance = 640 }, + { name = "strong mana potion", chance = 6000 }, + { name = "spellbook of warding", chance = 290 }, + { name = "spellbook of mind control", chance = 180 }, + { name = "underworld rod", chance = 470 }, + { name = "book of necromantic rituals", chance = 13550 }, + { id = 3039, chance = 880 }, -- red gem + { name = "lancet", chance = 14410 }, + { name = "horoscope", chance = 9270 }, + { name = "blood tincture in a vial", chance = 14460 }, + { name = "incantation notes", chance = 14660 }, + { name = "pieces of magic chalk", chance = 7770 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80, condition = { type = CONDITION_POISON, totalDamage = 100, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -60, maxDamage = -100, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -40, maxDamage = -60, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 3000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -130, range = 1, length = 7, spread = 0, effect = CONST_ME_HITAREA, target = true }, + -- bleed + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 5, minDamage = -160, maxDamage = -290, range = 1, radius = 1, target = true }, +} + +monster.defenses = { + defense = 30, + armor = 55, + mitigation = 1.18, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 80, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -8 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -8 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = -8 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/burning_gladiator.lua b/data-canary/monster/humans/burning_gladiator.lua new file mode 100644 index 00000000000..b2ba5ba4d9f --- /dev/null +++ b/data-canary/monster/humans/burning_gladiator.lua @@ -0,0 +1,140 @@ +local mType = Game.createMonsterType("Burning Gladiator") +local monster = {} + +monster.description = "a burning gladiator" +monster.experience = 7350 +monster.outfit = { + lookType = 541, + lookHead = 95, + lookBody = 113, + lookLegs = 3, + lookFeet = 3, + lookAddons = 1, + lookMount = 0, +} + +monster.events = { + "FafnarMissionsDeath", +} + +monster.raceId = 1798 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Issavi Sewers, Kilmaresh Catacombs and Kilmaresh Mountains above and under ground.", +} + +monster.health = 10000 +monster.maxHealth = 10000 +monster.race = "blood" +monster.corpse = 31646 +monster.speed = 145 +monster.manaCost = 0 + +monster.faction = FACTION_FAFNAR +monster.enemyFactions = { FACTION_PLAYER, FACTION_ANUMA } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Burn, infidel!", yell = false }, + { text = "Only the Wild Sun shall shine down on this world!", yell = false }, + { text = "Praised be Fafnar, the Smiter!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 3 }, + { name = "fafnar symbol", chance = 6600 }, + { id = 31433, chance = 5600 }, -- secret instruction + { id = 31435, chance = 5600 }, -- secret instruction + { id = 31436, chance = 5600 }, -- secret instruction + { name = "dragon necklace", chance = 4700 }, + { name = "lightning pendant", chance = 4100 }, + { name = "magma amulet", chance = 3700 }, + { name = "strange talisman", chance = 3000 }, + { name = "magma boots", chance = 2700 }, + { id = 31331, chance = 2400 }, -- empty honey glass + { name = "elven amulet", chance = 2100 }, + { name = "lightning legs", chance = 2000 }, + { name = "lightning headband", chance = 1700 }, + { name = "lightning boots", chance = 1400 }, + { name = "spellweaver's robe", chance = 850 }, + { id = 31369, chance = 570 }, -- gryphon mask + { name = "sea horse figurine", chance = 140 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -550 }, + { name = "firering", interval = 2000, chance = 10, minDamage = -300, maxDamage = -500, target = false }, + { name = "firex", interval = 2000, chance = 15, minDamage = -300, maxDamage = -500, target = false }, + { name = "combat", interval = 2000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -500, radius = 2, effect = CONST_ME_FIREATTACK, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -500, length = 3, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 89, + mitigation = 2.45, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/carnisylvan_sapling.lua b/data-canary/monster/humans/carnisylvan_sapling.lua new file mode 100644 index 00000000000..e3bb11f9558 --- /dev/null +++ b/data-canary/monster/humans/carnisylvan_sapling.lua @@ -0,0 +1,95 @@ +local mType = Game.createMonsterType("Carnisylvan Sapling") +local monster = {} + +monster.description = "a carnisylvan sapling" +monster.experience = 0 +monster.outfit = { + lookType = 1419, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 750 +monster.maxHealth = 750 +monster.race = "blood" +monster.corpse = 36885 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.attacks = { + { name = "sapling explode", interval = 2000, chance = 100, minDamage = -700, maxDamage = -1000, range = 1 }, +} + +monster.defenses = { + defense = 45, + armor = 50, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/cobra_assassin.lua b/data-canary/monster/humans/cobra_assassin.lua new file mode 100644 index 00000000000..fa834503e56 --- /dev/null +++ b/data-canary/monster/humans/cobra_assassin.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Cobra Assassin") +local monster = {} + +monster.description = "a cobra assassin" +monster.experience = 6980 +monster.outfit = { + lookType = 1217, + lookHead = 2, + lookBody = 2, + lookLegs = 77, + lookFeet = 19, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 1775 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Cobra Bastion.", +} + +monster.health = 8200 +monster.maxHealth = 8200 +monster.race = "blood" +monster.corpse = 31547 +monster.speed = 140 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hey, maybe you want to strike a deal... no?", yell = false }, + { text = "Stand and deliver! Your money... AND your life actually!", yell = false }, + { text = "You will not leave this place breathing!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 3 }, + { name = "knife", chance = 10500 }, + { name = "cobra crest", chance = 7750 }, + { id = 3307, chance = 7750 }, -- scimitar + { name = "protection amulet", chance = 7500 }, + { name = "heavy machete", chance = 6500 }, + { name = "bone sword", chance = 5000 }, + { name = "machete", chance = 2250 }, + { name = "carlin sword", chance = 2250 }, + { id = 23533, chance = 1690 }, -- ring of red plasma +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "wave t", interval = 2000, chance = 10, minDamage = -300, maxDamage = -380, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -500, radius = 4, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -500, length = 5, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, +} + +monster.defenses = { + defense = 81, + armor = 81, + mitigation = 2.22, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType.onSpawn = function(monster) + monster:handleCobraOnSpawn() +end + +mType:register(monster) diff --git a/data-canary/monster/humans/cobra_scout.lua b/data-canary/monster/humans/cobra_scout.lua new file mode 100644 index 00000000000..6fc3e893497 --- /dev/null +++ b/data-canary/monster/humans/cobra_scout.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Cobra Scout") +local monster = {} + +monster.description = "a cobra scout" +monster.experience = 7310 +monster.outfit = { + lookType = 1217, + lookHead = 1, + lookBody = 1, + lookLegs = 102, + lookFeet = 78, + lookAddons = 2, + lookMount = 0, +} + +monster.raceId = 1776 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Cobra Bastion.", +} + +monster.health = 8500 +monster.maxHealth = 8500 +monster.race = "blood" +monster.corpse = 31635 +monster.speed = 150 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Think I can't see you? Think again...", yell = false }, + { text = "You don't stand a chance!", yell = false }, + { text = "What are you looking for?", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 74000, maxCount = 9 }, + { name = "earth arrow", chance = 19490, maxCount = 28 }, + { name = "stone skin amulet", chance = 6800 }, + { name = "gold ingot", chance = 5750, maxCount = 1 }, + { name = "cheesy figurine", chance = 13800 }, + { name = "opal", chance = 23800, maxCount = 5 }, + { name = "cobra crest", chance = 15450 }, + { name = "small emerald", chance = 3000, maxCount = 2 }, + { name = "violet gem", chance = 1300 }, + { name = "yellow gem", chance = 3060 }, + { name = "green gem", chance = 1210 }, + { id = 3039, chance = 4800 }, -- red gem + { name = "sacred tree amulet", chance = 5100 }, + { name = "green crystal shard", chance = 2130 }, + { id = 23533, chance = 740 }, -- ring of red plasma +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, + { name = "combat", interval = 2000, chance = 22, type = COMBAT_EARTHDAMAGE, minDamage = -350, maxDamage = -450, shootEffect = CONST_ANI_SNIPERARROW, target = true }, + { name = "combat", interval = 2000, chance = 16, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -420, radius = 4, shootEffect = CONST_ANI_POISONARROW, effect = CONST_ME_GREEN_RINGS, target = true }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -380, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, +} + +monster.defenses = { + defense = 81, + armor = 81, + mitigation = 2.16, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType.onSpawn = function(monster) + monster:handleCobraOnSpawn() +end + +mType:register(monster) diff --git a/data-canary/monster/humans/cobra_vizier.lua b/data-canary/monster/humans/cobra_vizier.lua new file mode 100644 index 00000000000..934b015842a --- /dev/null +++ b/data-canary/monster/humans/cobra_vizier.lua @@ -0,0 +1,136 @@ +local mType = Game.createMonsterType("Cobra Vizier") +local monster = {} + +monster.description = "a cobra vizier" +monster.experience = 7650 +monster.outfit = { + lookType = 1217, + lookHead = 19, + lookBody = 19, + lookLegs = 67, + lookFeet = 78, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1824 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Cobra Bastion.", +} + +monster.health = 8500 +monster.maxHealth = 8500 +monster.race = "blood" +monster.corpse = 31639 +monster.speed = 160 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "COMBINE FORCES MY BRETHEN!", yell = true }, + { text = "Feel the cobras wrath!", yell = false }, + { text = "OH NO, YOU WON'T!", yell = true }, +} + +monster.loot = { + { name = "platinum coin", chance = 85480, maxCount = 4 }, + { name = "terra rod", chance = 43000 }, + { name = "snakebite rod", chance = 20970 }, + { name = "cobra crest", chance = 16130 }, + { name = "terra hood", chance = 13710 }, + { name = "cyan crystal fragment", chance = 10805 }, + { name = "terra boots", chance = 9680 }, + { id = 281, chance = 8870 }, -- giant shimmering pearl (green) + { id = 3039, chance = 6450 }, -- red gem + { name = "emerald bangle", chance = 5650 }, + { name = "gemmed figurine", chance = 4840 }, + { name = "green crystal fragment", chance = 3230 }, + { name = "red crystal fragment", chance = 3230 }, + { name = "serpent sword", chance = 2420 }, + { name = "violet crystal shard", chance = 2420 }, + { name = "green gem", chance = 1610 }, + { name = "onyx chip", chance = 1610, maxCount = 3 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -480 }, + { name = "explosion wave", interval = 2000, chance = 15, minDamage = -280, maxDamage = -400, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -350, maxDamage = -520, radius = 4, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_GREEN_RINGS, target = true }, + { name = "death chain", interval = 4000, chance = 30, minDamage = -550, maxDamage = -800, range = 3, target = true }, +} + +monster.defenses = { + defense = 82, + armor = 82, + mitigation = 2.31, + { name = "speed", interval = 2000, chance = 8, speedChange = 250, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType.onSpawn = function(monster) + monster:handleCobraOnSpawn() +end + +mType:register(monster) diff --git a/data-canary/monster/humans/crazed_beggar.lua b/data-canary/monster/humans/crazed_beggar.lua new file mode 100644 index 00000000000..1c98a8c4f6e --- /dev/null +++ b/data-canary/monster/humans/crazed_beggar.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Crazed Beggar") +local monster = {} + +monster.description = "a crazed beggar" +monster.experience = 35 +monster.outfit = { + lookType = 153, + lookHead = 40, + lookBody = 19, + lookLegs = 21, + lookFeet = 97, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 525 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Factory, Foreigner, and Trade Quarters in Yalahar.", +} + +monster.health = 100 +monster.maxHealth = 100 +monster.race = "blood" +monster.corpse = 18070 +monster.speed = 77 +monster.manaCost = 300 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hehehe!", yell = false }, + { text = "Raahhh!", yell = false }, + { text = "You are one of THEM! Die!", yell = false }, + { text = "Wanna buy roses??", yell = false }, + { text = "Make it stop!", yell = false }, + { text = "They're coming! They're coming!", yell = false }, + { text = "Gimme money!", yell = false }, +} + +monster.loot = { + { name = "small blue pillow", chance = 420 }, + { id = 2950, chance = 360 }, -- lute + { name = "gold coin", chance = 99000, maxCount = 9 }, + { id = 3097, chance = 120 }, -- dwarven ring + { id = 3122, chance = 55000 }, -- dirty cape + { name = "wooden hammer", chance = 6500 }, + { name = "wooden spoon", chance = 9750 }, + { id = 3473, chance = 5650 }, -- rolling pin + { name = "meat", chance = 9500 }, + { name = "roll", chance = 22500 }, + { name = "red rose", chance = 4700 }, + { name = "sling herb", chance = 420 }, + { name = "rum flask", chance = 420 }, + { id = 6091, chance = 300 }, -- very noble-looking watch + { id = 8894, chance = 80 }, -- heavily rusted armor +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 }, +} + +monster.defenses = { + defense = 15, + armor = 4, + mitigation = 0.20, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/crypt_defiler.lua b/data-canary/monster/humans/crypt_defiler.lua new file mode 100644 index 00000000000..766287127bc --- /dev/null +++ b/data-canary/monster/humans/crypt_defiler.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Crypt Defiler") +local monster = {} + +monster.description = "a crypt defiler" +monster.experience = 70 +monster.outfit = { + lookType = 146, + lookHead = 62, + lookBody = 132, + lookLegs = 42, + lookFeet = 75, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 868 +monster.Bestiary = { + class = "Human", + race = dafasdfasdfsadfasdfasd, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 2, + Locations = "Horestis Tomb.", +} + +monster.health = 185 +monster.maxHealth = 185 +monster.race = "blood" +monster.corpse = 18078 +monster.speed = 95 +monster.manaCost = 450 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I smell gold!", yell = false }, + { text = "You'll make a fine fake-mummy to be sold!", yell = false }, + { text = "Untold riches are awaiting me!", yell = false }, + { text = "I don't like competition!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50900, maxCount = 39 }, + { name = "axe", chance = 2730 }, + { name = "mace", chance = 1800 }, + { name = "iron helmet", chance = 450 }, + { name = "brass armor", chance = 2240 }, + { name = "steel shield", chance = 450 }, + { name = "nomad parchment", chance = 220 }, + { name = "potato", chance = 4840, maxCount = 3 }, + { name = "dirty turban", chance = 1570 }, + { name = "rope belt", chance = 4040 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 7, radius = 1, shootEffect = CONST_ANI_THROWINGSTAR, target = true }, +} + +monster.defenses = { + defense = 15, + armor = 6, + mitigation = 0.41, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/dark_apprentice.lua b/data-canary/monster/humans/dark_apprentice.lua new file mode 100644 index 00000000000..a7855678b3e --- /dev/null +++ b/data-canary/monster/humans/dark_apprentice.lua @@ -0,0 +1,126 @@ +local mType = Game.createMonsterType("Dark Apprentice") +local monster = {} + +monster.description = "a dark apprentice" +monster.experience = 100 +monster.outfit = { + lookType = 133, + lookHead = 78, + lookBody = 57, + lookLegs = 95, + lookFeet = 115, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 372 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Magician Tower, Dark Cathedral, Hero Cave, Magician Quarter.", +} + +monster.health = 225 +monster.maxHealth = 225 +monster.race = "blood" +monster.corpse = 18082 +monster.speed = 86 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Outch!", yell = false }, + { text = "I must dispose of my masters enemies!", yell = false }, + { text = "Oops, I did it again.", yell = false }, + { text = "From the spirits that I called Sir, deliver me!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 7500, maxCount = 45 }, + { name = "wand of decay", chance = 110 }, + { name = "wand of dragonbreath", chance = 1980 }, + { name = "blank rune", chance = 8125, maxCount = 3 }, + { name = "health potion", chance = 2900 }, + { name = "mana potion", chance = 2980 }, + { name = "reins", chance = 10 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -2, maxDamage = -26, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -10, maxDamage = -20, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -24, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, + { name = "outfit", interval = 2000, chance = 1, range = 3, shootEffect = CONST_ANI_EXPLOSION, target = true, duration = 2000, outfitMonster = "cyclops" }, + { name = "outfit", interval = 2000, chance = 1, radius = 4, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 2000, outfitItem = 2324 }, +} + +monster.defenses = { + defense = 15, + armor = 16, + mitigation = 0.30, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 30, maxDamage = 40, effect = CONST_ME_MAGIC_GREEN, target = false }, + { name = "outfit", interval = 2000, chance = 5, target = true, duration = 3000, outfitMonster = "green frog" }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/dark_carnisylvan.lua b/data-canary/monster/humans/dark_carnisylvan.lua new file mode 100644 index 00000000000..7171a5bf066 --- /dev/null +++ b/data-canary/monster/humans/dark_carnisylvan.lua @@ -0,0 +1,129 @@ +local mType = Game.createMonsterType("Dark Carnisylvan") +local monster = {} + +monster.description = "a dark carnisylvan" +monster.experience = 4400 +monster.outfit = { + lookType = 1418, + lookHead = 76, + lookBody = 57, + lookLegs = 0, + lookFeet = 19, + lookAddons = 2, + lookMount = 0, +} + +monster.raceId = 2109 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Forest of Life.", +} + +monster.health = 7500 +monster.maxHealth = 7500 +monster.race = "venom" +monster.corpse = 36892 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 25, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 70000, maxCount = 19 }, + { id = 3115, chance = 39690, maxCount = 1 }, -- bone + { name = "carnisylvan finger", chance = 17490, maxCount = 4 }, + { name = "carnisylvan bark", chance = 11490, maxCount = 5 }, + { name = "great mana potion", chance = 9660, maxCount = 4 }, + { name = "underworld rod", chance = 4440 }, + { name = "wand of starstorm", chance = 3660 }, + { name = "hailstorm rod", chance = 3660 }, + { name = "springsprout rod", chance = 2610 }, + { id = 3059, chance = 2350 }, -- spellbook + { name = "spellbook of warding", chance = 3390 }, + { name = "gold ring", chance = 780 }, + { name = "butterfly ring", chance = 520 }, + { name = "human teeth", chance = 1040 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, + { name = "combat", interval = 2700, chance = 40, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -500, range = 2, radius = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, + { name = "combat", interval = 2000, chance = 70, type = COMBAT_EARTHDAMAGE, minDamage = -350, maxDamage = -450, range = 5, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_POISONAREA, target = true }, +} + +monster.defenses = { + defense = 41, + armor = 41, + mitigation = 0.91, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 80, maxDamage = 210, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = 330, effect = CONST_ME_HITAREA, target = false, duration = 8000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = -20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/dark_magician.lua b/data-canary/monster/humans/dark_magician.lua new file mode 100644 index 00000000000..37a81aa987d --- /dev/null +++ b/data-canary/monster/humans/dark_magician.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Dark Magician") +local monster = {} + +monster.description = "a dark magician" +monster.experience = 185 +monster.outfit = { + lookType = 133, + lookHead = 58, + lookBody = 95, + lookLegs = 51, + lookFeet = 131, + lookAddons = 2, + lookMount = 0, +} + +monster.raceId = 371 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Hero Cave (Edron), Magician Tower, Dark Cathedral and Yalahar Academy of Magic in \z + Magician Quarter and a single one on The Witches' Cliff (only accessible during a quest).", +} + +monster.health = 325 +monster.maxHealth = 325 +monster.race = "blood" +monster.corpse = 18086 +monster.speed = 90 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Feel the power of my runes!", yell = false }, + { text = "Killing you gets expensive.", yell = false }, + { text = "My secrets are mine alone!", yell = false }, + { text = "Stand still!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 75100, maxCount = 55 }, + { name = "blank rune", chance = 10000 }, + { name = "strong health potion", chance = 3000 }, + { name = "strong mana potion", chance = 2860 }, + { name = "health potion", chance = 12000 }, + { name = "mana potion", chance = 11900 }, + { name = "reins", chance = 20 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -5, maxDamage = -40, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -20, maxDamage = -30, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 15, + mitigation = 0.64, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 60, maxDamage = 80, effect = CONST_ME_MAGIC_GREEN, target = false }, + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/dark_monk.lua b/data-canary/monster/humans/dark_monk.lua new file mode 100644 index 00000000000..49710f169f4 --- /dev/null +++ b/data-canary/monster/humans/dark_monk.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Dark Monk") +local monster = {} + +monster.description = "a dark monk" +monster.experience = 145 +monster.outfit = { + lookType = 225, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 225 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Dark Cathedral, Vandura (Cult Cave), Foreigner Quarter.", +} + +monster.health = 190 +monster.maxHealth = 190 +monster.race = "blood" +monster.corpse = 18281 +monster.speed = 115 +monster.manaCost = 480 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 20, + damage = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You are no match to us!", yell = false }, + { text = "Your end has come!", yell = false }, + { text = "This is where your path will end!", yell = false }, +} + +monster.loot = { + { id = 2815, chance = 1790 }, -- scroll + { name = "brown flask", chance = 380 }, + { id = 2914, chance = 550 }, -- lamp + { name = "gold coin", chance = 14600, maxCount = 18 }, + { id = 3050, chance = 120 }, -- power ring + { name = "life crystal", chance = 990 }, + { name = "ankh", chance = 900 }, + { name = "sandals", chance = 890 }, + { name = "bread", chance = 20550 }, + { name = "mana potion", chance = 790 }, + { name = "book of prayers", chance = 1900 }, + { name = "dark rosary", chance = 10500 }, + { name = "rope belt", chance = 6666 }, + { name = "safety pin", chance = 990 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -50, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 22, + mitigation = 1.13, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 25, maxDamage = 49, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 40 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/enlightened_of_the_cult.lua b/data-canary/monster/humans/enlightened_of_the_cult.lua new file mode 100644 index 00000000000..d88f9985d8a --- /dev/null +++ b/data-canary/monster/humans/enlightened_of_the_cult.lua @@ -0,0 +1,146 @@ +local mType = Game.createMonsterType("Enlightened of the Cult") +local monster = {} + +monster.description = "an enlightened of the cult" +monster.experience = 500 +monster.outfit = { + lookType = 193, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 252 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Goroma, Formorgar Mines, Magician Quarter, Forbidden Temple.", +} + +monster.health = 700 +monster.maxHealth = 700 +monster.race = "blood" +monster.corpse = 18110 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 50, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "Crypt Shambler", chance = 10, interval = 2000, count = 1 }, + { name = "Ghost", chance = 10, interval = 2000, count = 1 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Praise to my master Urgith!", yell = false }, + { text = "You will rise as my servant!", yell = false }, + { text = "Praise to my masters! Long live the triangle!", yell = false }, + { text = "You will die in the name of the triangle!", yell = false }, +} + +monster.loot = { + { id = 2828, chance = 910 }, -- book + { name = "piggy bank", chance = 130 }, + { name = "small sapphire", chance = 550 }, + { name = "gold coin", chance = 64550, maxCount = 70 }, + { id = 3051, chance = 450 }, -- energy ring + { name = "platinum amulet", chance = 200 }, + { name = "wand of inferno", chance = 180 }, + { name = "protection amulet", chance = 790 }, + { name = "skull staff", chance = 350 }, + { name = "blue robe", chance = 40 }, + { name = "jewelled backpack", chance = 100 }, + { name = "pirate voodoo doll", chance = 430 }, + { id = 6090, chance = 490 }, -- music sheet + { name = "amber staff", chance = 100 }, + { name = "strong mana potion", chance = 740 }, + { name = "cultish mask", chance = 10250 }, + { name = "cultish symbol", chance = 890 }, + { name = "broken key ring", chance = 100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, condition = { type = CONDITION_POISON, totalDamage = 4, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -70, maxDamage = -185, range = 1, radius = 1, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYAREA, target = true }, + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYDAMAGE, target = true, duration = 5000 }, + { name = "speed", interval = 2000, chance = 10, speedChange = -360, range = 7, effect = CONST_ME_MAGIC_RED, target = true, duration = 6000 }, +} + +monster.defenses = { + defense = 25, + armor = 40, + mitigation = 1.18, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 60, maxDamage = 90, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_YELLOW_RINGS }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/feverish_citizen.lua b/data-canary/monster/humans/feverish_citizen.lua new file mode 100644 index 00000000000..01f13484e72 --- /dev/null +++ b/data-canary/monster/humans/feverish_citizen.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Feverish Citizen") +local monster = {} + +monster.description = "a feverish citizen" +monster.experience = 30 +monster.outfit = { + lookType = 425, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 719 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 2, + Locations = "Venore.", +} + +monster.health = 125 +monster.maxHealth = 125 +monster.race = "blood" +monster.corpse = 18114 +monster.speed = 73 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Arrrgh!", yell = false }, + { text = "I am the king of the world!", yell = false }, + { text = "Die Ferumbras!", yell = false }, + { text = "Tigerblood is running through my veins!", yell = false }, + { text = "You! It's you again!", yell = false }, + { text = "Stand still you tasty morsel!", yell = false }, + { text = "", yell = false }, + { text = "Burn heretic! Burn!", yell = false }, + { text = "Harrr!", yell = false }, + { text = "This is Venore!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 30300, maxCount = 35 }, + { id = 3115, chance = 4920 }, -- bone + { name = "worm", chance = 25730, maxCount = 3 }, + { name = "ominous piece of cloth", chance = 1660 }, + { name = "dubious piece of cloth", chance = 1720 }, + { name = "voluminous piece of cloth", chance = 2290 }, + { name = "obvious piece of cloth", chance = 2006 }, + { name = "ludicrous piece of cloth", chance = 2060 }, + { name = "luminous piece of cloth", chance = 2290 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -18 }, + { name = "drunk", interval = 2000, chance = 15, length = 3, spread = 2, effect = CONST_ME_POISONAREA, target = false, duration = 3000 }, +} + +monster.defenses = { + defense = 15, + armor = 14, + mitigation = 0.25, + { name = "outfit", interval = 2000, chance = 1, radius = 3, effect = CONST_ME_GREEN_RINGS, target = false, duration = 5000, outfitMonster = "bog raider" }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -15 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 75 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/gang_member.lua b/data-canary/monster/humans/gang_member.lua new file mode 100644 index 00000000000..9618d96ff31 --- /dev/null +++ b/data-canary/monster/humans/gang_member.lua @@ -0,0 +1,117 @@ +local mType = Game.createMonsterType("Gang Member") +local monster = {} + +monster.description = "a gang member" +monster.experience = 70 +monster.outfit = { + lookType = 151, + lookHead = 114, + lookBody = 19, + lookLegs = 23, + lookFeet = 40, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 526 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Throughout the Foreigner, Factory, and Trade Quarters in Yalahar.", +} + +monster.health = 295 +monster.maxHealth = 295 +monster.race = "blood" +monster.corpse = 18122 +monster.speed = 95 +monster.manaCost = 450 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 35, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "This is our territory!", yell = false }, + { text = "Help me guys!", yell = false }, + { text = "I don't like the way you look!", yell = false }, + { text = "You're wearing the wrong colours!", yell = false }, + { text = "Don't mess with us!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50110, maxCount = 30 }, + { id = 3093, chance = 740 }, -- club ring + { name = "studded legs", chance = 5220 }, + { name = "leather legs", chance = 15330 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, +} + +monster.defenses = { + defense = 15, + armor = 8, + mitigation = 0.38, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/gladiator.lua b/data-canary/monster/humans/gladiator.lua new file mode 100644 index 00000000000..c08cf75c50c --- /dev/null +++ b/data-canary/monster/humans/gladiator.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Gladiator") +local monster = {} + +monster.description = "a gladiator" +monster.experience = 90 +monster.outfit = { + lookType = 131, + lookHead = 78, + lookBody = 3, + lookLegs = 79, + lookFeet = 114, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 527 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Trade Quarter, Arena and Zoo Quarter.", +} + +monster.health = 185 +monster.maxHealth = 185 +monster.race = "blood" +monster.corpse = 18126 +monster.speed = 98 +monster.manaCost = 470 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You are no match for me!", yell = false }, + { text = "Feel my prowess.", yell = false }, + { text = "Fight!", yell = false }, + { text = "Take this!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 49500, maxCount = 30 }, + { id = 3264, chance = 12620 }, -- sword + { name = "mace", chance = 11160 }, + { name = "chain helmet", chance = 5200 }, + { name = "iron helmet", chance = 590 }, + { name = "brass armor", chance = 2750 }, + { name = "steel shield", chance = 840 }, + { name = "plate shield", chance = 9950 }, + { name = "meat", chance = 19000 }, + { name = "belted cape", chance = 340 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, +} + +monster.defenses = { + defense = 25, + armor = 14, + mitigation = 0.78, + { name = "speed", interval = 2000, chance = 15, speedChange = 215, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/glooth_bandit.lua b/data-canary/monster/humans/glooth_bandit.lua new file mode 100644 index 00000000000..1f46812490f --- /dev/null +++ b/data-canary/monster/humans/glooth_bandit.lua @@ -0,0 +1,140 @@ +local mType = Game.createMonsterType("Glooth Bandit") +local monster = {} + +monster.description = "a glooth bandit" +monster.experience = 2000 +monster.outfit = { + lookType = 129, + lookHead = 115, + lookBody = 80, + lookLegs = 114, + lookFeet = 114, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1119 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Underground Glooth Factory.", +} + +monster.health = 2600 +monster.maxHealth = 2600 +monster.race = "blood" +monster.corpse = 21882 +monster.speed = 150 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 5, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin + { id = 3035, chance = 100000, maxCount = 3 }, -- platinum coin + { id = 21816, chance = 9090 }, -- tainted glooth capsule + { id = 238, chance = 7142 }, -- great mana potion + { id = 21203, chance = 5555 }, -- glooth bag + { id = 9057, chance = 5555, maxCount = 2 }, -- small topaz + { id = 7642, chance = 5000 }, -- great spirit potion + { id = 239, chance = 4545 }, -- great health potion + { id = 21143, chance = 4000 }, -- glooth sandwich + { id = 21814, chance = 3030 }, -- glooth capsule + { id = 21179, chance = 2500 }, -- glooth blade + { id = 21178, chance = 2500 }, -- glooth club + { id = 21165, chance = 2000 }, -- rubber cap + { id = 3032, chance = 1492, maxCount = 2 }, -- small emerald + { id = 21158, chance = 1492 }, -- glooth spear + { id = 7643, chance = 1492 }, -- ultimate health potion + { id = 21146, chance = 1000 }, -- glooth steak + { id = 3324, chance = 1000 }, -- skull staff + { id = 21164, chance = 1000 }, -- glooth cape + { id = 3038, chance = 1000 }, -- green gem + { id = 21180, chance = 1000 }, -- glooth axe + { id = 3342, chance = 1000 }, -- war axe + { id = 811, chance = 1000 }, -- terra mantle + { id = 3344, chance = 1000 }, -- beastslayer axe + { id = 21183, chance = 500 }, -- glooth amulet + { id = 813, chance = 500 }, -- terra boots + { id = 812, chance = 500 }, -- terra legs +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 80, attack = 68 }, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = -60, maxDamage = -200, range = 8, shootEffect = CONST_ANI_ARROW, target = false }, +} + +monster.defenses = { + defense = 32, + armor = 46, + mitigation = 1.65, + { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 15 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/glooth_brigand.lua b/data-canary/monster/humans/glooth_brigand.lua new file mode 100644 index 00000000000..6de0f2eed41 --- /dev/null +++ b/data-canary/monster/humans/glooth_brigand.lua @@ -0,0 +1,137 @@ +local mType = Game.createMonsterType("Glooth Brigand") +local monster = {} + +monster.description = "a glooth brigand" +monster.experience = 1900 +monster.outfit = { + lookType = 137, + lookHead = 114, + lookBody = 114, + lookLegs = 110, + lookFeet = 114, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1120 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Underground Glooth Factory.", +} + +monster.health = 2400 +monster.maxHealth = 2400 +monster.race = "blood" +monster.corpse = 21888 +monster.speed = 160 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 5, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin + { id = 3035, chance = 100000, maxCount = 3 }, -- platinum coin + { id = 21203, chance = 9090 }, -- glooth bag + { id = 21816, chance = 7692 }, -- tainted glooth capsule + { id = 238, chance = 5882 }, -- great mana potion + { id = 21143, chance = 4000 }, -- glooth sandwich + { id = 21814, chance = 3030 }, -- glooth capsule + { id = 7642, chance = 2500 }, -- great spirit potion + { id = 21146, chance = 2000 }, -- glooth steak + { id = 7643, chance = 2000 }, -- ultimate health potion + { id = 21178, chance = 1515 }, -- glooth club + { id = 21183, chance = 1515 }, -- glooth amulet + { id = 7386, chance = 1000 }, -- mercenary sword + { id = 811, chance = 1000 }, -- terra mantle + { id = 281, chance = 1000 }, -- giant shimmering pearl (green) + { id = 814, chance = 1000 }, -- terra amulet + { id = 7412, chance = 1000 }, -- butcher's axe + { id = 3038, chance = 1000 }, -- green gem + { id = 813, chance = 502 }, -- terra boots + { id = 7419, chance = 502 }, -- dreaded cleaver + { id = 21167, chance = 502 }, -- heat core + { id = 21158, chance = 502 }, -- glooth spear + { id = 21165, chance = 502 }, -- rubber cap + { id = 830, chance = 502 }, -- terra hood +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 80, attack = 68 }, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = -40, maxDamage = -200, range = 8, shootEffect = CONST_ANI_ARROW, target = false }, +} + +monster.defenses = { + defense = 26, + armor = 51, + mitigation = 1.74, + { name = "combat", interval = 3000, chance = 35, type = COMBAT_HEALING, minDamage = 200, maxDamage = 245, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 25 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/grave_robber.lua b/data-canary/monster/humans/grave_robber.lua new file mode 100644 index 00000000000..59578cc54b0 --- /dev/null +++ b/data-canary/monster/humans/grave_robber.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Grave Robber") +local monster = {} + +monster.description = "a grave robber" +monster.experience = 65 +monster.outfit = { + lookType = 146, + lookHead = 57, + lookBody = 95, + lookLegs = 57, + lookFeet = 19, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 867 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 2, + Locations = "Horestis Tomb.", +} + +monster.health = 165 +monster.maxHealth = 165 +monster.race = "blood" +monster.corpse = 18130 +monster.speed = 95 +monster.manaCost = 435 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 54260, maxCount = 38 }, + { name = "axe", chance = 2500 }, + { name = "mace", chance = 1700 }, + { name = "iron helmet", chance = 500 }, + { name = "brass armor", chance = 1700 }, + { name = "steel shield", chance = 500 }, + { name = "nomad parchment", chance = 170 }, + { name = "potato", chance = 5680, maxCount = 3 }, + { name = "dirty turban", chance = 1700 }, + { name = "rope belt", chance = 7510 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -100, maxDamage = -160, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, +} + +monster.defenses = { + defense = 15, + armor = 7, + mitigation = 0.38, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/hardened_usurper_archer.lua b/data-canary/monster/humans/hardened_usurper_archer.lua new file mode 100644 index 00000000000..3da9570b2a1 --- /dev/null +++ b/data-canary/monster/humans/hardened_usurper_archer.lua @@ -0,0 +1,100 @@ +local mType = Game.createMonsterType("Hardened Usurper Archer") +local monster = {} + +monster.description = "a hardened usurper archer" +monster.experience = 0 +monster.outfit = { + lookType = 1316, + lookHead = 57, + lookBody = 38, + lookLegs = 21, + lookFeet = 21, + lookAddons = 2, + lookMount = 0, +} + +monster.health = 7300 +monster.maxHealth = 7300 +monster.race = "blood" +monster.corpse = 0 +monster.speed = 125 +monster.manaCost = 0 + +monster.faction = FACTION_LIONUSURPERS +monster.enemyFactions = { FACTION_PLAYER, FACTION_LION } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "combat", interval = 2000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -430, range = 7, shootEffect = CONST_ANI_BURSTARROW, target = true }, + { name = "combat", interval = 6000, chance = 8, type = COMBAT_DEATHDAMAGE, minDamage = -160, maxDamage = -485, range = 7, shootEffect = CONST_ANI_SMALLHOLY, target = true }, + { name = "combat", interval = 4000, chance = 6, type = COMBAT_DEATHDAMAGE, minDamage = -160, maxDamage = -545, range = 7, effect = CONST_ME_MORTAREA, shootEffect = CONST_ANI_SUDDENDEATH, target = true }, + { name = "combat", interval = 4000, chance = 6, type = COMBAT_ICEDAMAGE, minDamage = -150, maxDamage = -425, radius = 3, effect = CONST_ME_ICEAREA, target = true }, +} + +monster.defenses = { + defense = 50, + armor = 0, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/hardened_usurper_knight.lua b/data-canary/monster/humans/hardened_usurper_knight.lua new file mode 100644 index 00000000000..4ae4ae081e1 --- /dev/null +++ b/data-canary/monster/humans/hardened_usurper_knight.lua @@ -0,0 +1,101 @@ +local mType = Game.createMonsterType("Hardened Usurper Knight") +local monster = {} + +monster.description = "a hardened usurper knight" +monster.experience = 0 +monster.outfit = { + lookType = 1317, + lookHead = 57, + lookBody = 38, + lookLegs = 76, + lookFeet = 76, + lookAddons = 1, + lookMount = 0, +} + +monster.health = 8200 +monster.maxHealth = 8200 +monster.race = "blood" +monster.corpse = 0 +monster.speed = 130 +monster.manaCost = 0 + +monster.faction = FACTION_LIONUSURPERS +monster.enemyFactions = { FACTION_PLAYER, FACTION_LION } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500, effect = CONST_ME_DRAWBLOOD }, + { name = "combat", interval = 6000, chance = 9, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -300, radius = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 6000, chance = 13, type = COMBAT_ICEDAMAGE, minDamage = -150, maxDamage = -400, length = 4, spread = 0, effect = CONST_ME_ICEATTACK, target = false }, + { name = "singlecloudchain", interval = 8000, chance = 12, minDamage = -200, maxDamage = -450, range = 4, effect = CONST_ME_ENERGYHIT, target = true }, +} + +monster.defenses = { + defense = 86, + armor = 0, + -- mitigation = ???, + { name = "combat", interval = 4000, chance = 40, type = COMBAT_HEALING, minDamage = 200, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/hardened_usurper_warlock.lua b/data-canary/monster/humans/hardened_usurper_warlock.lua new file mode 100644 index 00000000000..6b25ce5ad76 --- /dev/null +++ b/data-canary/monster/humans/hardened_usurper_warlock.lua @@ -0,0 +1,100 @@ +local mType = Game.createMonsterType("Hardened Usurper Warlock") +local monster = {} + +monster.description = "a hardened usurper warlock" +monster.experience = 0 +monster.outfit = { + lookType = 1316, + lookHead = 57, + lookBody = 38, + lookLegs = 21, + lookFeet = 21, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 7500 +monster.maxHealth = 7500 +monster.race = "blood" +monster.corpse = 0 +monster.speed = 165 +monster.manaCost = 0 + +monster.faction = FACTION_LIONUSURPERS +monster.enemyFactions = { FACTION_PLAYER, FACTION_LION } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250, effect = CONST_ME_DRAWBLOOD }, + { name = "singledeathchain", interval = 6000, chance = 7, minDamage = -250, maxDamage = -530, range = 5, effect = CONST_ME_MORTAREA, target = true }, + { name = "singleicechain", interval = 6000, chance = 8, minDamage = -150, maxDamage = -450, range = 5, effect = CONST_ME_ICEATTACK, target = true }, + { name = "combat", interval = 4000, chance = 11, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -450, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true }, -- avalanche +} + +monster.defenses = { + defense = 50, + armor = 0, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/hero.lua b/data-canary/monster/humans/hero.lua new file mode 100644 index 00000000000..401a41b9025 --- /dev/null +++ b/data-canary/monster/humans/hero.lua @@ -0,0 +1,143 @@ +local mType = Game.createMonsterType("Hero") +local monster = {} + +monster.description = "a hero" +monster.experience = 1200 +monster.outfit = { + lookType = 73, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 73 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "In Hero Cave in Edron, it has many rooms with many kinds of monsters and different amounts of Heroes. \z + Also in Magician Quarter, accompanied by other monsters. Old Fortress.", +} + +monster.health = 1400 +monster.maxHealth = 1400 +monster.race = "blood" +monster.corpse = 18134 +monster.speed = 140 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + health = 10, + damage = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Let's have a fight!", yell = false }, + { text = "I will sing a tune at your grave.", yell = false }, + { text = "Have you seen princess Lumelia?", yell = false }, + { text = "Welcome to my battleground!", yell = false }, +} + +monster.loot = { + { id = 2815, chance = 45000 }, -- scroll + { id = 2949, chance = 1640 }, -- lyre + { name = "piggy bank", chance = 80 }, + { id = 3003, chance = 2190 }, -- rope + { name = "wedding ring", chance = 4910 }, + { name = "gold coin", chance = 59500, maxCount = 100 }, + { name = "might ring", chance = 470 }, + { name = "two handed sword", chance = 1500 }, + { name = "war hammer", chance = 870 }, + { name = "fire sword", chance = 550 }, + { name = "bow", chance = 13300 }, + { name = "crown armor", chance = 490 }, + { name = "crown legs", chance = 660 }, + { name = "crown helmet", chance = 450 }, + { name = "crown shield", chance = 280 }, + { name = "arrow", chance = 26000, maxCount = 13 }, + { name = "green tunic", chance = 8000 }, + { name = "scarf", chance = 1110 }, + { name = "meat", chance = 8200, maxCount = 3 }, + { name = "grapes", chance = 19850 }, + { name = "red rose", chance = 20450 }, + { name = "red piece of cloth", chance = 2006 }, + { name = "sniper arrow", chance = 11400, maxCount = 4 }, + { name = "great health potion", chance = 720 }, + { name = "small notebook", chance = 930 }, + { name = "scroll of heroic deeds", chance = 5000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -120, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 35, + mitigation = 1.32, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 40 }, + { type = COMBAT_EARTHDAMAGE, percent = 50 }, + { type = COMBAT_FIREDAMAGE, percent = 30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = -20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/hulking_carnisylvan.lua b/data-canary/monster/humans/hulking_carnisylvan.lua new file mode 100644 index 00000000000..46cd198afc0 --- /dev/null +++ b/data-canary/monster/humans/hulking_carnisylvan.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Hulking Carnisylvan") +local monster = {} + +monster.description = "a hulking carnisylvan" +monster.experience = 4700 +monster.outfit = { + lookType = 1418, + lookHead = 21, + lookBody = 3, + lookLegs = 20, + lookFeet = 57, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2107 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Forest of Life.", +} + +monster.health = 8600 +monster.maxHealth = 8600 +monster.race = "blood" +monster.corpse = 36881 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 70000, maxCount = 30 }, + { id = 3115, chance = 27670, maxCount = 1 }, -- bone + { name = "great health potion", chance = 14990, maxCount = 4 }, + { name = "carnisylvan bark", chance = 12100, maxCount = 1 }, + { name = "carnisylvan finger", chance = 10090, maxCount = 2 }, + { name = "terra hood", chance = 7200 }, + { name = "terra boots", chance = 4900 }, + { name = "knight axe", chance = 3460 }, + { name = "lightning headband", chance = 3460 }, + { name = "dragonbone staff", chance = 5190 }, + { name = "diamond sceptre", chance = 4320 }, + { name = "epee", chance = 2590 }, + { name = "war hammer", chance = 3750 }, + { name = "human teeth", chance = 580 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, + { name = "combat", interval = 2000, chance = 60, type = COMBAT_EARTHDAMAGE, minDamage = -350, maxDamage = -450, range = 5, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_POISONAREA, target = true }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -600, maxDamage = -800, radius = 4, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -350, maxDamage = -400, length = 4, spread = 0, effect = CONST_ME_EXPLOSIONHIT, target = false }, +} + +monster.defenses = { + defense = 51, + armor = 51, + mitigation = 1.32, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = -20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/hunter.lua b/data-canary/monster/humans/hunter.lua index c065d8ec4ea..aa585caf39e 100644 --- a/data-canary/monster/humans/hunter.lua +++ b/data-canary/monster/humans/hunter.lua @@ -7,7 +7,7 @@ monster.outfit = { lookType = 129, lookHead = 95, lookBody = 116, - lookLegs = 121, + lookLegs = 120, lookFeet = 115, lookAddons = 0, lookMount = 0, @@ -45,7 +45,7 @@ monster.strategiesTarget = { } monster.flags = { - summonable = true, + summonable = false, attackable = true, hostile = true, convinceable = true, @@ -72,30 +72,30 @@ monster.light = { monster.voices = { interval = 5000, chance = 10, - { text = "Guess who we're hunting, hahaha!", yell = false }, { text = "Guess who we are hunting!", yell = false }, + { text = "Guess who we're hunting, hahaha!", yell = false }, { text = "Bullseye!", yell = false }, { text = "You'll make a nice trophy!", yell = false }, } monster.loot = { { id = 2920, chance = 3300 }, -- torch - { id = 3030, chance = 150 }, -- small ruby - { id = 3085, chance = 3000 }, -- dragon necklace - { id = 3350, chance = 5770 }, -- bow - { id = 3354, chance = 5050 }, -- brass helmet - { id = 3359, chance = 5070 }, -- brass armor - { id = 3447, chance = 82000, maxCount = 22 }, -- arrow - { id = 3448, chance = 4500, maxCount = 4 }, -- poison arrow + { name = "small ruby", chance = 150 }, + { name = "dragon necklace", chance = 3000 }, + { name = "bow", chance = 5770 }, + { name = "brass helmet", chance = 5050 }, + { name = "brass armor", chance = 5070 }, + { name = "arrow", chance = 82000, maxCount = 22 }, + { name = "poison arrow", chance = 4500, maxCount = 4 }, { id = 3449, chance = 5360, maxCount = 3 }, -- burst arrow - { id = 3586, chance = 20300, maxCount = 2 }, -- orange - { id = 3601, chance = 11370, maxCount = 2 }, -- roll - { id = 5875, chance = 610 }, -- sniper gloves - { id = 5907, chance = 120 }, -- slingshot + { name = "orange", chance = 20300, maxCount = 2 }, + { name = "roll", chance = 11370, maxCount = 2 }, + { name = "sniper gloves", chance = 540 }, + { name = "slingshot", chance = 120 }, { id = 7394, chance = 190 }, -- wolf trophy { id = 7397, chance = 520 }, -- deer trophy { id = 7400, chance = 70 }, -- lion trophy - { id = 11469, chance = 10240 }, -- hunter's quiver + { name = "hunter's quiver", chance = 10240 }, } monster.attacks = { @@ -105,11 +105,12 @@ monster.attacks = { monster.defenses = { defense = 15, - armor = 15, + armor = 8, + mitigation = 0.25, } monster.elements = { - { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, { type = COMBAT_ENERGYDAMAGE, percent = 0 }, { type = COMBAT_EARTHDAMAGE, percent = 0 }, { type = COMBAT_FIREDAMAGE, percent = 0 }, diff --git a/data-canary/monster/humans/ice_witch.lua b/data-canary/monster/humans/ice_witch.lua new file mode 100644 index 00000000000..8d913366921 --- /dev/null +++ b/data-canary/monster/humans/ice_witch.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Ice Witch") +local monster = {} + +monster.description = "an ice witch" +monster.experience = 580 +monster.outfit = { + lookType = 149, + lookHead = 0, + lookBody = 9, + lookLegs = 86, + lookFeet = 86, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 331 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Ice Witch Temple, tower in Krimhorn, caves around Hrodmir ('camps' area), \z + Formorgar Glacier deepest mines, Magician Quarter in Yalahar (Level 60 Requirement Door).", +} + +monster.health = 650 +monster.maxHealth = 650 +monster.race = "blood" +monster.corpse = 18142 +monster.speed = 114 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 70, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "So you think you are cool?", yell = false }, + { text = "I hope it is not too cold for you! HeHeHe.", yell = false }, + { text = "Freeze!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 29630, maxCount = 90 }, + { name = "clerical mace", chance = 920 }, + { name = "mystic turban", chance = 430 }, + { name = "green mushroom", chance = 1310 }, + { name = "shard", chance = 530 }, + { name = "diamond sceptre", chance = 330 }, + { id = 7441, chance = 10000 }, -- ice cube + { name = "crystal sword", chance = 400 }, + { name = "pair of earmuffs", chance = 90 }, + { name = "strong mana potion", chance = 820 }, + { name = "glacier shoes", chance = 280 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 }, + { name = "outfit", interval = 2000, chance = 1, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitItem = 7172 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -60, maxDamage = -130, length = 5, spread = 2, effect = CONST_ME_ICETORNADO, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -55, maxDamage = -115, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = true }, + { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICETORNADO, target = false, duration = 20000 }, +} + +monster.defenses = { + defense = 20, + armor = 70, + mitigation = 0.91, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 90, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = 50 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/infernalist.lua b/data-canary/monster/humans/infernalist.lua new file mode 100644 index 00000000000..7a7931e86db --- /dev/null +++ b/data-canary/monster/humans/infernalist.lua @@ -0,0 +1,145 @@ +local mType = Game.createMonsterType("Infernalist") +local monster = {} + +monster.description = "an infernalist" +monster.experience = 4000 +monster.outfit = { + lookType = 130, + lookHead = 78, + lookBody = 76, + lookLegs = 94, + lookFeet = 39, + lookAddons = 2, + lookMount = 0, +} + +monster.raceId = 529 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Magician Quarter, Hero Cave, Demona, Fury Dungeon.", +} + +monster.health = 3650 +monster.maxHealth = 3650 +monster.race = "blood" +monster.corpse = 18146 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 95, + targetDistance = 4, + runHealth = 900, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 1, + summons = { + { name = "fire elemental", chance = 20, interval = 2000, count = 1 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Nothing will remain but your scorched bones!", yell = false }, + { text = "Some like it hot!", yell = false }, + { text = "It's cooking time!", yell = false }, + { text = "Feel the heat of battle!", yell = false }, +} + +monster.loot = { + { name = "red tome", chance = 300 }, + { name = "piggy bank", chance = 220 }, + { name = "gold coin", chance = 56500, maxCount = 100 }, + { name = "gold coin", chance = 40000, maxCount = 47 }, + { id = 3051, chance = 1800 }, -- energy ring + { name = "skull staff", chance = 6500 }, + { name = "magic sulphur", chance = 600 }, + { name = "red piece of cloth", chance = 1420 }, + { name = "great mana potion", chance = 19700 }, + { name = "great health potion", chance = 1900 }, + { name = "small enchanted ruby", chance = 4250 }, + { name = "magma boots", chance = 300 }, + { name = "raspberry", chance = 8500, maxCount = 5 }, + { name = "spellbook of mind control", chance = 370 }, + { name = "royal tapestry", chance = 520 }, + { id = 9056, chance = 820 }, -- black skull + { name = "gold ingot", chance = 70 }, + { name = "crystal of power", chance = 220 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_FIREDAMAGE, minDamage = -65, maxDamage = -180, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_HITBYFIRE, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -180, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -53, maxDamage = -120, range = 7, radius = 3, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_TELEPORT, target = true }, + { name = "firefield", interval = 2000, chance = 15, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -250, length = 8, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -150, radius = 2, effect = CONST_ME_EXPLOSIONAREA, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 33, + mitigation = 1.15, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 60, maxDamage = 230, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 95 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/lion_archer.lua b/data-canary/monster/humans/lion_archer.lua new file mode 100644 index 00000000000..706a398a613 --- /dev/null +++ b/data-canary/monster/humans/lion_archer.lua @@ -0,0 +1,98 @@ +local mType = Game.createMonsterType("Lion Archer") +local monster = {} + +monster.description = "a lion archer" +monster.experience = 0 +monster.outfit = { + lookType = 1316, + lookHead = 0, + lookBody = 78, + lookLegs = 57, + lookFeet = 57, + lookAddons = 2, + lookMount = 0, +} + +monster.health = 7300 +monster.maxHealth = 7300 +monster.race = "blood" +monster.corpse = 33961 +monster.speed = 125 +monster.manaCost = 0 + +monster.faction = FACTION_LION +monster.enemyFactions = { FACTION_LIONUSURPERS } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 6, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.attacks = { + { name = "combat", interval = 2000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -400, range = 7, shootEffect = CONST_ANI_BURSTARROW, target = true }, + { name = "combat", interval = 6000, chance = 22, type = COMBAT_HOLYDAMAGE, minDamage = -200, maxDamage = -500, range = 7, radius = 4, effect = CONST_ME_HOLYAREA, target = true }, + { name = "combat", interval = 4000, chance = 12, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -500, range = 7, effect = CONST_ME_HOLYDAMAGE, target = true }, + { name = "combat", interval = 4000, chance = 17, type = COMBAT_ICEDAMAGE, minDamage = -400, maxDamage = -500, radius = 3, effect = CONST_ME_ICEAREA, target = false }, +} + +monster.defenses = { + defense = 86, + armor = 0, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/lion_knight.lua b/data-canary/monster/humans/lion_knight.lua new file mode 100644 index 00000000000..c6f40217737 --- /dev/null +++ b/data-canary/monster/humans/lion_knight.lua @@ -0,0 +1,97 @@ +local mType = Game.createMonsterType("Lion Knight") +local monster = {} + +monster.description = "a lion knight" +monster.experience = 0 +monster.outfit = { + lookType = 1317, + lookHead = 0, + lookBody = 78, + lookLegs = 57, + lookFeet = 57, + lookAddons = 1, + lookMount = 0, +} + +monster.health = 8200 +monster.maxHealth = 8200 +monster.race = "blood" +monster.corpse = 33957 +monster.speed = 130 +monster.manaCost = 0 + +monster.faction = FACTION_LION +monster.enemyFactions = { FACTION_LIONUSURPERS } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400, effect = CONST_ME_DRAWBLOOD }, + { name = "combat", interval = 6000, chance = 12, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -500, radius = 3, effect = CONST_ME_HOLYAREA, target = false }, + { name = "combat", interval = 4000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -200, maxDamage = -500, range = 5, radius = 3, shootEffect = CONST_ANI_SMALLHOLY, effect = CONST_ME_HOLYAREA, target = true }, +} + +monster.defenses = { + defense = 86, + armor = 0, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/lion_warlock.lua b/data-canary/monster/humans/lion_warlock.lua new file mode 100644 index 00000000000..3919c51fc69 --- /dev/null +++ b/data-canary/monster/humans/lion_warlock.lua @@ -0,0 +1,98 @@ +local mType = Game.createMonsterType("Lion Warlock") +local monster = {} + +monster.description = "a lion warlock" +monster.experience = 0 +monster.outfit = { + lookType = 1316, + lookHead = 0, + lookBody = 78, + lookLegs = 96, + lookFeet = 76, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 7500 +monster.maxHealth = 7500 +monster.race = "blood" +monster.corpse = 33965 +monster.speed = 165 +monster.manaCost = 0 + +monster.faction = FACTION_LION +monster.enemyFactions = { FACTION_LIONUSURPERS } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400, effect = CONST_ME_DRAWBLOOD }, + { name = "combat", interval = 6000, chance = 22, type = COMBAT_HOLYDAMAGE, minDamage = -200, maxDamage = -500, range = 7, radius = 4, effect = CONST_ME_HOLYAREA, target = true }, + { name = "combat", interval = 6000, chance = 12, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -500, range = 7, effect = CONST_ME_HOLYDAMAGE, target = true }, + { name = "combat", interval = 4000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -450, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true }, -- avalanche +} + +monster.defenses = { + defense = 50, + armor = 0, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/mad_scientist.lua b/data-canary/monster/humans/mad_scientist.lua new file mode 100644 index 00000000000..e33ce268bea --- /dev/null +++ b/data-canary/monster/humans/mad_scientist.lua @@ -0,0 +1,126 @@ +local mType = Game.createMonsterType("Mad Scientist") +local monster = {} + +monster.description = "a mad scientist" +monster.experience = 205 +monster.outfit = { + lookType = 133, + lookHead = 39, + lookBody = 0, + lookLegs = 19, + lookFeet = 20, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 528 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Magician Quarter, Trade Quarter, Factory Quarter,Isle of Evil, Tiquanda Laboratory.", +} + +monster.health = 325 +monster.maxHealth = 325 +monster.race = "blood" +monster.corpse = 18158 +monster.speed = 90 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Die in the name of Science!", yell = false }, + { text = "You will regret interrupting my studies!", yell = false }, + { text = "Let me test this!", yell = false }, + { text = "I will study your corpse!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 30000, maxCount = 65 }, + { name = "gold coin", chance = 30000, maxCount = 50 }, + { id = 3046, chance = 2000 }, -- magic light wand + { name = "life crystal", chance = 2000 }, + { name = "cookie", chance = 1200, maxCount = 5 }, + { name = "white mushroom", chance = 8000, maxCount = 3 }, + { name = "mastermind potion", chance = 130 }, + { name = "health potion", chance = 19000 }, + { name = "mana potion", chance = 19000 }, + { name = "small enchanted amethyst", chance = 470 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -20, maxDamage = -56, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_POFF, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -20, maxDamage = -36, shootEffect = CONST_ANI_POISON, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = -300, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_SMALLPLANTS, target = true, duration = 2000 }, +} + +monster.defenses = { + defense = 15, + armor = 15, + mitigation = 0.64, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 30, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/monk.lua b/data-canary/monster/humans/monk.lua index a14fe1936e6..cf168ca7af9 100644 --- a/data-canary/monster/humans/monk.lua +++ b/data-canary/monster/humans/monk.lua @@ -49,7 +49,7 @@ monster.flags = { summonable = true, attackable = true, hostile = true, - convinceable = true, + convinceable = false, pushable = false, rewardBoss = false, illusionable = true, @@ -80,18 +80,18 @@ monster.voices = { monster.loot = { { id = 2815, chance = 2000 }, -- scroll - { id = 2885, chance = 820 }, -- brown flask + { name = "brown flask", chance = 820 }, { id = 2914, chance = 880 }, -- lamp - { id = 3031, chance = 15000, maxCount = 18 }, -- gold coin + { name = "gold coin", chance = 15000, maxCount = 18 }, { id = 3050, chance = 100 }, -- power ring - { id = 3061, chance = 1002 }, -- life crystal - { id = 3077, chance = 2240 }, -- ankh + { name = "life crystal", chance = 1002 }, + { name = "ankh", chance = 2240 }, { id = 3289, chance = 440 }, -- staff - { id = 3551, chance = 710 }, -- sandals - { id = 3600, chance = 20000 }, -- bread - { id = 9646, chance = 4930 }, -- book of prayers - { id = 11492, chance = 2950 }, -- rope belt - { id = 11493, chance = 1001 }, -- safety pin + { name = "sandals", chance = 710 }, + { name = "bread", chance = 20000 }, + { name = "book of prayers", chance = 4930 }, + { name = "rope belt", chance = 2950 }, + { name = "safety pin", chance = 1001 }, } monster.attacks = { @@ -100,13 +100,14 @@ monster.attacks = { monster.defenses = { defense = 30, - armor = 30, + armor = 25, + mitigation = 1.37, { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 30, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, } monster.elements = { - { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, { type = COMBAT_ENERGYDAMAGE, percent = 0 }, { type = COMBAT_EARTHDAMAGE, percent = 0 }, { type = COMBAT_FIREDAMAGE, percent = 0 }, diff --git a/data-canary/monster/humans/monk_of_the_order.lua b/data-canary/monster/humans/monk_of_the_order.lua new file mode 100644 index 00000000000..fcc9c4fb82b --- /dev/null +++ b/data-canary/monster/humans/monk_of_the_order.lua @@ -0,0 +1,96 @@ +local mType = Game.createMonsterType("Monk of the Order") +local monster = {} + +monster.description = "a monk of the order" +monster.experience = 200 +monster.outfit = { + lookType = 57, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 240 +monster.maxHealth = 240 +monster.race = "blood" +monster.corpse = 18090 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 20, + damage = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 }, +} + +monster.defenses = { + defense = 30, + armor = 0, + -- mitigation = ???, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 30, maxDamage = 50, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -1 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 1 }, + { type = COMBAT_DEATHDAMAGE, percent = 1 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/mutated_human.lua b/data-canary/monster/humans/mutated_human.lua new file mode 100644 index 00000000000..1b267a8e260 --- /dev/null +++ b/data-canary/monster/humans/mutated_human.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Mutated Human") +local monster = {} + +monster.description = "a mutated human" +monster.experience = 150 +monster.outfit = { + lookType = 323, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 521 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Alchemist Quarter and Factory Quarter (Yalahar), Robson's Isle, Tiquanda Laboratory.", +} + +monster.health = 240 +monster.maxHealth = 240 +monster.race = "blood" +monster.corpse = 5798 +monster.speed = 77 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Take that creature off my back!! I can feel it!", yell = false }, + { text = "You will regret interrupting my studies!", yell = false }, + { text = "You will be the next infected one... CRAAAHHH!", yell = false }, + { text = "Science... is a curse.", yell = false }, + { text = "Run as fast as you can.", yell = false }, + { text = "Oh by the gods! What is this... aaaaaargh!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 44000, maxCount = 80 }, + { name = "gold coin", chance = 44000, maxCount = 50 }, + { name = "strange talisman", chance = 4980 }, + { name = "silver amulet", chance = 70 }, + { name = "fishbone", chance = 10050 }, + { id = 3264, chance = 5030 }, -- sword + { name = "scale armor", chance = 8080 }, + { id = 3607, chance = 8000 }, -- cheese + { name = "fern", chance = 420 }, + { name = "worm", chance = 7110, maxCount = 2 }, + { name = "peanut", chance = 580 }, + { id = 8894, chance = 190 }, -- heavily rusted armor + { name = "mutated flesh", chance = 19940 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90, condition = { type = CONDITION_POISON, totalDamage = 60, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -60, length = 3, spread = 1, effect = CONST_ME_POISONAREA, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 20, minDamage = -190, maxDamage = -280, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "speed", interval = 2000, chance = 10, speedChange = -600, range = 7, effect = CONST_ME_STUN, target = true, duration = 30000 }, +} + +monster.defenses = { + defense = 15, + armor = 14, + mitigation = 0.59, + { name = "speed", interval = 2000, chance = 15, speedChange = 220, effect = CONST_ME_GREEN_RINGS, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/necromancer.lua b/data-canary/monster/humans/necromancer.lua new file mode 100644 index 00000000000..7e726147346 --- /dev/null +++ b/data-canary/monster/humans/necromancer.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Necromancer") +local monster = {} + +monster.description = "a necromancer" +monster.experience = 580 +monster.outfit = { + lookType = 9, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 9 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "All the Tombs, Lich Hell, Drefia, Medusa Shield Quest room, Old Fortress, Old Masonry, \z + beneath Fenrock, Cemetery Quarter and Magician Quarter.", +} + +monster.health = 580 +monster.maxHealth = 580 +monster.race = "blood" +monster.corpse = 18174 +monster.speed = 94 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 3, + summons = { + { name = "Ghoul", chance = 15, interval = 2000, count = 1 }, + { name = "Ghost", chance = 5, interval = 2000, count = 1 }, + { name = "Mummy", chance = 5, interval = 2000, count = 1 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Taste the sweetness of death!", yell = false }, + { text = "Your corpse will be mine.", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 30050, maxCount = 90 }, + { name = "boots of haste", chance = 210 }, + { name = "clerical mace", chance = 390 }, + { name = "skull staff", chance = 100 }, + { name = "poison arrow", chance = 15000, maxCount = 5 }, + { name = "mystic turban", chance = 500 }, + { name = "green mushroom", chance = 1470 }, + { name = "noble axe", chance = 10 }, + { name = "strong mana potion", chance = 300 }, + { name = "spellbook of warding", chance = 130 }, + { name = "book of necromantic rituals", chance = 10130 }, + { name = "necromantic robe", chance = 1001 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -60, maxDamage = -120, range = 1, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -65, maxDamage = -120, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 50, + mitigation = 1.04, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/necromancer_servant.lua b/data-canary/monster/humans/necromancer_servant.lua new file mode 100644 index 00000000000..b6fa4e885d5 --- /dev/null +++ b/data-canary/monster/humans/necromancer_servant.lua @@ -0,0 +1,106 @@ +local mType = Game.createMonsterType("Necromancer Servant") +local monster = {} + +monster.description = "a necromancer servant" +monster.experience = 590 +monster.outfit = { + lookType = 9, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 600 +monster.maxHealth = 600 +monster.race = "blood" +monster.corpse = 18174 +monster.speed = 105 +monster.manaCost = 0 + +monster.events = { + "NecromancerServantDeath", +} + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 74230, maxCount = 70 }, + { name = "poison arrow", chance = 74230, maxCount = 5 }, + { name = "book of necromantic rituals", chance = 74230 }, + { name = "incantation fragment", chance = 100000 }, + { name = "necromantic robe", chance = 54230 }, + { name = "boots of haste", chance = 5000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, + { name = "combat", interval = 1000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -5, maxDamage = -40, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, +} + +monster.defenses = { + defense = 11, + armor = 11, + mitigation = 0.94, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/nomad.lua b/data-canary/monster/humans/nomad.lua new file mode 100644 index 00000000000..9c34282bf80 --- /dev/null +++ b/data-canary/monster/humans/nomad.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Nomad") +local monster = {} + +monster.description = "a nomad" +monster.experience = 60 +monster.outfit = { + lookType = 146, + lookHead = 97, + lookBody = 39, + lookLegs = 40, + lookFeet = 3, + lookAddons = 3, + lookMount = 0, +} + +monster.events = { + "NomadDeath", +} + +monster.raceId = 310 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 1, + Locations = "Ankrahmun Pharaoh Tombs, Deeper Drefia, Kha'zeel Mountains, Northern Darama Desert, \z + Southern Darama Desert, Yalahar Foreigner Quarter, Yalahar Trade Quarter.", +} + +monster.health = 160 +monster.maxHealth = 160 +monster.race = "blood" +monster.corpse = 18185 +monster.speed = 95 +monster.manaCost = 420 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "We are the true sons of the desert!", yell = false }, + { text = "I will leave your remains to the vultures!", yell = false }, + { text = "Your riches will be mine!", yell = false }, + { text = "We are swift as the wind of the desert!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 56250, maxCount = 40 }, + { name = "axe", chance = 2730 }, + { name = "mace", chance = 2120 }, + { name = "iron helmet", chance = 650 }, + { name = "brass armor", chance = 2350 }, + { name = "steel shield", chance = 920 }, + { name = "nomad parchment", chance = 200 }, + { name = "potato", chance = 4840, maxCount = 3 }, + { name = "dirty turban", chance = 2160 }, + { name = "rope belt", chance = 6420 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, radius = 1, effect = CONST_ME_SOUND_WHITE, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 15, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/nomad_blue.lua b/data-canary/monster/humans/nomad_blue.lua new file mode 100644 index 00000000000..e59e9511ad9 --- /dev/null +++ b/data-canary/monster/humans/nomad_blue.lua @@ -0,0 +1,126 @@ +local mType = Game.createMonsterType("Nomad Blue") +local monster = {} + +monster.name = "Nomad" +monster.description = "a nomad" +monster.experience = 60 +monster.outfit = { + lookType = 146, + lookHead = 104, + lookBody = 48, + lookLegs = 49, + lookFeet = 3, + lookAddons = 3, + lookMount = 0, +} + +monster.events = { + "NomadDeath", +} + +monster.raceId = 776 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 1, + Locations = "Drefia, Ankrahmun.", +} + +monster.health = 160 +monster.maxHealth = 160 +monster.race = "blood" +monster.corpse = 18322 +monster.speed = 95 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I will leave your remains to the vultures!", yell = false }, + { text = "We are the true sons of the desert!", yell = false }, + { text = "We are swift as the wind of the desert!", yell = false }, + { text = "Your riches will be mine!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 56000, maxCount = 40 }, -- gold coin + { id = 11492, chance = 6420 }, -- rope belt + { id = 8010, chance = 4840, maxCount = 3 }, -- potato + { id = 3274, chance = 2730 }, -- axe + { id = 3359, chance = 2350 }, -- brass armor + { id = 3286, chance = 2150 }, -- mace + { id = 11456, chance = 2140 }, -- dirty turban + { id = 3409, chance = 900 }, -- steel shield + { id = 3353, chance = 660 }, -- iron helmet + { id = 7533, chance = 210 }, -- nomad parchment +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_SOUND_WHITE, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 15, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/nomad_female.lua b/data-canary/monster/humans/nomad_female.lua new file mode 100644 index 00000000000..de49e1f6cc4 --- /dev/null +++ b/data-canary/monster/humans/nomad_female.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Nomad Female") +local monster = {} + +monster.name = "Nomad" +monster.description = "a nomad" +monster.experience = 60 +monster.outfit = { + lookType = 150, + lookHead = 96, + lookBody = 39, + lookLegs = 40, + lookFeet = 3, + lookAddons = 3, + lookMount = 0, +} + +monster.events = { + "NomadDeath", +} + +monster.raceId = 777 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 1, + Locations = "Drefia, Ankrahmun.", +} + +monster.health = 160 +monster.maxHealth = 160 +monster.race = "blood" +monster.corpse = 18181 +monster.speed = 95 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I will leave your remains to the vultures!", yell = false }, + { text = "We are the true sons of the desert!", yell = false }, + { text = "We are swift as the wind of the desert!", yell = false }, + { text = "Your riches will be mine!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 56000, maxCount = 40 }, -- gold coin + { id = 11492, chance = 6420 }, -- rope belt + { id = 8010, chance = 4840, maxCount = 3 }, -- potato + { id = 3274, chance = 2730 }, -- axe + { id = 3359, chance = 2350 }, -- brass armor + { id = 3286, chance = 2150 }, -- mace + { id = 11456, chance = 2140 }, -- dirty turban + { id = 3409, chance = 900 }, -- steel shield + { id = 3353, chance = 660 }, -- iron helmet + { id = 7533, chance = 210 }, -- nomad parchment +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, radius = 1, effect = CONST_ME_SOUND_WHITE, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 15, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/novice_of_the_cult.lua b/data-canary/monster/humans/novice_of_the_cult.lua new file mode 100644 index 00000000000..5803fcdfedf --- /dev/null +++ b/data-canary/monster/humans/novice_of_the_cult.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Novice of the Cult") +local monster = {} + +monster.description = "a novice of the cult" +monster.experience = 100 +monster.outfit = { + lookType = 133, + lookHead = 114, + lookBody = 114, + lookLegs = 76, + lookFeet = 114, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 255 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Liberty Bay Cult Cave, Formorgar Mines, Yalahar Magician Quarter, \z + in the caves on top of the Hrodmir mountains.", +} + +monster.health = 285 +monster.maxHealth = 285 +monster.race = "blood" +monster.corpse = 18186 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 40, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 1, + summons = { + { name = "Chicken", chance = 10, interval = 2000, count = 1 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Fear us!", yell = false }, + { text = "You will not tell anyone what you have seen!", yell = false }, + { text = "Your curiosity will be punished!", yell = false }, +} + +monster.loot = { + { id = 2828, chance = 700 }, -- book + { name = "small diamond", chance = 210 }, + { name = "gold coin", chance = 43380, maxCount = 40 }, + { name = "wand of vortex", chance = 450 }, + { name = "garlic necklace", chance = 420 }, + { id = 3097, chance = 500 }, -- dwarven ring + { name = "scarf", chance = 2900 }, + { name = "pirate voodoo doll", chance = 520 }, + { id = 6087, chance = 970 }, -- music sheet + { name = "cultish robe", chance = 1030 }, + { name = "rope belt", chance = 5910 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -65, condition = { type = CONDITION_POISON, totalDamage = 1, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -80, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_MAGIC_RED, target = true }, +} + +monster.defenses = { + defense = 15, + armor = 15, + mitigation = 0.62, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 20, maxDamage = 40, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -8 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -8 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/pirate_buccaneer.lua b/data-canary/monster/humans/pirate_buccaneer.lua new file mode 100644 index 00000000000..10a1fbf9606 --- /dev/null +++ b/data-canary/monster/humans/pirate_buccaneer.lua @@ -0,0 +1,129 @@ +local mType = Game.createMonsterType("Pirate Buccaneer") +local monster = {} + +monster.description = "a pirate buccaneer" +monster.experience = 250 +monster.outfit = { + lookType = 97, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 249 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Nargor, Tyrsung on the ship, Yalahar Foreign Quarter, Krailos Steppe and The Cave.", +} + +monster.health = 425 +monster.maxHealth = 425 +monster.race = "blood" +monster.corpse = 18190 +monster.speed = 109 +monster.manaCost = 595 + +monster.changeTarget = { + interval = 4000, + chance = 15, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 50, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Give up!", yell = false }, + { text = "Hiyaa", yell = false }, + { text = "Plundeeeeer!", yell = false }, +} + +monster.loot = { + { id = 2920, chance = 10190 }, -- torch + { name = "gold coin", chance = 67740, maxCount = 59 }, + { name = "worn leather boots", chance = 9900 }, + { name = "sabre", chance = 10100 }, + { name = "throwing knife", chance = 9000, maxCount = 5 }, + { name = "plate armor", chance = 1130 }, + { name = "battle shield", chance = 3850 }, + { id = 5090, chance = 1000 }, -- treasure map + { name = "rum flask", chance = 120 }, + { id = 5792, chance = 40 }, -- die + { name = "pirate backpack", chance = 430 }, + { name = "pirate shirt", chance = 1200 }, + { name = "hook", chance = 450 }, + { name = "eye patch", chance = 420 }, + { name = "peg leg", chance = 510 }, + { name = "strong health potion", chance = 670 }, + { name = "compass", chance = 9780 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -160 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 4, shootEffect = CONST_ANI_THROWINGKNIFE, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 16, + mitigation = 1.04, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/pirate_corsair.lua b/data-canary/monster/humans/pirate_corsair.lua new file mode 100644 index 00000000000..c67c9adde21 --- /dev/null +++ b/data-canary/monster/humans/pirate_corsair.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Pirate Corsair") +local monster = {} + +monster.description = "a pirate corsair" +monster.experience = 350 +monster.outfit = { + lookType = 98, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 250 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Nargor, Trade Quarter, Foreigner Quarter Dock, Krailos Steppe During a World Change.", +} + +monster.health = 675 +monster.maxHealth = 675 +monster.race = "blood" +monster.corpse = 18194 +monster.speed = 119 +monster.manaCost = 775 + +monster.changeTarget = { + interval = 4000, + chance = 15, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 40, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hiyaa!", yell = false }, + { text = "Give up!", yell = false }, + { text = "Plundeeeeer!", yell = false }, +} + +monster.loot = { + { name = "piggy bank", chance = 150 }, + { name = "gold coin", chance = 50000, maxCount = 88 }, + { name = "sabre", chance = 10000 }, + { name = "throwing star", chance = 8400, maxCount = 12 }, + { name = "dark armor", chance = 1650 }, + { name = "dark shield", chance = 1000 }, + { name = "pirate boots", chance = 220 }, + { name = "rum flask", chance = 130 }, + { id = 5813, chance = 130 }, -- skull candle + { name = "pirate backpack", chance = 930 }, + { name = "pirate hat", chance = 1150 }, + { name = "hook", chance = 600 }, + { name = "eye patch", chance = 500 }, + { name = "peg leg", chance = 600 }, + { name = "strong health potion", chance = 820 }, + { name = "compass", chance = 11050 }, + { name = "compass", chance = 11020 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -170 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -150, range = 3, shootEffect = CONST_ANI_THROWINGSTAR, target = false }, + { name = "pirate corsair skill reducer", interval = 2000, chance = 5, target = false }, +} + +monster.defenses = { + defense = 35, + armor = 20, + mitigation = 1.46, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/pirate_cutthroat.lua b/data-canary/monster/humans/pirate_cutthroat.lua new file mode 100644 index 00000000000..bf4eed45a57 --- /dev/null +++ b/data-canary/monster/humans/pirate_cutthroat.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Pirate Cutthroat") +local monster = {} + +monster.description = "a pirate cutthroat" +monster.experience = 175 +monster.outfit = { + lookType = 96, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 248 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Nargor, Tyrsung on the ship, Yalahar, Krailos Steppe and The Cave.", +} + +monster.health = 325 +monster.maxHealth = 325 +monster.race = "blood" +monster.corpse = 18198 +monster.speed = 107 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 15, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Give up!", yell = false }, + { text = "Plundeeeeer!", yell = false }, + { text = "Hiyaa!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 78000, maxCount = 50 }, + { name = "scale armor", chance = 3000 }, + { name = "steel shield", chance = 2800 }, + { id = 5090, chance = 1000 }, -- treasure map + { name = "rum flask", chance = 90 }, + { name = "light shovel", chance = 2000 }, + { id = 5792, chance = 110 }, -- die + { name = "pirate knee breeches", chance = 980 }, + { name = "pirate bag", chance = 1000 }, + { name = "hook", chance = 550 }, + { name = "eye patch", chance = 450 }, + { name = "peg leg", chance = 500 }, + { name = "compass", chance = 10120 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -170, condition = { type = CONDITION_POISON, totalDamage = 10, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -95, range = 3, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_EXPLOSIONAREA, target = true }, +} + +monster.defenses = { + defense = 25, + armor = 15, + mitigation = 0.72, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/pirate_marauder.lua b/data-canary/monster/humans/pirate_marauder.lua new file mode 100644 index 00000000000..33abb0b1e7d --- /dev/null +++ b/data-canary/monster/humans/pirate_marauder.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Pirate Marauder") +local monster = {} + +monster.description = "a pirate marauder" +monster.experience = 125 +monster.outfit = { + lookType = 93, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 247 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Nargor, Tyrsung, Yalahar, Krailos Steppe, The Cave.", +} + +monster.health = 210 +monster.maxHealth = 210 +monster.race = "blood" +monster.corpse = 18202 +monster.speed = 105 +monster.manaCost = 490 + +monster.changeTarget = { + interval = 4000, + chance = 15, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 20, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Plundeeeeer!", yell = false }, + { text = "Hiyaa!", yell = false }, + { text = "Give up!", yell = false }, +} + +monster.loot = { + { id = 2920, chance = 9880 }, -- torch + { name = "gold coin", chance = 77670, maxCount = 40 }, + { name = "spear", chance = 5140, maxCount = 2 }, + { name = "chain armor", chance = 3000 }, + { name = "plate shield", chance = 5000 }, + { id = 5090, chance = 910 }, -- treasure map + { name = "rum flask", chance = 110 }, + { id = 5792, chance = 90 }, -- die + { name = "bandana", chance = 880 }, + { name = "pirate bag", chance = 430 }, + { name = "empty goldfish bowl", chance = 80 }, + { name = "hook", chance = 520 }, + { name = "eye patch", chance = 530 }, + { name = "peg leg", chance = 520 }, + { name = "compass", chance = 9720 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -140 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -40, range = 7, shootEffect = CONST_ANI_SPEAR, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 8, + mitigation = 0.56, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -3 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/poacher.lua b/data-canary/monster/humans/poacher.lua new file mode 100644 index 00000000000..ac986ea1683 --- /dev/null +++ b/data-canary/monster/humans/poacher.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Poacher") +local monster = {} + +monster.description = "a poacher" +monster.experience = 70 +monster.outfit = { + lookType = 129, + lookHead = 60, + lookBody = 118, + lookLegs = 118, + lookFeet = 116, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 376 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "South of Elvenbane and Ab'Dendriel, Ferngrims Gate, Northeast of Carlin, \z + Edron Hunter Camps, Yalahar - Trade Quarter and Foreigner Quarter.", +} + +monster.health = 90 +monster.maxHealth = 90 +monster.race = "blood" +monster.corpse = 18206 +monster.speed = 99 +monster.manaCost = 530 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 5, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You will not live to tell anyone!", yell = false }, + { text = "You are my game today!", yell = false }, + { text = "Look what has stepped into my trap!", yell = false }, +} + +monster.loot = { + { id = 2920, chance = 4180 }, -- torch + { name = "bow", chance = 14930 }, + { name = "leather helmet", chance = 30600 }, + { name = "arrow", chance = 49500, maxCount = 17 }, + { name = "poison arrow", chance = 2930, maxCount = 3 }, + { id = 3481, chance = 710 }, -- closed trap + { name = "leather legs", chance = 26740 }, + { name = "roll", chance = 11110, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -35, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 10, + mitigation = 0.33, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/poisonous_carnisylvan.lua b/data-canary/monster/humans/poisonous_carnisylvan.lua new file mode 100644 index 00000000000..877b93cc636 --- /dev/null +++ b/data-canary/monster/humans/poisonous_carnisylvan.lua @@ -0,0 +1,136 @@ +local mType = Game.createMonsterType("Poisonous Carnisylvan") +local monster = {} + +monster.description = "a poisonous carnisylvan" +monster.experience = 4400 +monster.outfit = { + lookType = 1418, + lookHead = 23, + lookBody = 98, + lookLegs = 22, + lookFeet = 61, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 2108 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Forest of Life.", +} + +monster.health = 8000 +monster.maxHealth = 8000 +monster.race = "blood" +monster.corpse = 36890 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 1, + summons = { + { name = "Carnisylvan Sapling", chance = 70, interval = 2000, count = 1 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 70000, maxCount = 17 }, + { name = "carnisylvan bark", chance = 12040, maxCount = 2 }, + { name = "mushroom pie", chance = 8640, maxCount = 1 }, + { name = "carnisylvan finger", chance = 8640, maxCount = 4 }, + { name = "emerald bangle", chance = 4970 }, + { name = "great spirit potion", chance = 6810, maxCount = 5 }, + { name = "guardian halberd", chance = 4970 }, + { id = 23542, chance = 4970 }, -- collar of blue plasma + { name = "terra rod", chance = 7330 }, + { name = "underworld rod", chance = 6280 }, + { name = "diamond sceptre", chance = 4710 }, + { name = "fire mushroom", chance = 3140 }, + { name = "knight axe", chance = 5760 }, + { name = "wand of starstorm", chance = 4710 }, + { name = "sacred tree amulet", chance = 2880 }, + { id = 281, chance = 2090 }, -- giant shimmering pearl (green) + { name = "gemmed figurine", chance = 790 }, + { name = "human teeth", chance = 520 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -480 }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_EARTHDAMAGE, minDamage = -350, maxDamage = -520, radius = 4, range = 5, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_POISONAREA, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -350, maxDamage = -450, range = 5, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_POISONAREA, target = true }, +} + +monster.defenses = { + defense = 37, + armor = 37, + mitigation = 1.13, + { name = "speed", interval = 2000, chance = 8, speedChange = 250, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 25 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/priestess.lua b/data-canary/monster/humans/priestess.lua new file mode 100644 index 00000000000..bea9fcba7f4 --- /dev/null +++ b/data-canary/monster/humans/priestess.lua @@ -0,0 +1,142 @@ +local mType = Game.createMonsterType("Priestess") +local monster = {} + +monster.description = "a priestess" +monster.experience = 420 +monster.outfit = { + lookType = 58, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 58 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Hero Cave, Drefia ruins, Lich Hell, Tombs, Magician Quarter in Yalahar, Vengoth Castle.", +} + +monster.health = 390 +monster.maxHealth = 390 +monster.race = "blood" +monster.corpse = 18210 +monster.speed = 85 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "ghoul", chance = 10, interval = 2000, count = 2 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Your energy is mine.", yell = false }, + { text = "Now your life is come to the end, hahahaha!", yell = false }, + { text = "Throw the soul on the altar!", yell = false }, +} + +monster.loot = { + { id = 2828, chance = 890 }, -- book + { id = 2948, chance = 1410 }, -- wooden flute + { name = "piggy bank", chance = 90 }, + { name = "crystal necklace", chance = 640 }, + { name = "talon", chance = 750 }, + { name = "hailstorm rod", chance = 1100 }, + { id = 3076, chance = 1250 }, -- crystal ball + { id = 2948, chance = 1400 }, -- wooden flute + { name = "clerical mace", chance = 1500 }, + { name = "black shield", chance = 210 }, + { name = "red apple", chance = 7500, maxCount = 2 }, + { name = "goat grass", chance = 11720 }, + { name = "wood mushroom", chance = 3240 }, + { name = "sling herb", chance = 13200 }, + { name = "powder herb", chance = 5900 }, + { name = "mana potion", chance = 850 }, + { name = "cultish robe", chance = 1800 }, + { name = "black hood", chance = 5230 }, + { name = "dark rosary", chance = 9840 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -75 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -55, maxDamage = -120, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -2, maxDamage = -170, range = 7, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, range = 7, shootEffect = CONST_ANI_POISON, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 30, + mitigation = 1.32, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 70 }, + { type = COMBAT_FIREDAMAGE, percent = 40 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/priestess_of_the_wild_sun.lua b/data-canary/monster/humans/priestess_of_the_wild_sun.lua new file mode 100644 index 00000000000..b185ccbf11d --- /dev/null +++ b/data-canary/monster/humans/priestess_of_the_wild_sun.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Priestess of the Wild Sun") +local monster = {} + +monster.description = "a priestess of the wild sun" +monster.experience = 6400 +monster.outfit = { + lookType = 1199, + lookHead = 95, + lookBody = 78, + lookLegs = 94, + lookFeet = 3, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "FafnarMissionsDeath", +} + +monster.raceId = 1799 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Issavi Sewers, Kilmaresh Mountains, Kilmaresh Catacombs.", +} + +monster.health = 8500 +monster.maxHealth = 8500 +monster.race = "blood" +monster.corpse = 31419 +monster.speed = 160 +monster.manaCost = 0 + +monster.faction = FACTION_FAFNAR +monster.enemyFactions = { FACTION_PLAYER, FACTION_ANUMA } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Fafnar will burn you!", yell = false }, + { text = "Fear the Wild Sun!", yell = false }, + { text = "There is only one true sun!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 2 }, + { name = "fafnar symbol", chance = 7360 }, + { id = 31433, chance = 6610 }, -- secret instruction + { id = 31435, chance = 6610 }, -- secret instruction + { id = 31436, chance = 6610 }, -- secret instruction + { id = 31331, chance = 2540 }, -- empty honey glass + { name = "sea horse figurine", chance = 910 }, + { id = 31369, chance = 530 }, -- gryphon mask + { name = "wand of decay", chance = 1250 }, + { name = "wand of everblazing", chance = 1290 }, + { name = "golden sickle", chance = 1250 }, + { name = "relic sword", chance = 1390 }, + { name = "war axe", chance = 1777 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, + { name = "targetfirering", interval = 2000, chance = 8, minDamage = -300, maxDamage = -500, target = true }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -500, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_EXPLOSIONHIT, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -400, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -350, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, +} + +monster.defenses = { + defense = 82, + armor = 82, + mitigation = 2.25, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -25 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/renegade_knight.lua b/data-canary/monster/humans/renegade_knight.lua new file mode 100644 index 00000000000..1ec27376840 --- /dev/null +++ b/data-canary/monster/humans/renegade_knight.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Renegade Knight") +local monster = {} + +monster.description = "a renegade knight" +monster.experience = 1200 +monster.outfit = { + lookType = 268, + lookHead = 97, + lookBody = 113, + lookLegs = 76, + lookFeet = 98, + lookAddons = 2, + lookMount = 0, +} + +monster.raceId = 1146 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Old Fortress (north of Edron), Old Masonry, Forbidden Temple (Carlin).", +} + +monster.health = 1450 +monster.maxHealth = 1450 +monster.race = "blood" +monster.corpse = 22020 +monster.speed = 135 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I'll teach you a lesson!", yell = false }, + { text = "Feel my steel!", yell = false }, + { text = "Take this!", yell = false }, + { text = "Let's see how good you are!", yell = false }, + { text = "A challenge at last!", yell = false }, +} + +monster.loot = { + { id = 3447, chance = 90450, maxCount = 10 }, -- arrow + { id = 3031, chance = 75410, maxCount = 30 }, -- gold coin + { id = 3592, chance = 1210 }, -- grapes + { id = 239, chance = 1210 }, -- great health potion + { id = 3577, chance = 1210, maxCount = 2 }, -- meat + { id = 7364, chance = 1210, maxCount = 4 }, -- sniper arrow + { id = 3381, chance = 210 }, -- crown armor + { id = 3385, chance = 310 }, -- crown helmet + { id = 3419, chance = 210 }, -- crown shield + { id = 3382, chance = 110 }, -- crown legs + { id = 3280, chance = 310 }, -- fire sword + { id = 3269, chance = 1610 }, -- halberd + { id = 3658, chance = 510 }, -- red rose + { id = 3003, chance = 1510 }, -- rope + { id = 2815, chance = 910 }, -- scroll + { id = 11510, chance = 910 }, -- scroll of heroic deeds + { id = 11450, chance = 910 }, -- small notebook + { id = 3004, chance = 510 }, -- wedding ring +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 10, maxDamage = -175 }, +} + +monster.defenses = { + defense = 50, + armor = 38, + mitigation = 1.46, + { name = "combat", interval = 4000, chance = 25, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 15 }, + { type = COMBAT_ENERGYDAMAGE, percent = 35 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/shadow_pupil.lua b/data-canary/monster/humans/shadow_pupil.lua new file mode 100644 index 00000000000..2304a5dc18e --- /dev/null +++ b/data-canary/monster/humans/shadow_pupil.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Shadow Pupil") +local monster = {} + +monster.description = "a shadow pupil" +monster.experience = 410 +monster.outfit = { + lookType = 551, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 960 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Drefia.", +} + +monster.health = 450 +monster.maxHealth = 450 +monster.race = "blood" +monster.corpse = 18937 +monster.speed = 85 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 4, + summons = { + { name = "Skeleton", chance = 10, interval = 2000, count = 4 }, + { name = "Ghost", chance = 5, interval = 2000, count = 4 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "When I'm finished with you, you'll be a shadow of your former self.", yell = false }, + { text = "Come forth from the shadows, my minions...", yell = false }, + { text = "The shadows follow your every step...", yell = false }, + { text = "The shadows will swallow you...", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 64 }, + { name = "boots of haste", chance = 60 }, + { name = "clerical mace", chance = 290 }, + { name = "mystic turban", chance = 580 }, + { name = "brown mushroom", chance = 5170 }, + { name = "strong mana potion", chance = 470 }, + { name = "spellbook of enlightenment", chance = 290 }, + { name = "book of necromantic rituals", chance = 6920 }, + { name = "horoscope", chance = 15000 }, + { name = "incantation notes", chance = 9130 }, + { name = "pieces of magic chalk", chance = 4300 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70, condition = { type = CONDITION_POISON, totalDamage = 90, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -60, maxDamage = -80, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -60, radius = 3, effect = CONST_ME_MORTAREA, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 32, + mitigation = 1.04, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/smuggler.lua b/data-canary/monster/humans/smuggler.lua new file mode 100644 index 00000000000..2d6b3ed29af --- /dev/null +++ b/data-canary/monster/humans/smuggler.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Smuggler") +local monster = {} + +monster.description = "a smuggler" +monster.experience = 48 +monster.outfit = { + lookType = 134, + lookHead = 95, + lookBody = 0, + lookLegs = 113, + lookFeet = 115, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 222 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Around Dark Cathedral, Tiquanda Bandit Caves, the Outlaw Camp, Tyrsung, Yalahar and Nargor.", +} + +monster.health = 130 +monster.maxHealth = 130 +monster.race = "blood" +monster.corpse = 18226 +monster.speed = 88 +monster.manaCost = 390 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You saw something you shouldn't!", yell = false }, + { text = "I will silence you forever!", yell = false }, +} + +monster.loot = { + { id = 2920, chance = 30200, maxCount = 2 }, -- torch + { name = "gold coin", chance = 80000, maxCount = 10 }, + { id = 3264, chance = 5000 }, -- sword + { name = "knife", chance = 9920 }, + { name = "combat knife", chance = 4400 }, + { name = "short sword", chance = 10000 }, + { name = "leather helmet", chance = 10050 }, + { name = "leather legs", chance = 14840 }, + { name = "ham", chance = 10200 }, + { id = 7397, chance = 110 }, -- deer trophy + { name = "raspberry", chance = 5000, maxCount = 5 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 }, +} + +monster.defenses = { + defense = 15, + armor = 8, + mitigation = 0.33, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/stalker.lua b/data-canary/monster/humans/stalker.lua new file mode 100644 index 00000000000..2afd3d8924c --- /dev/null +++ b/data-canary/monster/humans/stalker.lua @@ -0,0 +1,120 @@ +local mType = Game.createMonsterType("Stalker") +local monster = {} + +monster.description = "a stalker" +monster.experience = 90 +monster.outfit = { + lookType = 128, + lookHead = 97, + lookBody = 116, + lookLegs = 95, + lookFeet = 95, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 72 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Triangle Tower, Drefia, Edron Hero Cave in the Warlock room, White Flower Temple, \z + Ghostlands, Shadow Tomb, Ancient Ruins Tomb, Tarpit Tomb, Stone Tomb, Mountain Tomb, Peninsula Tomb, \z + Oasis Tomb, Yalahar Trade Quarter and Isle of the Kings.", +} + +monster.health = 120 +monster.maxHealth = 120 +monster.race = "blood" +monster.corpse = 18230 +monster.speed = 130 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 60, + random = 40, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 13000, maxCount = 8 }, + { name = "blank rune", chance = 8670 }, + { name = "throwing knife", chance = 11170, maxCount = 2 }, + { name = "katana", chance = 530 }, + { name = "obsidian lance", chance = 1210 }, + { name = "brass legs", chance = 3500 }, + { name = "brass shield", chance = 5510 }, + { name = "miraculum", chance = 1550 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -30, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 14, + { name = "invisible", interval = 2000, chance = 40, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/usurper_archer.lua b/data-canary/monster/humans/usurper_archer.lua new file mode 100644 index 00000000000..88a4b3782f7 --- /dev/null +++ b/data-canary/monster/humans/usurper_archer.lua @@ -0,0 +1,136 @@ +local mType = Game.createMonsterType("Usurper Archer") +local monster = {} + +monster.description = "an usurper archer" +monster.experience = 6800 +monster.outfit = { + lookType = 1316, + lookHead = 76, + lookBody = 57, + lookLegs = 76, + lookFeet = 95, + lookAddons = 2, + lookMount = 0, +} + +monster.raceId = 1973 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Bounac, the Order of the Lion settlement.", +} + +monster.health = 7300 +monster.maxHealth = 7300 +monster.race = "blood" +monster.corpse = 33981 +monster.speed = 125 +monster.manaCost = 0 + +monster.faction = FACTION_LIONUSURPERS +monster.enemyFactions = { FACTION_PLAYER, FACTION_LION } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 5 }, + { name = "ultimate health potion", chance = 75135, maxCount = 3 }, + { name = "meat", chance = 47703 }, + { name = "broken longbow", chance = 14595 }, + { name = "lion cloak patch", chance = 10135 }, + { name = "black pearl", chance = 8784 }, + { name = "warrior helmet", chance = 8784 }, + { name = "mino shield", chance = 8514 }, + { name = "silver brooch", chance = 7838 }, + { name = "knife", chance = 7703 }, + { name = "lion crest", chance = 6892 }, + { id = 281, chance = 5676 }, -- giant shimmering pearl (green) + { name = "gemmed figurine", chance = 4189 }, + { name = "white pearl", chance = 3514 }, + { name = "glacier shoes", chance = 2432 }, + { name = "knight armor", chance = 1892 }, + { name = "coral brooch", chance = 1757 }, + { name = "assassin dagger", chance = 1622 }, + { name = "ornate crossbow", chance = 946 }, + { name = "emerald bangle", chance = 811 }, + { name = "wood cape", chance = 405 }, + { name = "elvish bow", chance = 270 }, +} + +monster.attacks = { + { name = "combat", interval = 2000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -430, range = 7, shootEffect = CONST_ANI_BURSTARROW, target = true }, + { name = "combat", interval = 6000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -160, maxDamage = -485, range = 7, shootEffect = CONST_ANI_SMALLHOLY, target = true }, + { name = "combat", interval = 4000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -160, maxDamage = -545, range = 7, effect = CONST_ME_MORTAREA, shootEffect = CONST_ANI_SUDDENDEATH, target = true }, + { name = "combat", interval = 4000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -150, maxDamage = -425, radius = 3, effect = CONST_ME_ICEAREA, target = true }, +} + +monster.defenses = { + defense = 50, + armor = 82, + mitigation = 2.31, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/usurper_knight.lua b/data-canary/monster/humans/usurper_knight.lua new file mode 100644 index 00000000000..aada0828995 --- /dev/null +++ b/data-canary/monster/humans/usurper_knight.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Usurper Knight") +local monster = {} + +monster.description = "an usurper knight" +monster.experience = 6900 +monster.outfit = { + lookType = 1316, + lookHead = 76, + lookBody = 57, + lookLegs = 76, + lookFeet = 95, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 1972 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Bounac, the Order of the Lion settlement.", +} + +monster.health = 8200 +monster.maxHealth = 8200 +monster.race = "blood" +monster.corpse = 33977 +monster.speed = 130 +monster.manaCost = 0 + +monster.faction = FACTION_LIONUSURPERS +monster.enemyFactions = { FACTION_PLAYER, FACTION_LION } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "This town is ours now!", yell = false }, + { text = "Do you really think you can stand?", yell = false }, + { text = "You don't deserve Bounac!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 89725, maxCount = 5 }, + { name = "leather legs", chance = 27060 }, + { name = "meat", chance = 16582 }, + { name = "lion cloak patch", chance = 11190 }, + { name = "violet gem", chance = 6002 }, + { name = "gold ingot", chance = 5799 }, + { name = "lion crest", chance = 5697 }, + { name = "knight legs", chance = 5290 }, + { name = "great mana potion", chance = 4680 }, + { name = "blue gem", chance = 4171 }, + { name = "green gem", chance = 2238 }, + { name = "magma legs", chance = 610 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500, effect = CONST_ME_DRAWBLOOD }, + { name = "combat", interval = 6000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -300, radius = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 6000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -150, maxDamage = -400, length = 4, spread = 0, effect = CONST_ME_ICEATTACK, target = false }, + { name = "singlecloudchain", interval = 8000, chance = 17, minDamage = -200, maxDamage = -450, range = 4, effect = CONST_ME_ENERGYHIT, target = true }, +} + +monster.defenses = { + defense = 86, + armor = 83, + mitigation = 2.40, + { name = "combat", interval = 4000, chance = 40, type = COMBAT_HEALING, minDamage = 200, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 35 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 15 }, + { type = COMBAT_DEATHDAMAGE, percent = -15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/usurper_warlock.lua b/data-canary/monster/humans/usurper_warlock.lua new file mode 100644 index 00000000000..8a3672a9d90 --- /dev/null +++ b/data-canary/monster/humans/usurper_warlock.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Usurper Warlock") +local monster = {} + +monster.description = "an usurper warlock" +monster.experience = 7000 +monster.outfit = { + lookType = 1316, + lookHead = 57, + lookBody = 2, + lookLegs = 21, + lookFeet = 95, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1974 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Bounac, the Order of the Lion settlement.", +} + +monster.health = 7500 +monster.maxHealth = 7500 +monster.race = "blood" +monster.corpse = 34184 +monster.speed = 165 +monster.manaCost = 0 + +monster.faction = FACTION_LIONUSURPERS +monster.enemyFactions = { FACTION_PLAYER, FACTION_LION } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "What, are you afraid? So you should be!", yell = false }, + { text = "Die in the flames of true righteousness!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 77111, maxCount = 4 }, + { name = "gold ingot", chance = 11778 }, + { name = "lion cloak patch", chance = 8444 }, + { name = "lion crest", chance = 8222 }, + { name = "black pearl", chance = 5778 }, + { id = 281, chance = 5556 }, -- giant shimmering pearl (green) + { name = "terra hood", chance = 4667 }, + { name = "lightning headband", chance = 3778 }, + { name = "green gem", chance = 3556 }, + { name = "springsprout rod", chance = 2667 }, + { name = "ham", chance = 2444 }, + { name = "magma monocle", chance = 1778 }, + { name = "wand of cosmic energy", chance = 1778 }, + { name = "underworld rod", chance = 1333 }, + { name = "knight legs", chance = 1111 }, + { name = "wand of starstorm", chance = 667 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250, effect = CONST_ME_DRAWBLOOD }, + { name = "singledeathchain", interval = 6000, chance = 15, minDamage = -250, maxDamage = -530, range = 5, effect = CONST_ME_MORTAREA, target = true }, + { name = "singleicechain", interval = 6000, chance = 18, minDamage = -150, maxDamage = -450, range = 5, effect = CONST_ME_ICEATTACK, target = true }, + { name = "combat", interval = 4000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -450, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true }, -- avalanche +} + +monster.defenses = { + defense = 50, + armor = 80, + mitigation = 2.25, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 30 }, + { type = COMBAT_HOLYDAMAGE, percent = 32 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/valkyrie.lua b/data-canary/monster/humans/valkyrie.lua index a15e734c4c8..b6c2ce76fe2 100644 --- a/data-canary/monster/humans/valkyrie.lua +++ b/data-canary/monster/humans/valkyrie.lua @@ -7,7 +7,7 @@ monster.outfit = { lookType = 139, lookHead = 113, lookBody = 38, - lookLegs = 95, + lookLegs = 76, lookFeet = 96, lookAddons = 0, lookMount = 0, @@ -79,20 +79,20 @@ monster.voices = { } monster.loot = { - { id = 3277, chance = 55000, maxCount = 3 }, -- spear - { id = 3031, chance = 32000, maxCount = 12 }, -- gold coin - { id = 3577, chance = 30000 }, -- meat - { id = 3358, chance = 10000 }, -- chain armor - { id = 3585, chance = 7500, maxCount = 2 }, -- red apple - { id = 11443, chance = 5900 }, -- girlish hair decoration - { id = 3347, chance = 5155 }, -- hunting spear - { id = 11444, chance = 3200 }, -- protective charm - { id = 3084, chance = 1100 }, -- protection amulet - { id = 3357, chance = 830 }, -- plate armor + { name = "spear", chance = 55000, maxCount = 3 }, + { name = "gold coin", chance = 32000, maxCount = 12 }, + { name = "meat", chance = 30000 }, + { name = "chain armor", chance = 10000 }, + { name = "red apple", chance = 7500, maxCount = 2 }, + { name = "girlish hair decoration", chance = 5900 }, + { name = "hunting spear", chance = 5155 }, + { name = "protective charm", chance = 3200 }, + { name = "protection amulet", chance = 1100 }, + { name = "plate armor", chance = 830 }, { id = 3114, chance = 760 }, -- skull - { id = 266, chance = 500 }, -- health potion - { id = 3275, chance = 430 }, -- double axe - { id = 3028, chance = 130 }, -- small diamond + { name = "health potion", chance = 500 }, + { name = "double axe", chance = 430 }, + { name = "small diamond", chance = 130 }, } monster.attacks = { @@ -103,6 +103,7 @@ monster.attacks = { monster.defenses = { defense = 12, armor = 12, + mitigation = 0.36, } monster.elements = { diff --git a/data-canary/monster/humans/vicious_squire.lua b/data-canary/monster/humans/vicious_squire.lua new file mode 100644 index 00000000000..a1d7124a0a0 --- /dev/null +++ b/data-canary/monster/humans/vicious_squire.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Vicious Squire") +local monster = {} + +monster.description = "a vicious squire" +monster.experience = 900 +monster.outfit = { + lookType = 131, + lookHead = 97, + lookBody = 24, + lookLegs = 73, + lookFeet = 116, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 1145 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Old Fortress (north of Edron), Old Masonry, Forbidden Temple (Carlin).", +} + +monster.health = 1000 +monster.maxHealth = 1000 +monster.race = "blood" +monster.corpse = 22017 +monster.speed = 130 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Your stuff will be mine soon!", yell = false }, + { text = "I'll cut you a bloody grin!", yell = false }, + { text = "For hurting me, my sire will kill you!", yell = false }, + { text = "You shouldn't have come here!", yell = false }, +} + +monster.loot = { + { id = 3446, chance = 90450, maxCount = 10 }, -- bolt + { id = 3031, chance = 75410, maxCount = 30 }, -- gold coin + { id = 3592, chance = 15400 }, -- grapes + { id = 239, chance = 12340, maxCount = 2 }, -- great health potion + { id = 3577, chance = 5000 }, -- meat + { id = 3349, chance = 830 }, -- crossbow + { id = 3563, chance = 760 }, -- green tunic + { id = 3048, chance = 700, maxCount = 2 }, -- might ring + { id = 3003, chance = 1000 }, -- rope + { id = 3572, chance = 1000 }, -- scarf + { id = 2815, chance = 830 }, -- scroll + { id = 3028, chance = 830 }, -- small diamond + { id = 3279, chance = 130 }, -- war hammer + { id = 3269, chance = 830 }, -- halberd + { id = 3415, chance = 330 }, -- guardian shield + { id = 3371, chance = 230 }, -- knight legs + { id = 3369, chance = 200 }, -- warrior helmet +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 10, maxDamage = -175 }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 10, maxDamage = -100, range = 7, shootEffect = CONST_ANI_BOLT, target = false }, +} + +monster.defenses = { + defense = 50, + armor = 30, + mitigation = 1.24, + { name = "combat", interval = 4000, chance = 25, type = COMBAT_HEALING, minDamage = 20, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 40 }, + { type = COMBAT_EARTHDAMAGE, percent = 50 }, + { type = COMBAT_FIREDAMAGE, percent = 30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = -20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/vile_grandmaster.lua b/data-canary/monster/humans/vile_grandmaster.lua new file mode 100644 index 00000000000..8fe45841071 --- /dev/null +++ b/data-canary/monster/humans/vile_grandmaster.lua @@ -0,0 +1,141 @@ +local mType = Game.createMonsterType("Vile Grandmaster") +local monster = {} + +monster.description = "a vile grandmaster" +monster.experience = 1500 +monster.outfit = { + lookType = 268, + lookHead = 59, + lookBody = 19, + lookLegs = 95, + lookFeet = 94, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 1147 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Old Fortress (north of Edron), Old Masonry, Forbidden Temple (Carlin).", +} + +monster.health = 1700 +monster.maxHealth = 1700 +monster.race = "blood" +monster.corpse = 22023 +monster.speed = 140 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Is that the best, you can throw at me?", yell = false }, + { text = "I've seen orcs tougher than you!", yell = false }, + { text = "I will end this now!", yell = false }, + { text = "Your gods won't help you!", yell = false }, + { text = "You'll make a fine trophy!", yell = false }, +} + +monster.loot = { + { id = 7364, chance = 1210, maxCount = 4 }, -- sniper arrow + { id = 3031, chance = 75410, maxCount = 30 }, -- gold coin + { id = 3035, chance = 75410, maxCount = 2 }, -- platinum coin + { id = 3592, chance = 1210 }, -- grapes + { id = 3577, chance = 1210, maxCount = 2 }, -- meat + { id = 239, chance = 1210 }, -- great health potion + { id = 3269, chance = 1610 }, -- halberd + { id = 3658, chance = 510 }, -- red rose + { id = 3003, chance = 1510 }, -- rope + { id = 11510, chance = 910 }, -- scroll of heroic deeds + { id = 11450, chance = 910 }, -- small notebook + { id = 3030, chance = 810, maxCount = 2 }, -- small ruby + { id = 3029, chance = 810, maxCount = 2 }, -- small sapphire + { id = 3004, chance = 510 }, -- wedding ring + { id = 5911, chance = 210 }, -- red piece of cloth + { id = 3279, chance = 210 }, -- war hammer + { id = 3381, chance = 310 }, -- crown armor + { id = 3280, chance = 210 }, -- fire sword + { id = 3385, chance = 310 }, -- crown helmet + { id = 3419, chance = 210 }, -- crown shield + { id = 3382, chance = 110 }, -- crown legs + { id = 3055, chance = 210 }, -- platinum amulet +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 10, maxDamage = -260 }, + -- bleed + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -150, maxDamage = -225, radius = 4, shootEffect = CONST_ANI_THROWINGKNIFE, effect = CONST_ME_DRAWBLOOD, target = true }, +} + +monster.defenses = { + defense = 50, + armor = 40, + mitigation = 1.48, + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 220, maxDamage = 280, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 25 }, + { type = COMBAT_EARTHDAMAGE, percent = 25 }, + { type = COMBAT_FIREDAMAGE, percent = 25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/warlock.lua b/data-canary/monster/humans/warlock.lua new file mode 100644 index 00000000000..027399c07a6 --- /dev/null +++ b/data-canary/monster/humans/warlock.lua @@ -0,0 +1,153 @@ +local mType = Game.createMonsterType("Warlock") +local monster = {} + +monster.description = "a warlock" +monster.experience = 4000 +monster.outfit = { + lookType = 130, + lookHead = 0, + lookBody = 52, + lookLegs = 128, + lookFeet = 95, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 10 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Demona, Ghostland (Banshee Quest area), Temple of Xayepocax, Oasis Tomb, Kharos, Magician Quarter, \z + beneath Fenrock, The Arcanum.", +} + +monster.health = 3500 +monster.maxHealth = 3500 +monster.race = "blood" +monster.corpse = 18246 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 900, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 1, + summons = { + { name = "stone golem", chance = 10, interval = 2000, count = 1 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Even a rat is a better mage than you!", yell = false }, + { text = "Learn the secret of our magic! YOUR death!", yell = false }, + { text = "We don't like intruders!", yell = false }, +} + +monster.loot = { + { name = "red tome", chance = 300 }, + { name = "candlestick", chance = 1500 }, + { name = "piggy bank", chance = 60 }, + { name = "ring of the sky", chance = 430 }, + { id = 3007, chance = 700 }, -- crystal ring + { name = "small sapphire", chance = 1190 }, + { name = "gold coin", chance = 29340, maxCount = 80 }, + { name = "talon", chance = 1150 }, + { id = 3051, chance = 2200 }, -- energy ring + { name = "mind stone", chance = 2000 }, + { name = "stone skin amulet", chance = 330 }, + { name = "poison dagger", chance = 7600 }, + { name = "skull staff", chance = 6370 }, + { name = "golden armor", chance = 240 }, + { id = 3509, chance = 1000 }, -- inkwell + { name = "blue robe", chance = 1410 }, + { name = "cherry", chance = 19000, maxCount = 4 }, + { name = "bread", chance = 9000 }, + { name = "dark mushroom", chance = 3000 }, + { name = "assassin star", chance = 3500, maxCount = 4 }, + { name = "assassin star", chance = 3470, maxCount = 4 }, + { name = "great mana potion", chance = 4760 }, + { name = "great health potion", chance = 5190 }, + { name = "lightning robe", chance = 1000 }, + { name = "luminous orb", chance = 510 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -90, maxDamage = -180, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, + { name = "warlock skill reducer", interval = 2000, chance = 5, range = 5, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -120, range = 7, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -180, range = 7, radius = 3, shootEffect = CONST_ANI_BURSTARROW, effect = CONST_ME_FIREAREA, target = true }, + { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -230, length = 8, spread = 0, effect = CONST_ME_BIGCLOUDS, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, +} + +monster.defenses = { + defense = 20, + armor = 33, + mitigation = 1.32, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 225, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 95 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = -8 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/wild_warrior.lua b/data-canary/monster/humans/wild_warrior.lua new file mode 100644 index 00000000000..0eaf9bd8be6 --- /dev/null +++ b/data-canary/monster/humans/wild_warrior.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Wild Warrior") +local monster = {} + +monster.description = "a wild warrior" +monster.experience = 60 +monster.outfit = { + lookType = 131, + lookHead = 38, + lookBody = 38, + lookLegs = 38, + lookFeet = 38, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 47 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Dark Cathedral, Outlaw Camp, North of Thais, Cyclopolis, in Edron Hero Cave and around it, \z + the small camp near Femor Hills, in Ghostlands disguised as a statue.", +} + +monster.health = 135 +monster.maxHealth = 135 +monster.race = "blood" +monster.corpse = 18250 +monster.speed = 95 +monster.manaCost = 420 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Gimme your money!", yell = false }, + { text = "An enemy!", yell = false }, +} + +monster.loot = { + { id = 2991, chance = 520 }, -- doll + { name = "gold coin", chance = 49070, maxCount = 30 }, + { name = "axe", chance = 30710 }, + { name = "mace", chance = 9800 }, + { name = "chain helmet", chance = 5250 }, + { name = "iron helmet", chance = 580 }, + { name = "brass armor", chance = 2540 }, + { name = "steel shield", chance = 910 }, + { name = "brass shield", chance = 17000 }, + { id = 3606, chance = 9730, maxCount = 2 }, -- egg +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, +} + +monster.defenses = { + defense = 20, + armor = 8, + mitigation = 0.46, + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/humans/witch.lua b/data-canary/monster/humans/witch.lua new file mode 100644 index 00000000000..6bfeefa4685 --- /dev/null +++ b/data-canary/monster/humans/witch.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Witch") +local monster = {} + +monster.description = "a witch" +monster.experience = 120 +monster.outfit = { + lookType = 54, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 54 +monster.Bestiary = { + class = "Human", + race = BESTY_RACE_HUMAN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Vandura, west of the Dwarf Mines in a small house, Amazon Tower north of Carlin, \z + Triangle Tower, Temple of Xayepocax, Green Claw Swamp and Amazon Camp (Venore), \z + Dark Cathedral (2 levels underground), Goroma Volcano (underground), west from Necromant House, \z + Mammoth Shearing Factory, Trade Quarter in Yalahar, The Witches' Cliff (only accessible during a quest).", +} + +monster.health = 300 +monster.maxHealth = 300 +monster.race = "blood" +monster.corpse = 18254 +monster.speed = 102 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 30, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Herba budinia ex!", yell = false }, + { text = "Horax Pokti!", yell = false }, + { text = "Hihihihi!", yell = false }, +} + +monster.loot = { + { id = 3012, chance = 10120 }, -- wolf tooth chain + { name = "gold coin", chance = 64000, maxCount = 40 }, + { name = "necrotic rod", chance = 1140 }, + { name = "garlic necklace", chance = 1000 }, + { name = "silver dagger", chance = 500 }, + { name = "sickle", chance = 3910 }, + { name = "leather boots", chance = 4950 }, + { name = "coat", chance = 2010 }, + { name = "cape", chance = 4870 }, + { name = "cookie", chance = 29750, maxCount = 8 }, + { name = "star herb", chance = 8950 }, + { name = "witch broom", chance = 10000 }, + { name = "witch hat", chance = 80 }, + { name = "stuffed toad", chance = 10 }, + { name = "bag of apple slices", chance = 920 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -30, maxDamage = -75, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, + { name = "outfit", interval = 2000, chance = 1, range = 5, target = true, duration = 2000, outfitMonster = "green frog" }, +} + +monster.defenses = { + defense = 15, + armor = 8, + mitigation = 0.30, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/lycanthropes/cunning_werepanther.lua b/data-canary/monster/lycanthropes/cunning_werepanther.lua new file mode 100644 index 00000000000..b0e6c74131f --- /dev/null +++ b/data-canary/monster/lycanthropes/cunning_werepanther.lua @@ -0,0 +1,131 @@ +local mType = Game.createMonsterType("Cunning Werepanther") +local monster = {} + +monster.description = "a cunning werepanther" +monster.experience = 3620 +monster.outfit = { + lookType = 1648, + lookHead = 18, + lookBody = 124, + lookLegs = 74, + lookFeet = 81, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 2403 +monster.Bestiary = { + class = "Lycanthrope", + race = BESTY_RACE_LYCANTHROPE, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Murky Caverns, Oskayaat", +} + +monster.health = 4300 +monster.maxHealth = 4300 +monster.race = "blood" +monster.corpse = 43959 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grrr", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 80 }, + { name = "platinum coin", chance = 100000, maxCount = 11 }, + { name = "werepanther claw", chance = 12780 }, + { name = "golden sickle", chance = 5120 }, + { name = "meat", chance = 5500, maxCount = 2 }, + { name = "small topaz", chance = 7120, maxCount = 4 }, + { name = "moonlight crystals", chance = 2550 }, + { id = 3037, chance = 5130 }, -- yellow gem + { name = "lightning headband", chance = 7200 }, + { name = "ripper lance", chance = 850 }, + { name = "gemmed figurine", chance = 1770 }, + { id = 816, chance = 4710 }, -- lightning pendant + { name = "fur armor", chance = 2620 }, + { id = 43917, chance = 600 }, -- werepanther trophy +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -75, maxDamage = -540 }, + { name = "combat", interval = 3300, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -175, maxDamage = -350, radius = 2, effect = CONST_ME_ENERGYAREA, shootEffect = CONST_ANI_ENERGY, range = 4, target = true }, + { name = "combat", interval = 2300, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -425, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2700, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -225, maxDamage = -350, radius = 2, effect = CONST_ME_YELLOWSMOKE, shootEffect = CONST_ANI_LARGEROCK, range = 4, target = true }, + { name = "combat", interval = 3700, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -375, radius = 3, effect = CONST_ME_STONE_STORM, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 72, + mitigation = 2.05, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -25 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/lycanthropes/feral_werecrocodile.lua b/data-canary/monster/lycanthropes/feral_werecrocodile.lua new file mode 100644 index 00000000000..724e5bcced7 --- /dev/null +++ b/data-canary/monster/lycanthropes/feral_werecrocodile.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Feral Werecrocodile") +local monster = {} + +monster.description = "a feral werecrocodile" +monster.experience = 5430 +monster.outfit = { + lookType = 1647, + lookHead = 116, + lookBody = 95, + lookLegs = 19, + lookFeet = 21, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2389 +monster.Bestiary = { + class = "Lycanthrope", + race = BESTY_RACE_LYCANTHROPE, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Murky Caverns", +} + +monster.health = 6400 +monster.maxHealth = 6400 +monster.race = "blood" +monster.corpse = 43767 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = {} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "platinum coin", chance = 100000, maxCount = 21 }, + { name = "werecrocodile tongue", chance = 10800 }, + { name = "war hammer", chance = 5000 }, + { name = "ham", chance = 5500, maxCount = 2 }, + { name = "moonlight crystals", chance = 3000 }, + { name = "violet gem", chance = 1370 }, + { name = "green crystal shard", chance = 2800 }, + { name = "ornate crossbow", chance = 680 }, + { name = "terra mantle", chance = 2190 }, + { name = "golden sun coin", chance = 1820 }, + { name = "sun brooch", chance = 680 }, + { name = "swamplair armor", chance = 230 }, + { id = 43916, chance = 200 }, -- werecrocodile trophy +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -50, maxDamage = -485 }, + { name = "combat", interval = 3400, chance = 33, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -450, length = 7, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2700, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -450, radius = 3, effect = CONST_ME_MORTAREA, shootEffect = CONST_ANI_DEATH, range = 4, target = true }, + { name = "combat", interval = 3300, chance = 30, type = COMBAT_LIFEDRAIN, minDamage = -175, maxDamage = -350, radius = 1, effect = CONST_ME_MAGIC_RED, range = 1, target = true }, + { name = "werecrocodile fire ring", interval = 4100, chance = 25, minDamage = -275, maxDamage = -350, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 82, + mitigation = 2.28, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 25 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 35 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -15 }, + { type = COMBAT_HOLYDAMAGE, percent = -20 }, + { type = COMBAT_DEATHDAMAGE, percent = 60 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/lycanthropes/werebadger.lua b/data-canary/monster/lycanthropes/werebadger.lua new file mode 100644 index 00000000000..3ae7a6b8c0e --- /dev/null +++ b/data-canary/monster/lycanthropes/werebadger.lua @@ -0,0 +1,136 @@ +local mType = Game.createMonsterType("Werebadger") +local monster = {} + +monster.description = "a werebadger" +monster.experience = 1600 +monster.outfit = { + lookType = 729, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1144 +monster.Bestiary = { + class = "Lycanthrope", + race = BESTY_RACE_LYCANTHROPE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Grimvale: -1 floor from ground level, also seen on surface during full moon (12th-14th of every month). \z + Also in the were-beasts cave south-west of Edron and in the Last Sanctum.", +} + +monster.health = 1700 +monster.maxHealth = 1700 +monster.race = "blood" +monster.corpse = 22067 +monster.speed = 130 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 275, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "SNUFFLE", yell = true }, + { text = "Sniff Sniff", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 97000, maxCount = 242 }, -- gold coin + { id = 3035, chance = 18200, maxCount = 5 }, -- platinum coin + { id = 8017, chance = 2000 }, -- beetroot + { id = 3725, chance = 2000 }, -- brown mushroom + { id = 268, chance = 2210 }, -- mana potion + { id = 237, chance = 1200 }, -- strong mana potion + { id = 3741, chance = 1900 }, -- troll green + { id = 22051, chance = 950 }, -- werebadger claws + { id = 22055, chance = 780 }, -- werebadger skull + { id = 22086, chance = 200 }, -- badger boots + { id = 3055, chance = 160 }, -- platinum amulet + { id = 3098, chance = 430 }, -- ring of healing + { id = 8082, chance = 220 }, -- underworld rod + { id = 8094, chance = 200 }, -- wand of voodoo + { id = 22083, chance = 150 }, -- moonlight crystals + { id = 22060, chance = 200 }, -- werewolf amulet + { id = 22101, chance = 100 }, -- werebadger trophy +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 60, condition = { type = CONDITION_POISON, totalDamage = 140, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -21, maxDamage = -150, range = 7, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_CARNIPHILA, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -10, maxDamage = -100, length = 8, spread = 0, effect = CONST_ME_CARNIPHILA, target = false }, + { name = "speed", interval = 4000, chance = 20, radius = 7, effect = CONST_ME_POFF, target = true }, +} + +monster.defenses = { + defense = 30, + armor = 31, + mitigation = 0.75, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 50 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 40 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/lycanthropes/werebear.lua b/data-canary/monster/lycanthropes/werebear.lua new file mode 100644 index 00000000000..4c2ee27f8ba --- /dev/null +++ b/data-canary/monster/lycanthropes/werebear.lua @@ -0,0 +1,137 @@ +local mType = Game.createMonsterType("Werebear") +local monster = {} + +monster.description = "a werebear" +monster.experience = 2100 +monster.outfit = { + lookType = 720, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1142 +monster.Bestiary = { + class = "Lycanthrope", + race = BESTY_RACE_LYCANTHROPE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Grimvale underground, were-beasts cave south-west of Edron and in the Last Sanctum east of Cormaya.", +} + +monster.health = 2400 +monster.maxHealth = 2400 +monster.race = "blood" +monster.corpse = 22010 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 275, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "GROOOWL", yell = true }, + { text = "GRRR", yell = true }, +} + +monster.loot = { + { id = 3031, chance = 97000, maxCount = 242 }, -- gold coin + { id = 3035, chance = 18200, maxCount = 5 }, -- platinum coin + { id = 239, chance = 1200, maxCount = 2 }, -- great health potion + { id = 7643, chance = 2210 }, -- ultimate health potion + { id = 238, chance = 1200 }, -- great mana potion + { id = 5896, chance = 800 }, -- bear paw + { id = 3582, chance = 1900, maxCount = 2 }, -- ham + { id = 5902, chance = 450 }, -- honeycomb + { id = 22057, chance = 580 }, -- werebear fur + { id = 7439, chance = 800 }, -- berserk potion + { id = 22056, chance = 560 }, -- werebear skull + { id = 3081, chance = 430 }, -- stone skin amulet + { id = 7419, chance = 120 }, -- dreaded cleaver + { id = 22085, chance = 300 }, -- fur armor + { id = 7432, chance = 400 }, -- furry club + { id = 22060, chance = 100 }, -- werewolf amulet + { id = 7383, chance = 200 }, -- relic sword + { id = 7452, chance = 300 }, -- spiked squelcher + { id = 3053, chance = 400 }, -- time ring + { id = 22103, chance = 200 }, -- werebear trophy + { id = 22083, chance = 200 }, -- moonlight crystals +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 50, maxDamage = -485 }, + { name = "speed", interval = 4000, chance = 20, radius = 7, effect = CONST_ME_POFF, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -65, maxDamage = -335, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 38, + mitigation = 0.91, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 50 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 45 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/lycanthropes/wereboar.lua b/data-canary/monster/lycanthropes/wereboar.lua new file mode 100644 index 00000000000..c9b0dcbd0d0 --- /dev/null +++ b/data-canary/monster/lycanthropes/wereboar.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Wereboar") +local monster = {} + +monster.description = "a wereboar" +monster.experience = 2000 +monster.outfit = { + lookType = 721, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1143 +monster.Bestiary = { + class = "Lycanthrope", + race = BESTY_RACE_LYCANTHROPE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Grimvale underground, were-beasts cave south-west of Edron and in the Last Sanctum east of Cormaya.", +} + +monster.health = 2200 +monster.maxHealth = 2200 +monster.race = "blood" +monster.corpse = 22066 +monster.speed = 150 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 275, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "GRUNT", yell = true }, +} + +monster.loot = { + { id = 3031, chance = 97000, maxCount = 242 }, -- gold coin + { id = 3035, chance = 18200, maxCount = 5 }, -- platinum coin + { id = 676, chance = 5000, maxCount = 2 }, -- small enchanted ruby + { id = 3725, chance = 2000 }, -- brown mushroom + { id = 7643, chance = 2210 }, -- ultimate health potion + { id = 236, chance = 1200 }, -- strong health potion + { id = 22053, chance = 1900 }, -- wereboar hooves + { id = 22087, chance = 950 }, -- wereboar loincloth + { id = 22054, chance = 780 }, -- wereboar tusks + { id = 7439, chance = 700 }, -- berserk potion + { id = 7432, chance = 360 }, -- furry club + { id = 3081, chance = 430 }, -- stone skin amulet + { id = 7419, chance = 320 }, -- dreaded cleaver + { id = 22085, chance = 200 }, -- fur armor + { id = 22102, chance = 200 }, -- wereboar trophy + { id = 22060, chance = 200 }, -- werewolf amulet + { id = 22083, chance = 200 }, -- moonlight crystals +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 60, condition = { type = CONDITION_POISON, totalDamage = 140, interval = 4000 } }, + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -385 }, + { name = "speed", interval = 4000, chance = 20, radius = 7, effect = CONST_ME_POFF, target = true }, +} + +monster.defenses = { + defense = 30, + armor = 32, + mitigation = 0.78, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 50 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/lycanthropes/werecrocodile.lua b/data-canary/monster/lycanthropes/werecrocodile.lua new file mode 100644 index 00000000000..125c25799c0 --- /dev/null +++ b/data-canary/monster/lycanthropes/werecrocodile.lua @@ -0,0 +1,126 @@ +local mType = Game.createMonsterType("Werecrocodile") +local monster = {} + +monster.description = "a werecrocodile" +monster.experience = 4140 +monster.outfit = { + lookType = 1647, + lookHead = 95, + lookBody = 117, + lookLegs = 4, + lookFeet = 116, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2403 +monster.Bestiary = { + class = "Lycanthrope", + race = BESTY_RACE_LYCANTHROPE, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Murky Caverns", +} + +monster.health = 5280 +monster.maxHealth = 5280 +monster.race = "blood" +monster.corpse = 43754 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = {} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "platinum coin", chance = 100000, maxCount = 13 }, + { name = "werecrocodile tongue", chance = 10800 }, + { name = "serpent sword", chance = 5910 }, + { name = "crocodile boots", chance = 8530 }, + { name = "meat", chance = 5500, maxCount = 4 }, + { name = "small topaz", chance = 9120, maxCount = 4 }, + { name = "moonlight crystals", chance = 3000 }, + { id = 3039, chance = 5120 }, -- red gem + { name = "green crystal shard", chance = 2800 }, + { name = "bonebreaker", chance = 500 }, + { name = "glorious axe", chance = 2190 }, + { name = "golden sun coin", chance = 1770 }, + { id = 43916, chance = 200 }, -- werecrocodile trophy +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -575 }, + { name = "combat", interval = 2700, chance = 37, type = COMBAT_PHYSICALDAMAGE, minDamage = -175, maxDamage = -325, radius = 1, effect = CONST_ME_BIG_SCRATCH, range = 1, target = true }, + { name = "combat", interval = 3300, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -375, length = 6, spread = 3, effect = CONST_ME_BLACKSMOKE, target = false }, + { name = "combat", interval = 3700, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -400, radius = 2, range = 4, effect = CONST_ME_MORTAREA, target = true }, +} + +monster.defenses = { + defense = 30, + armor = 82, + mitigation = 2.28, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 5 }, + { type = COMBAT_FIREDAMAGE, percent = 25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -25 }, + { type = COMBAT_HOLYDAMAGE, percent = -15 }, + { type = COMBAT_DEATHDAMAGE, percent = 25 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/lycanthropes/werefox.lua b/data-canary/monster/lycanthropes/werefox.lua new file mode 100644 index 00000000000..5a6f1f256c1 --- /dev/null +++ b/data-canary/monster/lycanthropes/werefox.lua @@ -0,0 +1,140 @@ +local mType = Game.createMonsterType("Werefox") +local monster = {} + +monster.description = "a werefox" +monster.experience = 1600 +monster.outfit = { + lookType = 1030, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1549 +monster.Bestiary = { + class = "Lycanthrope", + race = BESTY_RACE_LYCANTHROPE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Were-beasts cave south-west of Edron and in the Last Sanctum east of Cormaya.", +} + +monster.health = 1500 +monster.maxHealth = 1500 +monster.race = "blood" +monster.corpse = 27521 +monster.speed = 140 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 1, + summons = { + { name = "fox", chance = 10, interval = 2000, count = 1 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Yelp!", yell = false }, + { text = "Grrrrrr", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 405000, maxCount = 200 }, + { name = "platinum coin", chance = 4050, maxCount = 2 }, + { name = "fox paw", chance = 4050, maxCount = 2 }, + { name = "werefox tail", chance = 4050, maxCount = 2 }, + { name = "strong mana potion", chance = 4050, maxCount = 2 }, + { name = "great mana potion", chance = 4050, maxCount = 2 }, + { name = "mana potion", chance = 4050, maxCount = 2 }, + { name = "small enchanted emerald", chance = 4050, maxCount = 2 }, + { name = "emerald bangle", chance = 4050, maxCount = 2 }, + { name = "moonlight rod", chance = 500 }, + { name = "troll green", chance = 500, maxCount = 2 }, + { name = "assassin star", chance = 300, maxCount = 5 }, + { name = "platinum amulet", chance = 130 }, + { id = 3098, chance = 200 }, -- ring of healing + { name = "werewolf amulet", chance = 50 }, + { id = 27706, chance = 30 }, -- werefox trophy +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -290 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -200, shootEffect = CONST_ANI_GREENSTAR, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -225, range = 7, radius = 4, effect = CONST_ME_MAGIC_RED, target = true }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -700, length = 5, spread = 0, effect = CONST_ME_MORTAREA, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 40, + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 145, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "invisible", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 40 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/lycanthropes/werehyaena.lua b/data-canary/monster/lycanthropes/werehyaena.lua new file mode 100644 index 00000000000..62a890f771f --- /dev/null +++ b/data-canary/monster/lycanthropes/werehyaena.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Werehyaena") +local monster = {} + +monster.description = "a werehyaena" +monster.experience = 2200 +monster.outfit = { + lookType = 1300, + lookHead = 57, + lookBody = 77, + lookLegs = 1, + lookFeet = 1, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1963 +monster.Bestiary = { + class = "Lycanthrope", + race = BESTY_RACE_LYCANTHROPE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Darashia Wyrm Hills only during night, Hyaena Lairs.", +} + +monster.health = 2700 +monster.maxHealth = 2700 +monster.race = "blood" +monster.corpse = 33821 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 30, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Snarl!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 3 }, + { name = "great health potion", chance = 49970, maxCount = 3 }, + { name = "meat", chance = 19070 }, + { name = "axe", chance = 16810 }, + { name = "knife", chance = 16620 }, + { name = "werehyaena nose", chance = 12670 }, + { name = "halberd", chance = 11480 }, + { name = "red crystal fragment", chance = 9540 }, + { name = "small enchanted amethyst", chance = 5760, maxCount = 5 }, + { name = "life preserver", chance = 5670 }, + { id = 3039, chance = 5590 }, -- red gem + { name = "yellow gem", chance = 5420 }, + { name = "combat knife", chance = 4700 }, + { name = "green crystal fragment", chance = 4580 }, + { name = "ratana", chance = 4280 }, + { name = "werehyaena talisman", chance = 750 }, + { name = "werehyaena trophy", chance = 190 }, +} + +monster.attacks = { + { name = "melee", type = COMBAT_PHYSICALDAMAGE, interval = 2 * 1000, minDamage = 0, maxDamage = -300 }, + { name = "combat", type = COMBAT_EARTHDAMAGE, interval = 2 * 1000, chance = 17, minDamage = -175, maxDamage = -255, radius = 3, effect = CONST_ME_HITBYPOISON }, + { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2 * 1000, chance = 15, minDamage = -330, maxDamage = -370, target = true, range = 5, radius = 1, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_MORTAREA }, + { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2 * 1000, chance = 13, minDamage = -225, maxDamage = -275, length = 3, spread = 0, effect = CONST_ME_MORTAREA }, +} + +monster.defenses = { + { name = "speed", chance = 15, interval = 2 * 1000, speed = 200, duration = 5 * 1000, effect = CONST_ME_MAGIC_BLUE }, + defense = 0, + armor = 36, + mitigation = 0.88, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = 50 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -20 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = true }, +} + +mType:register(monster) diff --git a/data-canary/monster/lycanthropes/werehyaena_shaman.lua b/data-canary/monster/lycanthropes/werehyaena_shaman.lua new file mode 100644 index 00000000000..184a4c56e05 --- /dev/null +++ b/data-canary/monster/lycanthropes/werehyaena_shaman.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Werehyaena Shaman") +local monster = {} + +monster.description = "a werehyaena shaman" +monster.experience = 2200 +monster.outfit = { + lookType = 1300, + lookHead = 0, + lookBody = 0, + lookLegs = 94, + lookFeet = 95, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1964 +monster.Bestiary = { + class = "Lycanthrope", + race = BESTY_RACE_LYCANTHROPE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "This monster you can find in Hyaena Lairs.", +} + +monster.health = 2500 +monster.maxHealth = monster.health +monster.race = "blood" +monster.corpse = 34189 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 30, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 0, + chance = 0, +} + +monster.loot = { + { name = "platinum coin", chance = 100000 }, + { name = "great mana potion", chance = 20070 }, + { name = "werehyaena nose", chance = 15550 }, + { name = "small amethyst", chance = 10840 }, + { name = "green crystal splinter", chance = 9120 }, + { name = "hailstorm rod", chance = 6430 }, + { name = "doublet", chance = 5390 }, + { name = "brown crystal splinter", chance = 5030 }, + { name = "wand of starstorm", chance = 4920 }, + { name = "small enchanted emerald", chance = 4630 }, + { id = 3091, chance = 4490 }, -- sword ring + { name = "wand of voodoo", chance = 3990 }, + { name = "protection amulet", chance = 2660 }, + { name = "werehyaena talisman", chance = 650 }, + { name = "moonlight crystals", chance = 610 }, + { name = "werehyaena trophy", chance = 140 }, +} + +monster.attacks = { + { name = "melee", type = COMBAT_PHYSICALDAMAGE, interval = 2 * 1000, minDamage = 0, maxDamage = -260 }, + { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2 * 1000, chance = 10, minDamage = -280, maxDamage = -325, radius = 3, effect = CONST_ME_HITBYPOISON }, + { name = "combat", type = COMBAT_EARTHDAMAGE, interval = 2 * 1000, chance = 17, minDamage = -280, maxDamage = -315, range = 5, radius = 4, target = true, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_GREEN_RINGS }, + { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2 * 1000, chance = 15, minDamage = -370, maxDamage = -430, range = 5, radius = 1, target = true, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA }, + { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2 * 1000, chance = 13, minDamage = -280, maxDamage = -325, length = 3, spread = 0, effect = CONST_ME_MORTAREA }, +} + +monster.defenses = { + { name = "speed", interval = 2 * 1000, chance = 15, speed = 200, duration = 5 * 1000, effect = CONST_ME_MAGIC_BLUE }, + defense = 0, + armor = 38, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = 25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -20 }, + { type = COMBAT_HOLYDAMAGE, percent = 5 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = true }, +} + +mType:register(monster) diff --git a/data-canary/monster/lycanthropes/werelion.lua b/data-canary/monster/lycanthropes/werelion.lua new file mode 100644 index 00000000000..8226bc8b4e7 --- /dev/null +++ b/data-canary/monster/lycanthropes/werelion.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Werelion") +local monster = {} + +monster.description = "a werelion" +monster.experience = 2200 +monster.outfit = { + lookType = 1301, + lookHead = 58, + lookBody = 2, + lookLegs = 94, + lookFeet = 10, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 1965 +monster.Bestiary = { + class = "Lycanthrope", + race = BESTY_RACE_LYCANTHROPE, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Lion Sanctum.", +} + +monster.health = 2800 +monster.maxHealth = 2800 +monster.race = "blood" +monster.corpse = 33825 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 20, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 5, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 5 }, + { name = "great spirit potion", chance = 100000, maxCount = 2 }, + { name = "small enchanted ruby", chance = 5000, maxCount = 2 }, + { name = "meat", chance = 5000, maxCount = 2 }, + { name = "crystal sword", chance = 5000 }, + { name = "lion's mane", chance = 5000 }, + { name = "silver brooch", chance = 1500 }, + { name = "small diamond", chance = 1500, maxCount = 2 }, + { name = "war hammer", chance = 1500 }, + { name = "doublet", chance = 1500 }, + { name = "dark shield", chance = 1500 }, + { name = "titan axe", chance = 1500 }, + { name = "spiked squelcher", chance = 1500 }, + { name = "glorious axe", chance = 1500 }, + { name = "spirit cloak", chance = 1500 }, + { name = "onyx chip", chance = 1500 }, + { name = "coral brooch", chance = 1500 }, + { name = "ivory carving", chance = 1500 }, + { name = "rainbow quartz", chance = 1500 }, + { name = "noble axe", chance = 500 }, + { name = "white silk flower", chance = 500 }, + { name = "lion figurine", chance = 100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, + { name = "werelion wave", interval = 2000, chance = 20, minDamage = -150, maxDamage = -250, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -410, range = 3, effect = CONST_ME_HOLYAREA, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -170, maxDamage = -350, range = 3, shootEffect = CONST_ANI_HOLY, target = true }, +} + +monster.defenses = { + defense = 40, + armor = 38, + mitigation = 0.91, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 50 }, + { type = COMBAT_FIREDAMAGE, percent = 25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -25 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 45 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/lycanthropes/werelioness.lua b/data-canary/monster/lycanthropes/werelioness.lua new file mode 100644 index 00000000000..d7cf7fac4a2 --- /dev/null +++ b/data-canary/monster/lycanthropes/werelioness.lua @@ -0,0 +1,129 @@ +local mType = Game.createMonsterType("Werelioness") +local monster = {} + +monster.description = "a werelioness" +monster.experience = 2300 +monster.outfit = { + lookType = 1301, + lookHead = 0, + lookBody = 2, + lookLegs = 0, + lookFeet = 94, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1966 +monster.Bestiary = { + class = "Lycanthrope", + race = BESTY_RACE_LYCANTHROPE, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Lion Sanctum.", +} + +monster.health = 3000 +monster.maxHealth = 3000 +monster.race = "blood" +monster.corpse = 34185 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 20, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 5, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 5 }, + { name = "gold coin", chance = 100000, maxCount = 60 }, + { name = "small enchanted sapphire", chance = 5000, maxCount = 2 }, + { name = "black pearl", chance = 5000, maxCount = 2 }, + { name = "ham", chance = 5000, maxCount = 2 }, + { name = "meat", chance = 5000, maxCount = 2 }, + { name = "soul orb", chance = 5000, maxCount = 2 }, + { name = "white pearl", chance = 1500, maxCount = 2 }, + { name = "ankh", chance = 5000 }, + { name = "crystal sword", chance = 5000 }, + { name = "serpent sword", chance = 5000 }, + { name = "rapier", chance = 5000 }, + { name = "lion's mane", chance = 5000 }, + { name = "lightning headband", chance = 1500 }, + { name = "steel helmet", chance = 1500 }, + { name = "doublet", chance = 1500 }, + { name = "ivory carving", chance = 1500 }, + { name = "magma legs", chance = 500 }, + { name = "crown helmet", chance = 500 }, + { name = "white silk flower", chance = 200 }, + { name = "lion figurine", chance = 100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -410, range = 3, effect = CONST_ME_HOLYAREA, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -170, maxDamage = -350, range = 3, shootEffect = CONST_ANI_HOLY, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, length = 4, spread = 0, effect = CONST_ME_FIREAREA, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 38, + mitigation = 0.91, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = 35 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -25 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/lycanthropes/werepanther.lua b/data-canary/monster/lycanthropes/werepanther.lua new file mode 100644 index 00000000000..fb351221cea --- /dev/null +++ b/data-canary/monster/lycanthropes/werepanther.lua @@ -0,0 +1,131 @@ +local mType = Game.createMonsterType("Werepanther") +local monster = {} + +monster.description = "a werepanther" +monster.experience = 3550 +monster.outfit = { + lookType = 1648, + lookHead = 114, + lookBody = 114, + lookLegs = 67, + lookFeet = 122, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 2390 +monster.Bestiary = { + class = "Lycanthrope", + race = BESTY_RACE_LYCANTHROPE, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Murky Caverns, Oskayaat", +} + +monster.health = 4200 +monster.maxHealth = 4200 +monster.race = "blood" +monster.corpse = 43758 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grrr", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 80 }, + { name = "platinum coin", chance = 100000, maxCount = 11 }, + { name = "werepanther claw", chance = 13820, maxCount = 2 }, + { name = "golden sickle", chance = 6720 }, + { name = "meat", chance = 5500, maxCount = 2 }, + { name = "small ruby", chance = 8470, maxCount = 3 }, + { name = "moonlight crystals", chance = 2550 }, + { id = 3039, chance = 1240 }, -- red gem + { name = "magma monocle", chance = 3080 }, + { name = "ripper lance", chance = 850 }, + { name = "gemmed figurine", chance = 1770 }, + { id = 817, chance = 2770 }, -- magma amulet + { name = "fur armor", chance = 2620 }, + { id = 43917, chance = 650 }, -- werepanther trophy +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -75, maxDamage = -525 }, + { name = "combat", interval = 3700, chance = 40, type = COMBAT_FIREDAMAGE, minDamage = -265, maxDamage = -400, radius = 3, effect = CONST_ME_FIREATTACK, target = false }, + { name = "combat", interval = 2700, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -275, maxDamage = -375, radius = 3, effect = CONST_ME_GROUNDSHAKER, range = 4, target = true }, + { name = "combat", interval = 2300, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -375, radius = 2, effect = CONST_ME_YELLOWSMOKE, target = false }, + { name = "combat", interval = 3300, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -175, maxDamage = -300, radius = 2, effect = CONST_ME_MORTAREA, range = 4, target = true }, +} + +monster.defenses = { + defense = 30, + armor = 72, + mitigation = 2.05, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -15 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/lycanthropes/weretiger.lua b/data-canary/monster/lycanthropes/weretiger.lua new file mode 100644 index 00000000000..6584860abb0 --- /dev/null +++ b/data-canary/monster/lycanthropes/weretiger.lua @@ -0,0 +1,126 @@ +local mType = Game.createMonsterType("Weretiger") +local monster = {} + +monster.description = "a weretiger" +monster.experience = 3920 +monster.outfit = { + lookType = 1646, + lookHead = 97, + lookBody = 114, + lookLegs = 113, + lookFeet = 94, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 2386 +monster.Bestiary = { + class = "Lycanthrope", + race = BESTY_RACE_LYCANTHROPE, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Murky Caverns", +} + +monster.health = 5000 +monster.maxHealth = 5000 +monster.race = "blood" +monster.corpse = 43669 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = {} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "platinum coin", chance = 100000, maxCount = 13 }, + { name = "weretiger tooth", chance = 10800 }, + { name = "furry club", chance = 6230 }, + { name = "meat", chance = 5500, maxCount = 4 }, + { name = "violet crystal shard", chance = 3370 }, + { name = "moonlight crystals", chance = 2550 }, + { id = 3041, chance = 1200 }, -- blue gem + { name = "knight armor", chance = 3000 }, + { name = "angelic axe", chance = 1430 }, + { name = "gemmed figurine", chance = 1770 }, + { id = 817, chance = 1770 }, -- magma amulet + { name = "silver moon coin", chance = 510 }, + { id = 43915, chance = 610 }, -- weretiger trophy +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -50, maxDamage = -625 }, + { name = "energy chain", interval = 3300, chance = 20, minDamage = -175, maxDamage = -375, range = 3, target = true }, + { name = "combat", interval = 3300, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -375, length = 5, spread = 2, effect = CONST_ME_BLUE_ENERGY_SPARK, target = false }, + { name = "combat", interval = 2700, chance = 37, type = COMBAT_PHYSICALDAMAGE, minDamage = -175, maxDamage = -325, radius = 1, effect = CONST_ME_BIG_SCRATCH, range = 1, target = true }, +} + +monster.defenses = { + defense = 30, + armor = 76, + mitigation = 2.16, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 25 }, + { type = COMBAT_EARTHDAMAGE, percent = -15 }, + { type = COMBAT_FIREDAMAGE, percent = -25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 30 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/lycanthropes/werewolf.lua b/data-canary/monster/lycanthropes/werewolf.lua new file mode 100644 index 00000000000..83f691ff82c --- /dev/null +++ b/data-canary/monster/lycanthropes/werewolf.lua @@ -0,0 +1,143 @@ +local mType = Game.createMonsterType("Werewolf") +local monster = {} + +monster.description = "a werewolf" +monster.experience = 1900 +monster.outfit = { + lookType = 308, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 510 +monster.Bestiary = { + class = "Lycanthrope", + race = BESTY_RACE_LYCANTHROPE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Vengoth Castle, Vengoth Werewolf Cave, Grimvale, were-beasts cave south-west of Edron.", +} + +monster.health = 1955 +monster.maxHealth = 1955 +monster.race = "blood" +monster.corpse = 18099 +monster.speed = 140 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 300, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "war wolf", chance = 40, interval = 2000, count = 2 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "GRRR", yell = true }, + { text = "GRROARR", yell = true }, +} + +monster.loot = { + { id = 3031, chance = 98000, maxCount = 230 }, -- gold coin + { id = 3053, chance = 800 }, -- time ring + { name = "platinum amulet", chance = 870 }, + { name = "stone skin amulet", chance = 1000 }, + { name = "halberd", chance = 3000 }, + { name = "epee", chance = 560 }, + { name = "plate shield", chance = 10340 }, + { name = "brown mushroom", chance = 6940 }, + { name = "troll green", chance = 1900 }, + { name = "wolf paw", chance = 5200 }, + { name = "relic sword", chance = 480 }, + { name = "dreaded cleaver", chance = 160 }, + { name = "bonebreaker", chance = 400 }, + { name = "berserk potion", chance = 1200 }, + { name = "strong health potion", chance = 5000 }, + { name = "ultimate health potion", chance = 2400 }, + { id = 8895, chance = 210 }, -- rusted armor + { id = 22052, chance = 15000 }, -- werewolf fangs + { name = "werewolf fur", chance = 10650 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, + { name = "outfit", interval = 2000, chance = 1, radius = 1, effect = CONST_ME_SOUND_BLUE, target = true, duration = 2000, outfitMonster = "werewolf" }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -200, length = 4, spread = 2, effect = CONST_ME_SOUND_RED, target = false }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, radius = 3, effect = CONST_ME_SOUND_WHITE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, radius = 1, effect = CONST_ME_SOUND_GREEN, target = false }, + { name = "werewolf skill reducer", interval = 2000, chance = 15, range = 1, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 36, + mitigation = 0.83, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 120, maxDamage = 225, effect = CONST_ME_MAGIC_GREEN, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 400, range = 7, effect = CONST_ME_SOUND_PURPLE, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 75 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 55 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/lycanthropes/white_weretiger.lua b/data-canary/monster/lycanthropes/white_weretiger.lua new file mode 100644 index 00000000000..f892a60b117 --- /dev/null +++ b/data-canary/monster/lycanthropes/white_weretiger.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("White Weretiger") +local monster = {} + +monster.description = "a white weretiger" +monster.experience = 5200 +monster.outfit = { + lookType = 1646, + lookHead = 19, + lookBody = 59, + lookLegs = 113, + lookFeet = 94, + lookAddons = 2, + lookMount = 0, +} + +monster.raceId = 2387 +monster.Bestiary = { + class = "Lycanthrope", + race = BESTY_RACE_LYCANTHROPE, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Murky Caverns", +} + +monster.health = 6100 +monster.maxHealth = 6100 +monster.race = "blood" +monster.corpse = 43762 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = {} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "platinum coin", chance = 100000, maxCount = 20 }, + { name = "weretiger tooth", chance = 13400 }, + { name = "beastslayer axe", chance = 3970 }, + { name = "ham", chance = 5500, maxCount = 2 }, + { name = "moonlight crystals", chance = 7000 }, + { name = "white gem", chance = 1650 }, + { name = "silver moon coin", chance = 2000 }, + { name = "blue robe", chance = 1160 }, + { name = "moon pin", chance = 660 }, + { name = "crystal mace", chance = 500 }, + { id = 43915, chance = 610 }, -- weretiger trophy +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -585 }, + { name = "white weretiger ice ring", interval = 3700, chance = 20, minDamage = -300, maxDamage = -425 }, + { name = "energy ring", interval = 4300, chance = 40, minDamage = -300, maxDamage = -425 }, + { name = "combat", interval = 2300, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -375, radius = 2, effect = CONST_ME_ICEAREA, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 83, + mitigation = 2.25, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 25 }, + { type = COMBAT_EARTHDAMAGE, percent = -20 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 40 }, + { type = COMBAT_HOLYDAMAGE, percent = 25 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/animated_feather.lua b/data-canary/monster/magicals/animated_feather.lua new file mode 100644 index 00000000000..8d7f7e7b3dc --- /dev/null +++ b/data-canary/monster/magicals/animated_feather.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Animated Feather") +local monster = {} + +monster.description = "an animated feather" +monster.experience = 9860 +monster.outfit = { + lookType = 1058, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1671 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "The Secret Library (ice section).", +} + +monster.health = 13000 +monster.maxHealth = 13000 +monster.race = "ink" +monster.corpse = 28578 +monster.speed = 210 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 4, + color = 179, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "small sapphire", chance = 8700, maxCount = 5 }, + { name = "platinum coin", chance = 87000, maxCount = 50 }, + { id = 28570, chance = 500, maxCount = 10 }, -- glowing rune + { id = 3051, chance = 8700 }, -- energy ring + { id = 7441, chance = 4000 }, -- ice cube + { name = "shard", chance = 250, maxCount = 3 }, + { name = "glacier mask", chance = 250 }, + { name = "hailstorm rod", chance = 250 }, + { name = "life crystal", chance = 8700 }, + { name = "great mana potion", chance = 900, maxCount = 6 }, + { name = "golden mug", chance = 500 }, + { name = "glowing rune", chance = 500, maxCount = 10 }, + { id = 3051, chance = 8700 }, -- energy ring + { name = "quill", chance = 250 }, + { name = "small diamond", chance = 500, maxCount = 5 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -200, range = 7, shootEffect = CONST_ANI_ICE, target = false }, + { name = "combat", interval = 1000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -780, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, + { name = "combat", interval = 1000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -275, length = 3, spread = 2, effect = CONST_ME_ICEATTACK, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -230, maxDamage = -680, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICETORNADO, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 79, + mitigation = 2.02, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -18 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/arachnophobica.lua b/data-canary/monster/magicals/arachnophobica.lua new file mode 100644 index 00000000000..ef50a63eb30 --- /dev/null +++ b/data-canary/monster/magicals/arachnophobica.lua @@ -0,0 +1,147 @@ +local mType = Game.createMonsterType("Arachnophobica") +local monster = {} + +monster.description = "an arachnophobica" +monster.experience = 4700 +monster.outfit = { + lookType = 1135, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1729 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Buried Cathedral, Haunted Cellar, Court of Summer, Court of Winter, Dream Labyrinth.", +} + +monster.health = 5000 +monster.maxHealth = 5000 +monster.race = "blood" +monster.corpse = 30073 +monster.speed = 200 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Tip tap tip tap!", yell = false }, + { text = "Zip zip zip!!!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 14 }, + { name = "great spirit potion", chance = 100000, maxCount = 3 }, + { name = "essence of a bad dream", chance = 15000 }, + { id = 3051, chance = 12050 }, -- energy ring + { name = "silver amulet", chance = 15000 }, + { id = 3091, chance = 11050 }, -- sword ring + { name = "spider fangs", chance = 11800 }, + { name = "mind stone", chance = 17800 }, + { name = "wand of cosmic energy", chance = 17800 }, + { name = "magma amulet", chance = 8900 }, + { name = "elven amulet", chance = 8100, maxCount = 2 }, + { id = 23544, chance = 10590 }, -- collar of red plasma + { name = "sacred tree amulet", chance = 7500 }, + { name = "spider silk", chance = 6500 }, + { id = 3052, chance = 5560 }, -- life ring + { name = "orb", chance = 7800 }, + { name = "underworld rod", chance = 7120 }, + { id = 23529, chance = 1000 }, -- ring of blue plasma + { id = 3098, chance = 9120 }, -- ring of healing + { name = "strange talisman", chance = 8110 }, + { id = 3092, chance = 7220 }, -- axe ring + { id = 3050, chance = 6080 }, -- power ring + { id = 6299, chance = 7502 }, -- death ring + { name = "garlic necklace", chance = 7550 }, + { name = "platinum amulet", chance = 7650 }, + { id = 23543, chance = 10590 }, -- collar of green plasma + { name = "strange symbol", chance = 2640 }, + { name = "stone skin amulet", chance = 2600 }, + { name = "necklace of the deep", chance = 1800 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, + { name = "arachnophobicawavedice", interval = 2000, chance = 20, minDamage = -250, maxDamage = -350, target = false }, + { name = "arachnophobicawaveenergy", interval = 2000, chance = 20, minDamage = -250, maxDamage = -350, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -350, radius = 4, effect = CONST_ME_BLOCKHIT, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -300, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, +} + +monster.defenses = { + defense = 0, + armor = 70, + mitigation = 1.94, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 50 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -40 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/armadile.lua b/data-canary/monster/magicals/armadile.lua new file mode 100644 index 00000000000..98665845d28 --- /dev/null +++ b/data-canary/monster/magicals/armadile.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Armadile") +local monster = {} + +monster.description = "an armadile" +monster.experience = 3200 +monster.outfit = { + lookType = 487, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 880 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Warzone 1.", +} + +monster.health = 3800 +monster.maxHealth = 3800 +monster.race = "undead" +monster.corpse = 15868 +monster.speed = 220 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Creak!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "gold coin", chance = 100000, maxCount = 98 }, + { name = "platinum coin", chance = 95000, maxCount = 7 }, + { id = 3053, chance = 1000 }, -- time ring + { name = "tower shield", chance = 620 }, + { name = "titan axe", chance = 1540 }, + { name = "bonebreaker", chance = 1150 }, + { name = "strong health potion", chance = 14285, maxCount = 2 }, + { name = "strong mana potion", chance = 15000, maxCount = 2 }, + { name = "great mana potion", chance = 15920, maxCount = 2 }, + { name = "great health potion", chance = 15000, maxCount = 2 }, + { name = "mana potion", chance = 14285, maxCount = 3 }, + { name = "terra boots", chance = 2850 }, + { name = "crystalline armor", chance = 230 }, + { name = "battle stone", chance = 12460 }, + { id = 12600, chance = 6000 }, -- coal + { name = "green crystal splinter", chance = 3920, maxCount = 2 }, + { name = "green crystal fragment", chance = 5690, maxCount = 2 }, + { name = "crystalline spikes", chance = 14540 }, + { name = "drill bolt", chance = 7692, maxCount = 5 }, + { name = "envenomed arrow", chance = 10230, maxCount = 10 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, + { name = "drunk", interval = 2000, chance = 10, radius = 4, effect = CONST_ME_FIREAREA, target = true, duration = 5000 }, + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -200, maxDamage = -400, radius = 4, effect = CONST_ME_POISONAREA, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 66, + mitigation = 1.96, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = 15 }, + { type = COMBAT_DEATHDAMAGE, percent = 45 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/bashmu.lua b/data-canary/monster/magicals/bashmu.lua new file mode 100644 index 00000000000..31be5b2a61d --- /dev/null +++ b/data-canary/monster/magicals/bashmu.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Bashmu") +local monster = {} + +monster.description = "a bashmu" +monster.experience = 5000 +monster.outfit = { + lookType = 1408, + lookHead = 0, + lookBody = 50, + lookLegs = 42, + lookFeet = 79, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2100 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Salt Caves.", +} + +monster.health = 8200 +monster.maxHealth = 8200 +monster.race = "blood" +monster.corpse = 36804 +monster.speed = 200 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 69350, maxCount = 24 }, + { name = "guardian halberd", chance = 9160 }, + { name = "bashmu feather", chance = 5320 }, + { name = "bashmu tongue", chance = 4950 }, + { name = "sacred tree amulet", chance = 4280 }, + { name = "great spirit potion", chance = 3840, maxCount = 4 }, + { name = "green crystal shard", chance = 3470, maxCount = 3 }, + { name = "blue crystal shard", chance = 2950, maxCount = 3 }, + { name = "small diamond", chance = 2950, maxCount = 6 }, + { name = "violet gem", chance = 2730 }, + { name = "bashmu fang", chance = 2070 }, + { name = "rainbow quartz", chance = 1770 }, + { name = "terra amulet", chance = 1770 }, + { name = "glacier amulet", chance = 960 }, + { name = "glorious axe", chance = 810 }, + { id = 23544, chance = 660 }, -- collar of red plasma + { name = "haunted blade", chance = 590 }, + { name = "magma amulet", chance = 520 }, + { id = 23542, chance = 440 }, -- collar of blue plasma +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -600 }, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -800, length = 4, spread = 0, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -500, range = 3, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -800, range = 7, shootEffect = CONST_ANI_EARTHARROW, target = true }, +} + +monster.defenses = { + defense = 72, + armor = 72, + mitigation = 2.16, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 340, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/blue_djinn.lua b/data-canary/monster/magicals/blue_djinn.lua new file mode 100644 index 00000000000..c0a2985933f --- /dev/null +++ b/data-canary/monster/magicals/blue_djinn.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Blue Djinn") +local monster = {} + +monster.description = "a blue djinn" +monster.experience = 215 +monster.outfit = { + lookType = 80, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 80 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Kha'zeel, Magician Quarter, Forgotten Tomb.", +} + +monster.health = 330 +monster.maxHealth = 330 +monster.race = "blood" +monster.corpse = 6020 +monster.speed = 110 +monster.manaCost = 0 + +monster.faction = FACTION_MARID +monster.enemyFactions = { FACTION_PLAYER, FACTION_EFREET } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Simsalabim", yell = false }, + { text = "Wishes can come true.", yell = false }, + { text = "Feel the power of my magic, tiny mortal!", yell = false }, + { text = "Be careful what you wish for.", yell = false }, +} + +monster.loot = { + { id = 2829, chance = 2350 }, -- book + { name = "small oil lamp", chance = 690 }, + { name = "small sapphire", chance = 2560, maxCount = 4 }, + { name = "gold coin", chance = 60000, maxCount = 70 }, + { name = "gold coin", chance = 70000, maxCount = 45 }, + { name = "mystic turban", chance = 70 }, + { id = 3595, chance = 23480 }, -- carrot + { name = "blue rose", chance = 440 }, + { name = "blue piece of cloth", chance = 1920 }, + { name = "royal spear", chance = 4500, maxCount = 2 }, + { name = "mana potion", chance = 860 }, + { name = "dirty turban", chance = 1890 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -45, maxDamage = -80, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -60, maxDamage = -105, range = 7, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, target = false, duration = 5000 }, + { name = "outfit", interval = 2000, chance = 1, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitMonster = "rabbit" }, + { name = "djinn electrify", interval = 2000, chance = 15, range = 5, target = false }, + { name = "djinn cancel invisibility", interval = 2000, chance = 10, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 20, + mitigation = 0.78, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 50 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 80 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -13 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/bog_raider.lua b/data-canary/monster/magicals/bog_raider.lua new file mode 100644 index 00000000000..e45f4f5c417 --- /dev/null +++ b/data-canary/monster/magicals/bog_raider.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Bog Raider") +local monster = {} + +monster.description = "a bog raider" +monster.experience = 800 +monster.outfit = { + lookType = 299, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 460 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Underneath Malada and Talahu, Edron Bog Raider Cave in Stonehome, \z + Edron Earth Elemental Cave, Alchemist Quarter, Vengoth Castle, Robson Isle. Oramond Hydra/Bog Raider Cave.", +} + +monster.health = 1300 +monster.maxHealth = 1300 +monster.race = "venom" +monster.corpse = 8123 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 60, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 4, + color = 30, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Tchhh!", yell = false }, + { text = "Slurp!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 92090, maxCount = 105 }, + { name = "plate legs", chance = 200 }, + { name = "great health potion", chance = 2030 }, + { name = "great spirit potion", chance = 2010 }, + { name = "ultimate health potion", chance = 750 }, + { name = "belted cape", chance = 580 }, + { name = "paladin armor", chance = 140 }, + { name = "springsprout rod", chance = 1020 }, + { name = "boggy dreads", chance = 9870 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -183, condition = { type = CONDITION_POISON, totalDamage = 80, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -140, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -175, radius = 3, effect = CONST_ME_BUBBLES, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -96, maxDamage = -110, range = 7, shootEffect = CONST_ANI_SMALLEARTH, target = true }, + { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_SMALLPLANTS, target = true, duration = 15000 }, +} + +monster.defenses = { + defense = 0, + armor = 20, + mitigation = 0.78, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 65, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 30 }, + { type = COMBAT_FIREDAMAGE, percent = 85 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/bonelord.lua b/data-canary/monster/magicals/bonelord.lua new file mode 100644 index 00000000000..d39fc0e9f5b --- /dev/null +++ b/data-canary/monster/magicals/bonelord.lua @@ -0,0 +1,146 @@ +local mType = Game.createMonsterType("Bonelord") +local monster = {} + +monster.description = "a bonelord" +monster.experience = 170 +monster.outfit = { + lookType = 17, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 17 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Ancient Temple, Alatar Lake, Mount Sternum Undead Cave, Desert Dungeon, Hellgate, \z + Helheim, Fibula Dungeon, Villa Scapula, Hero Cave before Dragons, Eastern Drefia, Folda hidden cave, \z + Maze of Lost Souls, way to Mintwallin, before Kazordoon city entrance, abandoned building east of Venore, \z + Green Claw Swamp, north of the Venore Amazon Camp, Below Point of No Return in Outlaw Camp, Vandura Bonelord Cave, \z + Triangle Tower, Hidden cave north of Port Hope, Deeper Banuta, Dark Cathedral, Shadow Tomb, Ancient Ruins Tomb, \z + Tarpit Tomb, Mountain Tomb, Peninsula Tomb, Oasis Tomb and beneath Fenrock.", +} + +monster.health = 260 +monster.maxHealth = 260 +monster.race = "venom" +monster.corpse = 5992 +monster.speed = 75 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 6, + summons = { + { name = "Skeleton", chance = 20, interval = 2000, count = 6 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You've got the look!", yell = false }, + { text = "Let me take a look at you.", yell = false }, + { text = "Eye for eye!", yell = false }, + { text = "I've got to look!", yell = false }, + { text = "Here's looking at you!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 99400, maxCount = 48 }, + { id = 3059, chance = 4990 }, -- spellbook + { name = "terra rod", chance = 510 }, + { name = "two handed sword", chance = 3950 }, + { name = "morning star", chance = 7020 }, + { name = "longsword", chance = 9060 }, + { name = "steel shield", chance = 3980 }, + { name = "bonelord shield", chance = 110 }, + { name = "bonelord eye", chance = 1000 }, + { name = "mana potion", chance = 300 }, + { name = "small flask of eyedrops", chance = 5060 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_ENERGYDAMAGE, minDamage = -15, maxDamage = -45, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_FIREDAMAGE, minDamage = -25, maxDamage = -45, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -50, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = -5, maxDamage = -45, range = 7, shootEffect = CONST_ANI_POISON, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -5, maxDamage = -50, range = 7, shootEffect = CONST_ANI_DEATH, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -45, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_MANADRAIN, minDamage = -5, maxDamage = -35, range = 7, target = false }, +} + +monster.defenses = { + defense = 5, + armor = 5, + mitigation = 0.51, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/brain_squid.lua b/data-canary/monster/magicals/brain_squid.lua new file mode 100644 index 00000000000..443c01fe1a2 --- /dev/null +++ b/data-canary/monster/magicals/brain_squid.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Brain Squid") +local monster = {} + +monster.description = "a brain squid" +monster.experience = 17672 +monster.outfit = { + lookType = 1059, + lookHead = 17, + lookBody = 41, + lookLegs = 77, + lookFeet = 57, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1653 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Secret Library (energy section).", +} + +monster.health = 18000 +monster.maxHealth = 18000 +monster.race = "undead" +monster.corpse = 28582 +monster.speed = 215 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "tzzzz tzzzzz tzzzzz", yell = false }, + { text = "tzuuuumme tzuuummmmee", yell = false }, +} + +monster.loot = { + { name = "violet crystal shard", chance = 900, maxCount = 4 }, + { name = "platinum coin", chance = 100000, maxCount = 12 }, + { name = "glowing rune", chance = 900, maxCount = 4 }, + { name = "instable proto matter", chance = 1200, maxCount = 4 }, + { name = "energy ball", chance = 1200, maxCount = 4 }, + { name = "energy bar", chance = 1200, maxCount = 4 }, + { name = "energy drink", chance = 1200, maxCount = 4 }, + { name = "odd organ", chance = 1200, maxCount = 4 }, + { name = "frozen lightning", chance = 1200, maxCount = 4 }, + { id = 28568, chance = 1200, maxCount = 3 }, -- inkwell + { name = "small ruby", chance = 1200, maxCount = 4 }, + { name = "violet gem", chance = 1200, maxCount = 4 }, + { name = "blue crystal splinter", chance = 1200, maxCount = 4 }, + { name = "cyan crystal fragment", chance = 1200, maxCount = 4 }, + { name = "ultimate mana potion", chance = 1200, maxCount = 4 }, + { name = "piece of dead brain", chance = 1200, maxCount = 4 }, + { name = "wand of defiance", chance = 800 }, + { name = "lightning headband", chance = 950 }, + { name = "lightning pendant", chance = 850 }, + { name = "might ring", chance = 1300 }, + { name = "slime heart", chance = 1200, maxCount = 4 }, + { id = 23544, chance = 560 }, -- collar of red plasma + { id = 23542, chance = 560 }, -- collar of blue plasma + { id = 23543, chance = 560 }, -- collar of green plasma + { id = 23533, chance = 560 }, -- ring of red plasma + { id = 23529, chance = 560 }, -- ring of blue plasma + { id = 23531, chance = 560 }, -- ring of green plasma +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -470, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -505, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 78, + mitigation = 2.16, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = -15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/braindeath.lua b/data-canary/monster/magicals/braindeath.lua new file mode 100644 index 00000000000..62187667f0c --- /dev/null +++ b/data-canary/monster/magicals/braindeath.lua @@ -0,0 +1,143 @@ +local mType = Game.createMonsterType("Braindeath") +local monster = {} + +monster.description = "a braindeath" +monster.experience = 985 +monster.outfit = { + lookType = 256, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 321 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Helheim, Demon Forge (The Arcanum), beneath Fenrock, Vandura Bonelord Cave, \z + Alchemist Quarter and Cemetery Quarter.", +} + +monster.health = 1225 +monster.maxHealth = 1225 +monster.race = "undead" +monster.corpse = 7256 +monster.speed = 109 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 3, + color = 180, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "Vampire", chance = 10, interval = 2000, count = 2 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You have disturbed my thoughts!", yell = false }, + { text = "I will turn you into something more useful!", yell = false }, + { text = "Let me taste your brain!", yell = false }, + { text = "You will be punished!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 99470, maxCount = 89 }, + { name = "bone sword", chance = 15130 }, + { name = "sniper arrow", chance = 9560, maxCount = 4 }, + { name = "steel shield", chance = 5940 }, + { name = "piece of dead brain", chance = 5030 }, + { name = "bonelord eye", chance = 2960 }, + { name = "clerical mace", chance = 1970 }, + { name = "haunted blade", chance = 1440 }, + { id = 3059, chance = 930 }, -- spellbook + { name = "spiked squelcher", chance = 180 }, + { name = "bonelord shield", chance = 100 }, + { name = "bonelord helmet", chance = 100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -93, maxDamage = -170, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -75, maxDamage = -125, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -85, maxDamage = -170, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -65, maxDamage = -125, range = 7, shootEffect = CONST_ANI_POISON, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -75, maxDamage = -85, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -155, range = 7, target = false }, +} + +monster.defenses = { + defense = 12, + armor = 12, + mitigation = 0.67, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 260, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 15 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = -20 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/burning_book.lua b/data-canary/monster/magicals/burning_book.lua new file mode 100644 index 00000000000..f12bbab7a25 --- /dev/null +++ b/data-canary/monster/magicals/burning_book.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Burning Book") +local monster = {} + +monster.description = "a burning book" +monster.experience = 11934 +monster.outfit = { + lookType = 1061, + lookHead = 79, + lookBody = 113, + lookLegs = 78, + lookFeet = 112, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1663 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Secret Library (fire section).", +} + +monster.health = 18000 +monster.maxHealth = 18000 +monster.race = "ink" +monster.corpse = 28754 +monster.speed = 220 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 89960, maxCount = 28 }, + { name = "book page", chance = 3000, maxCount = 7 }, + { name = "demonic essence", chance = 3000, maxCount = 5 }, + { name = "flask of demonic blood", chance = 3000, maxCount = 3 }, + { name = "small amethyst", chance = 2000, maxCount = 4 }, + { id = 3307, chance = 3000 }, -- scimitar + { name = "silken bookmark", chance = 2000, maxCount = 2 }, + { name = "magma coat", chance = 2000 }, + { name = "guardian shield", chance = 1500 }, + { name = "soul orb", chance = 3000, maxCount = 4 }, + { name = "necrotic rod", chance = 3000 }, + { name = "magma monocle", chance = 1500 }, + { id = 6299, chance = 1200 }, -- death ring + { id = 3049, chance = 1800 }, -- stealth ring + { name = "shadow sceptre", chance = 8990 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -700 }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -780, range = 7, shootEffect = CONST_ANI_FLAMMINGARROW, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "combat", interval = 1500, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -900, radius = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -850, length = 5, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -775, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, +} + +monster.defenses = { + defense = 33, + armor = 82, + mitigation = 2.16, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/choking_fear.lua b/data-canary/monster/magicals/choking_fear.lua new file mode 100644 index 00000000000..604ca5cdaa6 --- /dev/null +++ b/data-canary/monster/magicals/choking_fear.lua @@ -0,0 +1,145 @@ +local mType = Game.createMonsterType("Choking Fear") +local monster = {} + +monster.description = "a choking fear" +monster.experience = 4700 +monster.outfit = { + lookType = 586, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1015 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "All over the surface of Upper Roshamuul and Nightmare Isles.", +} + +monster.health = 5800 +monster.maxHealth = 5800 +monster.race = "undead" +monster.corpse = 20159 +monster.speed = 190 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 5, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Ah, sweet air... don't you miss it?", yell = false }, + { text = "Murr tat muuza!", yell = false }, + { text = "kchh", yell = false }, + { text = "hsssss", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "platinum coin", chance = 100000, maxCount = 8 }, + { id = 3051, chance = 3000 }, -- energy ring + { id = 3052, chance = 4200 }, -- life ring + { id = 3098, chance = 3000 }, -- ring of healing + { name = "guardian shield", chance = 1540 }, + { name = "beastslayer axe", chance = 3290 }, + { name = "brown piece of cloth", chance = 6000 }, + { name = "yellow piece of cloth", chance = 3500 }, + { name = "great mana potion", chance = 20000, maxCount = 3 }, + { name = "terra boots", chance = 720 }, + { name = "great spirit potion", chance = 20000, maxCount = 3 }, + { name = "ultimate health potion", chance = 19000, maxCount = 3 }, + { name = "spellbook of mind control", chance = 720 }, + { name = "underworld rod", chance = 720 }, + { name = "springsprout rod", chance = 510 }, + { name = "green crystal shard", chance = 1540 }, + { name = "brown crystal splinter", chance = 52500, maxCount = 2 }, + { name = "blue crystal splinter", chance = 10000, maxCount = 3 }, + { name = "cluster of solace", chance = 4620 }, + { name = "dead weight", chance = 14180 }, + { name = "hemp rope", chance = 14180 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -499, condition = { type = CONDITION_POISON, totalDamage = 600, interval = 4000 } }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -700, maxDamage = -900, length = 5, spread = 0, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_SLEEP, target = true }, + { name = "speed", interval = 2000, chance = 20, speedChange = -800, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_SLEEP, target = true, duration = 15000 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -130, maxDamage = -300, radius = 4, effect = CONST_ME_SOUND_RED, target = false }, + { name = "choking fear drown", interval = 2000, chance = 20, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -500, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, +} + +monster.defenses = { + defense = 35, + armor = 65, + mitigation = 1.94, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 2 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 55 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/crypt_warden.lua b/data-canary/monster/magicals/crypt_warden.lua new file mode 100644 index 00000000000..7eedb1ff920 --- /dev/null +++ b/data-canary/monster/magicals/crypt_warden.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Crypt Warden") +local monster = {} + +monster.description = "a crypt warden" +monster.experience = 8400 +monster.outfit = { + lookType = 1190, + lookHead = 41, + lookBody = 38, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1805 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Kilmaresh Catacombs.", +} + +monster.health = 8300 +monster.maxHealth = 8300 +monster.race = "blood" +monster.corpse = 31650 +monster.speed = 145 +monster.manaCost = 0 + +monster.faction = FACTION_ANUMA +monster.enemyFactions = { FACTION_PLAYER, FACTION_FAFNAR } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You set foot on forbidden ground? Outrageous!", yell = false }, + { text = "Let the deceased rest in peace!", yell = false }, + { text = "Sacrilege!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 3 }, + { name = "cyan crystal fragment", chance = 13670 }, + { name = "green crystal fragment", chance = 1770 }, + { name = "lamassu horn", chance = 10770 }, + { name = "lamassu hoof", chance = 9700 }, + { name = "small amethyst", chance = 8680 }, + { name = "gold ingot", chance = 4660 }, + { name = "green gem", chance = 1290 }, + { name = "elven amulet", chance = 800 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, + { name = "warden x", interval = 2000, chance = 15, minDamage = -250, maxDamage = -430, target = false }, + { name = "warden ring", interval = 2000, chance = 8, minDamage = -250, maxDamage = -380, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -480, radius = 2, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -450, length = 5, spread = 0, effect = CONST_ME_HOLYAREA, target = false }, +} + +monster.defenses = { + defense = 84, + armor = 84, + mitigation = 2.31, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 25 }, + { type = COMBAT_DEATHDAMAGE, percent = -35 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/crystalcrusher.lua b/data-canary/monster/magicals/crystalcrusher.lua new file mode 100644 index 00000000000..4da886c9df3 --- /dev/null +++ b/data-canary/monster/magicals/crystalcrusher.lua @@ -0,0 +1,126 @@ +local mType = Game.createMonsterType("Crystalcrusher") +local monster = {} + +monster.description = "a crystalcrusher" +monster.experience = 500 +monster.outfit = { + lookType = 511, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "MiddleSpikeDeath", +} + +monster.raceId = 869 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Crystal Grounds, Mushroom Farms, Middle Spike.", +} + +monster.health = 570 +monster.maxHealth = 570 +monster.race = "venom" +monster.corpse = 16197 +monster.speed = 195 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Creak!", yell = false }, + { text = "Crackle!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 85000, maxCount = 90 }, + { name = "crystalline arrow", chance = 5000, maxCount = 3 }, + { name = "green crystal splinter", chance = 4920 }, + { name = "brown crystal splinter", chance = 5250 }, + { name = "blue crystal splinter", chance = 5000 }, + { name = "crystalline spikes", chance = 3690 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -167 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -110, maxDamage = -260, radius = 3, effect = CONST_ME_GREEN_RINGS, target = true }, +} + +monster.defenses = { + defense = 20, + armor = 48, + mitigation = 1.29, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 5, maxDamage = 15, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 129, maxDamage = 175, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -3 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/cursed_book.lua b/data-canary/monster/magicals/cursed_book.lua new file mode 100644 index 00000000000..329a841b7ba --- /dev/null +++ b/data-canary/monster/magicals/cursed_book.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Cursed Book") +local monster = {} + +monster.description = "a cursed book" +monster.experience = 13345 +monster.outfit = { + lookType = 1061, + lookHead = 79, + lookBody = 81, + lookLegs = 93, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1655 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Secret Library (earth section).", +} + +monster.health = 20000 +monster.maxHealth = 20000 +monster.race = "ink" +monster.corpse = 28590 +monster.speed = 220 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 28569, chance = 10000, maxCount = 3 }, -- book page + { name = "platinum coin", chance = 10000, maxCount = 10 }, + { id = 28566, chance = 10000, maxCount = 3 }, -- silken bookmark + { name = "small diamond", chance = 10000, maxCount = 7 }, + { name = "small stone", chance = 10000, maxCount = 7 }, + { name = "small topaz", chance = 10000, maxCount = 7 }, + { name = "protection amulet", chance = 10000 }, + { name = "terra boots", chance = 350 }, + { name = "terra hood", chance = 600 }, + { name = "diamond sceptre", chance = 600 }, + { name = "terra mantle", chance = 250 }, + { name = "terra legs", chance = 250 }, + { name = "terra amulet", chance = 500 }, + { name = "stone skin amulet", chance = 350 }, + { name = "springsprout rod", chance = 350 }, + { name = "sacred tree amulet", chance = 350 }, + { name = "swamplair armor", chance = 250 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -680, range = 7, shootEffect = CONST_ANI_EARTHARROW, target = false }, + { name = "combat", interval = 1000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -575, length = 5, spread = 0, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -230, maxDamage = -880, range = 7, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 82, + mitigation = 2.16, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/dragonling.lua b/data-canary/monster/magicals/dragonling.lua new file mode 100644 index 00000000000..e618988c483 --- /dev/null +++ b/data-canary/monster/magicals/dragonling.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Dragonling") +local monster = {} + +monster.description = "a dragonling" +monster.experience = 2200 +monster.outfit = { + lookType = 505, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 894 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "Fury Dungeon and Goroma volcano (surface floor, inner volcano) only during the \z + Fire from the Earth Mini World Change.", +} + +monster.health = 2600 +monster.maxHealth = 2600 +monster.race = "blood" +monster.corpse = 16144 +monster.speed = 230 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 900, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "FI?", yell = true }, + { text = "FCHHHHH", yell = true }, + { text = "SQUAWK!", yell = true }, + { text = "FIYAH", yell = true }, +} + +monster.loot = { + { name = "gold coin", chance = 37500, maxCount = 100 }, + { name = "gold coin", chance = 37500, maxCount = 100 }, + { name = "gold coin", chance = 37500, maxCount = 27 }, + { name = "strong health potion", chance = 24480, maxCount = 2 }, + { name = "strong mana potion", chance = 16900, maxCount = 2 }, + { name = "blazing bone", chance = 12410 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -210 }, + { name = "dragonling wave", interval = 2000, chance = 10, minDamage = -120, maxDamage = -250, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -115, maxDamage = -180, radius = 3, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -95, maxDamage = -150, radius = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_STUN, target = true, duration = 16000 }, +} + +monster.defenses = { + defense = 25, + armor = 58, + mitigation = 1.46, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/efreet.lua b/data-canary/monster/magicals/efreet.lua new file mode 100644 index 00000000000..d20dd609a9f --- /dev/null +++ b/data-canary/monster/magicals/efreet.lua @@ -0,0 +1,147 @@ +local mType = Game.createMonsterType("Efreet") +local monster = {} + +monster.description = "an efreet" +monster.experience = 410 +monster.outfit = { + lookType = 103, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 103 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Mal'ouquah, Deeper Banuta, Goromas Cult Cave (in the classroom), Magician Quarter.", +} + +monster.health = 550 +monster.maxHealth = 550 +monster.race = "blood" +monster.corpse = 6032 +monster.speed = 117 +monster.manaCost = 0 + +monster.faction = FACTION_EFREET +monster.enemyFactions = { FACTION_PLAYER, FACTION_MARID } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "green djinn", chance = 10, interval = 2000, count = 2 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I grant you a deathwish!", yell = false }, + { text = "I wish you a merry trip to hell!", yell = false }, + { text = "Good wishes are for fairytales", yell = false }, + { text = "Muhahahaha!", yell = false }, + { text = "Tell me your last wish!", yell = false }, +} + +monster.loot = { + { id = 2647, chance = 2200 }, -- green tapestry + { name = "small oil lamp", chance = 160 }, + { name = "gold coin", chance = 50000, maxCount = 75 }, + { name = "gold coin", chance = 60000, maxCount = 50 }, + { name = "small emerald", chance = 7000 }, + { name = "green gem", chance = 200 }, + { name = "wand of inferno", chance = 390 }, + { name = "heavy machete", chance = 5000 }, + { name = "mystic turban", chance = 160 }, + { name = "pear", chance = 9390, maxCount = 5 }, + { name = "green piece of cloth", chance = 3000 }, + { name = "royal spear", chance = 15570, maxCount = 3 }, + { name = "strong mana potion", chance = 3500 }, + { name = "magma monocle", chance = 360 }, + { name = "jewelled belt", chance = 8540 }, + { name = "noble turban", chance = 1130 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -40, maxDamage = -110, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -30, maxDamage = -90, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -65, maxDamage = -120, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -650, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, target = false, duration = 6000 }, + { name = "outfit", interval = 2000, chance = 1, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitMonster = "rat" }, + { name = "djinn electrify", interval = 2000, chance = 15, range = 5, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 24, + mitigation = 0.91, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 60 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = 90 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = -8 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/elder_bonelord.lua b/data-canary/monster/magicals/elder_bonelord.lua new file mode 100644 index 00000000000..f8d5059033d --- /dev/null +++ b/data-canary/monster/magicals/elder_bonelord.lua @@ -0,0 +1,144 @@ +local mType = Game.createMonsterType("Elder Bonelord") +local monster = {} + +monster.description = "an elder bonelord" +monster.experience = 280 +monster.outfit = { + lookType = 108, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 108 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Hellgate, near the Hellgate Library, Deeper Banuta, behind piano in Cult Cave to the \z + northeast of Liberty Bay, Vandura Bonelord Cave, Goroma, Helheim, \z + underground of Fenrock (on the way to Beregar), Vengoth.", +} + +monster.health = 500 +monster.maxHealth = 500 +monster.race = "blood" +monster.corpse = 6037 +monster.speed = 85 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 6, + summons = { + { name = "Gazer", chance = 10, interval = 2000, count = 6 }, + { name = "Crypt Shambler", chance = 15, interval = 2000, count = 6 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Inferior creatures, bow before my power!", yell = false }, + { text = "Let me take a look at you!", yell = false }, + { text = "659978 54764!", yell = false }, + { text = "653768764!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 99290, maxCount = 86 }, + { name = "elder bonelord tentacle", chance = 20040 }, + { name = "small flask of eyedrops", chance = 9720 }, + { name = "sniper arrow", chance = 8780, maxCount = 5 }, + { name = "two handed sword", chance = 2980 }, + { name = "steel shield", chance = 2040 }, + { id = 3059, chance = 1030 }, -- spellbook + { name = "strong mana potion", chance = 830 }, + { name = "giant eye", chance = 460 }, + { name = "bonelord shield", chance = 90 }, + { name = "bonelord helmet", chance = 90 }, + { name = "bonelord eye", chance = 1920 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -55 }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_ENERGYDAMAGE, minDamage = -45, maxDamage = -60, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_FIREDAMAGE, minDamage = -40, maxDamage = -80, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -45, maxDamage = -90, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -20, maxDamage = -40, range = 7, shootEffect = CONST_ANI_POISON, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_LIFEDRAIN, minDamage = -45, maxDamage = -85, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -40, range = 7, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, +} + +monster.defenses = { + defense = 13, + armor = 13, + mitigation = 0.67, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 30 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 30 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/energetic_book.lua b/data-canary/monster/magicals/energetic_book.lua new file mode 100644 index 00000000000..70270f968cf --- /dev/null +++ b/data-canary/monster/magicals/energetic_book.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Energetic Book") +local monster = {} + +monster.description = "an energetic book" +monster.experience = 12034 +monster.outfit = { + lookType = 1061, + lookHead = 15, + lookBody = 91, + lookLegs = 85, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1665 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Secret Library (energy section).", +} + +monster.health = 18500 +monster.maxHealth = 18500 +monster.race = "ink" +monster.corpse = 28778 +monster.speed = 220 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Flood the room with curious energy!", yell = false }, + { text = "zup zup zup zuuuuup!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 28 }, + { id = 28569, chance = 900, maxCount = 8 }, -- book page + { id = 28570, chance = 900, maxCount = 7 }, -- glowing rune + { name = "ultimate health potion", chance = 10000, maxCount = 7 }, + { name = "ultimate mana potion", chance = 10000, maxCount = 7 }, + { name = "energy ball", chance = 900, maxCount = 7 }, + { id = 28566, chance = 800, maxCount = 7 }, -- silken bookmark + { name = "lightning pendant", chance = 500 }, + { name = "lightning boots", chance = 500 }, + { name = "lightning headband", chance = 500 }, + { name = "might ring", chance = 500 }, + { name = "spellweaver's robe", chance = 350 }, + { name = "wand of defiance", chance = 350 }, + { name = "haunted blade", chance = 550 }, + { name = "lightning legs", chance = 350 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -680, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -505, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 1500, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -700, length = 8, spread = 0, effect = CONST_ME_STUN, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 82, + mitigation = 2.16, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/energuardian_of_tales.lua b/data-canary/monster/magicals/energuardian_of_tales.lua new file mode 100644 index 00000000000..13d2df2e0d9 --- /dev/null +++ b/data-canary/monster/magicals/energuardian_of_tales.lua @@ -0,0 +1,120 @@ +local mType = Game.createMonsterType("Energuardian of Tales") +local monster = {} + +monster.description = "an energuardian of tales" +monster.experience = 11361 +monster.outfit = { + lookType = 1063, + lookHead = 86, + lookBody = 85, + lookLegs = 82, + lookFeet = 93, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 1666 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "The Secret Library (energy section).", +} + +monster.health = 14000 +monster.maxHealth = 14000 +monster.race = "undead" +monster.corpse = 28873 +monster.speed = 210 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Die, enervating mortal!", yell = false }, + { text = "Let the energy flow!", yell = false }, +} + +monster.loot = { + { id = 28569, chance = 10000, maxCount = 5 }, -- book page + { id = 28570, chance = 10000, maxCount = 5 }, -- glowing rune + { name = "small amethyst", chance = 10000, maxCount = 5 }, + { name = "flash arrow", chance = 10000, maxCount = 5 }, + { name = "lightning legs", chance = 250 }, + { name = "spellbook of warding", chance = 350 }, + { name = "ultimate health potion", chance = 10000, maxCount = 5 }, + { name = "ultimate mana potion", chance = 10000, maxCount = 5 }, + { name = "wand of starstorm", chance = 300 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -10, maxDamage = -550 }, + { name = "combat", interval = 1000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -555, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 77, + mitigation = 1.94, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = -12 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/enfeebled_silencer.lua b/data-canary/monster/magicals/enfeebled_silencer.lua new file mode 100644 index 00000000000..c631f75d0cb --- /dev/null +++ b/data-canary/monster/magicals/enfeebled_silencer.lua @@ -0,0 +1,136 @@ +local mType = Game.createMonsterType("Enfeebled Silencer") +local monster = {} + +monster.description = "an enfeebled silencer" +monster.experience = 1100 +monster.outfit = { + lookType = 585, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "ThreatenedDreamsNightmareMonstersDeath", +} + +monster.raceId = 1443 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Feyrist.", +} + +monster.health = 1100 +monster.maxHealth = 1100 +monster.race = "blood" +monster.corpse = 20155 +monster.speed = 165 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 5, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Prrrroooaaaah!!! PRROAAAH!!", yell = false }, + { text = "PRRRROOOOOAAAAAHHHH!!!", yell = true }, + { text = "HUUUSSSSSSSSH!!", yell = true }, + { text = "Hussssssh!!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin + { id = 3035, chance = 40000, maxCount = 1 }, -- platinum coin + { id = 3049, chance = 1200 }, -- stealth ring + { id = 3079, chance = 500 }, -- boots of haste + { id = 7368, chance = 7600, maxCount = 10 }, -- assassin star + { id = 7387, chance = 800 }, -- diamond sceptre + { id = 7407, chance = 1600 }, -- haunted blade + { id = 7451, chance = 1000 }, -- shadow sceptre + { id = 7454, chance = 1000 }, -- glorious axe + { id = 812, chance = 960 }, -- terra legs + { id = 813, chance = 480 }, -- terra boots + { id = 20200, chance = 4000 }, -- silencer claws + { name = "fairy wings", chance = 12000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 80, attack = 70, condition = { type = CONDITION_POISON, totalDamage = 200, interval = 4000 } }, + { name = "silencer skill reducer", interval = 2000, chance = 10, range = 3, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -40, maxDamage = -90, radius = 4, shootEffect = CONST_ANI_ONYXARROW, effect = CONST_ME_MAGIC_RED, target = true }, +} + +monster.defenses = { + defense = 20, + armor = 44, + mitigation = 1.43, + { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 225, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 60 }, + { type = COMBAT_FIREDAMAGE, percent = 30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 65 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/fahim_the_wise.lua b/data-canary/monster/magicals/fahim_the_wise.lua new file mode 100644 index 00000000000..839bfdb8231 --- /dev/null +++ b/data-canary/monster/magicals/fahim_the_wise.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Fahim the Wise") +local monster = {} + +monster.description = "Fahim the Wise" +monster.experience = 1500 +monster.outfit = { + lookType = 104, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 2000 +monster.maxHealth = 2000 +monster.race = "blood" +monster.corpse = 6033 +monster.speed = 90 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = true, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 3, + summons = { + { name = "blue djinn", chance = 10, interval = 2000, count = 3 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You should know better than to be an enemy of the Marid", yell = false }, +} + +monster.loot = { + { name = "blue piece of cloth", chance = 99990, maxCount = 4 }, + { name = "jewelled belt", chance = 99990 }, + { name = "gold coin", chance = 95240, maxCount = 118 }, + { name = "noble turban", chance = 66670 }, + { name = "royal spear", chance = 57140, maxCount = 3 }, + { name = "shiny stone", chance = 47620 }, + { name = "strong mana potion", chance = 42860, maxCount = 3 }, + { name = "blueberry", chance = 40480, maxCount = 22 }, + { name = "mystic turban", chance = 33330 }, + { name = "small sapphire", chance = 14290, maxCount = 2 }, + { name = "seeds", chance = 7140 }, + { name = "magma monocle", chance = 4760 }, + { name = "blue gem", chance = 2380 }, + { name = "small oil lamp", chance = 580 }, + { id = 2948, chance = 480 }, -- wooden flute + { name = "heavy machete", chance = 380 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -300, range = 7, shootEffect = CONST_ANI_ENERGYBALL, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -30, maxDamage = -90, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -650, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 1500 }, + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, target = false, duration = 6000 }, + { name = "outfit", interval = 2000, chance = 1, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitMonster = "rabbit" }, + { name = "djinn electrify", interval = 2000, chance = 15, range = 5, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -30, maxDamage = -90, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 20, + mitigation = 1.29, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 1 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -15 }, + { type = COMBAT_HOLYDAMAGE, percent = 1 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/feral_sphinx.lua b/data-canary/monster/magicals/feral_sphinx.lua new file mode 100644 index 00000000000..376daa84443 --- /dev/null +++ b/data-canary/monster/magicals/feral_sphinx.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Feral Sphinx") +local monster = {} + +monster.description = "a feral sphinx" +monster.experience = 8800 +monster.outfit = { + lookType = 1188, + lookHead = 76, + lookBody = 75, + lookLegs = 57, + lookFeet = 0, + lookAddons = 2, + lookMount = 0, +} + +monster.raceId = 1807 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Kilmaresh, south of Issavi.", +} + +monster.health = 9800 +monster.maxHealth = 9800 +monster.race = "blood" +monster.corpse = 31658 +monster.speed = 160 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I am not as kind as my sisters!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 3 }, + { name = "green crystal shard", chance = 8740 }, + { name = "cyan crystal fragment", chance = 8620 }, + { id = 3039, chance = 8390 }, -- red gem + { name = "magma amulet", chance = 6060 }, + { name = "wand of inferno", chance = 5710 }, + { name = "small sapphire", chance = 5590, maxCount = 2 }, + { name = "dragon necklace", chance = 5590 }, + { name = "blue gem", chance = 5480 }, + { name = "sphinx feather", chance = 5480 }, + { name = "sphinx tiara", chance = 5240 }, + { name = "fire axe", chance = 4200 }, + { name = "wand of draconia", chance = 2910 }, + { name = "green gem", chance = 2680 }, + { name = "magma monocle", chance = 1400 }, + { name = "magma boots", chance = 1280 }, + { name = "small enchanted emerald", chance = 1050, maxCount = 2 }, + { name = "magma legs", chance = 930 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "fire wave", interval = 2000, chance = 15, minDamage = -350, maxDamage = -500, length = 1, spread = 0, effect = CONST_ME_FIREAREA, target = true }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -500, radius = 4, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -550, range = 1, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 2000, chance = 18, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -580, length = 6, spread = 3, effect = CONST_ME_HOLYAREA, target = false }, +} + +monster.defenses = { + defense = 90, + armor = 90, + mitigation = 2.69, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 200, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -15 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/feversleep.lua b/data-canary/monster/magicals/feversleep.lua new file mode 100644 index 00000000000..dae681d08d6 --- /dev/null +++ b/data-canary/monster/magicals/feversleep.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Feversleep") +local monster = {} + +monster.description = "a feversleep" +monster.experience = 5060 +monster.outfit = { + lookType = 593, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1021 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Roshamuul Mines, Roshamuul Cistern.", +} + +monster.health = 5900 +monster.maxHealth = 5900 +monster.race = "blood" +monster.corpse = 20163 +monster.speed = 180 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "small emerald", chance = 11000, maxCount = 2 }, + { name = "small amethyst", chance = 12000, maxCount = 3 }, + { name = "platinum coin", chance = 100000, maxCount = 9 }, + { name = "blue robe", chance = 1500 }, + { name = "great mana potion", chance = 40000, maxCount = 2 }, + { name = "ultimate health potion", chance = 18000 }, + { name = "small topaz", chance = 16000, maxCount = 2 }, + { name = "blue crystal shard", chance = 11000 }, + { name = "blue crystal splinter", chance = 13000 }, + { name = "cyan crystal fragment", chance = 18000 }, + { name = "trapped bad dream monster", chance = 17000 }, + { name = "bowl of terror sweat", chance = 14000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 20, minDamage = -800, maxDamage = -1000, radius = 7, effect = CONST_ME_YELLOW_RINGS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -70, maxDamage = -100, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "feversleep skill reducer", interval = 2000, chance = 10, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -250, maxDamage = -300, length = 6, spread = 0, effect = CONST_ME_YELLOWENERGY, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -300, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, +} + +monster.defenses = { + defense = 45, + armor = 73, + mitigation = 1.10, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 250, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_HITAREA }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 15 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 35 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 55 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/flying_book.lua b/data-canary/monster/magicals/flying_book.lua new file mode 100644 index 00000000000..7d180f24df0 --- /dev/null +++ b/data-canary/monster/magicals/flying_book.lua @@ -0,0 +1,109 @@ +local mType = Game.createMonsterType("Flying Book") +local monster = {} + +monster.description = "a flying book" +monster.experience = 200 +monster.outfit = { + lookType = 1060, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1654 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "Secret Library (fire and energy sections).", +} + +monster.health = 500 +monster.maxHealth = 500 +monster.race = "ink" +monster.corpse = 28586 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -180, range = 7, shootEffect = CONST_ANI_ICE, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 45, + mitigation = 1.46, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 50 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 30 }, + { type = COMBAT_HOLYDAMAGE, percent = 90 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/forest_fury.lua b/data-canary/monster/magicals/forest_fury.lua new file mode 100644 index 00000000000..fc5a688e39f --- /dev/null +++ b/data-canary/monster/magicals/forest_fury.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Forest Fury") +local monster = {} + +monster.description = "a forest fury" +monster.experience = 235 +monster.outfit = { + lookType = 569, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 980 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Forest Fury Camp and in the Forest Fury version of the Forsaken Mine.", +} + +monster.health = 480 +monster.maxHealth = 480 +monster.race = "blood" +monster.corpse = 19042 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "To arms, sisters!", yell = false }, + { text = "Feel the wrath of mother forest!", yell = false }, + { text = "By the power of Greenskull!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 87250, maxCount = 53 }, + { name = "crossbow", chance = 2750 }, + { name = "bolt", chance = 48270, maxCount = 15 }, + { name = "meat", chance = 24930 }, + { name = "piercing bolt", chance = 14900, maxCount = 5 }, + { name = "elvish bow", chance = 90 }, + { name = "small topaz", chance = 470 }, + { name = "elven hoof", chance = 7030 }, + { name = "venison", chance = 13210 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -125 }, + { name = "combat", interval = 1500, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, radius = 4, shootEffect = CONST_ANI_HUNTINGSPEAR, effect = CONST_ME_MAGIC_GREEN, target = true }, + { name = "forest fury skill reducer", interval = 2000, chance = 20, range = 5, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 19, + mitigation = 0.80, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = 40 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/frazzlemaw.lua b/data-canary/monster/magicals/frazzlemaw.lua index 4a87dce1e52..09df1f13008 100644 --- a/data-canary/monster/magicals/frazzlemaw.lua +++ b/data-canary/monster/magicals/frazzlemaw.lua @@ -13,6 +13,10 @@ monster.outfit = { lookMount = 0, } +monster.events = { + "RoshamuulKillsDeath", +} + monster.raceId = 1022 monster.Bestiary = { class = "Magical", diff --git a/data-canary/monster/magicals/gargoyle.lua b/data-canary/monster/magicals/gargoyle.lua new file mode 100644 index 00000000000..f941d2f33e8 --- /dev/null +++ b/data-canary/monster/magicals/gargoyle.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Gargoyle") +local monster = {} + +monster.description = "a gargoyle" +monster.experience = 150 +monster.outfit = { + lookType = 95, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 95 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Meriana Gargoyle Cave, Ankrahmun Tombs, Mal'ouquah, Goroma, Deeper Banuta, \z + Formorgar Mines, Vengoth, Farmine Mines, Upper Spike and Medusa Tower.", +} + +monster.health = 250 +monster.maxHealth = 250 +monster.race = "undead" +monster.corpse = 6027 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 30, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Feel my claws, softskin.", yell = false }, + { text = "There is a stone in your shoe!", yell = false }, + { text = "Stone sweet stone.", yell = false }, + { text = "Harrrr harrrr!", yell = false }, + { text = "Chhhhhrrrrk!", yell = false }, +} + +monster.loot = { + { id = 3012, chance = 1480 }, -- wolf tooth chain + { name = "gold coin", chance = 88000, maxCount = 30 }, + { id = 3093, chance = 260 }, -- club ring + { name = "morning star", chance = 2150 }, + { name = "steel helmet", chance = 850 }, + { name = "dark armor", chance = 300 }, + { name = "battle shield", chance = 1000 }, + { name = "strawberry", chance = 1810, maxCount = 5 }, + { name = "potato", chance = 9220, maxCount = 2 }, + { name = "stone wing", chance = 11730 }, + { name = "shiny stone", chance = 190 }, + { name = "piece of marble rock", chance = 630 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -65 }, +} + +monster.defenses = { + defense = 25, + armor = 26, + mitigation = 0.78, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 5, maxDamage = 15, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 40 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/gazer.lua b/data-canary/monster/magicals/gazer.lua new file mode 100644 index 00000000000..b001d8ce881 --- /dev/null +++ b/data-canary/monster/magicals/gazer.lua @@ -0,0 +1,116 @@ +local mType = Game.createMonsterType("Gazer") +local monster = {} + +monster.description = "a gazer" +monster.experience = 90 +monster.outfit = { + lookType = 109, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 109 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Hellgate bonelord cave, Vandura Bonelord Cave, also anywhere Elder Bonelords exist, as summons.", +} + +monster.health = 120 +monster.maxHealth = 120 +monster.race = "venom" +monster.corpse = 6036 +monster.speed = 70 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Mommy!?", yell = false }, + { text = "Buuuuhaaaahhaaaaa!", yell = false }, + { text = "Me need mana!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 99350, maxCount = 16 }, + { name = "small flask of eyedrops", chance = 3200 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -15 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -25, maxDamage = -35, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -10, maxDamage = -35, range = 7, target = false }, +} + +monster.defenses = { + defense = 4, + armor = 4, + mitigation = 0.38, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/girtablilu_warrior.lua b/data-canary/monster/magicals/girtablilu_warrior.lua new file mode 100644 index 00000000000..8dac11a26ac --- /dev/null +++ b/data-canary/monster/magicals/girtablilu_warrior.lua @@ -0,0 +1,143 @@ +local mType = Game.createMonsterType("Girtablilu Warrior") +local monster = {} + +monster.description = "a girtablilu warrior" +monster.experience = 5800 +monster.outfit = { + lookType = 1407, + lookHead = 114, + lookBody = 39, + lookLegs = 113, + lookFeet = 114, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 2099 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Ruins of Nuur.", +} + +monster.health = 8500 +monster.maxHealth = 8500 +monster.race = "blood" +monster.corpse = 36800 +monster.speed = 180 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 70000, maxCount = 25 }, + { name = "ultimate health potion", chance = 15360, maxCount = 4 }, + { name = "gold ingot", chance = 14130, maxCount = 2 }, + { name = "green crystal shard", chance = 6420, maxCount = 3 }, + { name = "red crystal fragment", chance = 5830, maxCount = 3 }, + { name = "girtablilu warrior carapace", chance = 4650, maxCount = 1 }, + { name = "cyan crystal fragment", chance = 4530, maxCount = 3 }, + { name = "scorpion charm", chance = 4240 }, + { name = "green gem", chance = 4060 }, + { name = "violet gem", chance = 3410 }, + { name = "blue crystal shard", chance = 2880, maxCount = 3 }, + { name = "crowbar", chance = 2830 }, + { name = "diamond sceptre", chance = 2590 }, + { name = "violet crystal shard", chance = 2470 }, + { name = "yellow gem", chance = 2350 }, + { name = "ice rapier", chance = 2240 }, + { name = "magma coat", chance = 2180 }, + { name = "epee", chance = 2120 }, + { name = "dragonbone staff", chance = 2000 }, + { name = "knight axe", chance = 2000 }, + { name = "beastslayer axe", chance = 1940 }, + { name = "green crystal fragment", chance = 1710 }, + { name = "blue gem", chance = 1530 }, + { id = 3039, chance = 1530 }, -- red gem + { name = "blue robe", chance = 1060 }, + { name = "focus cape", chance = 1060 }, + { name = "fur armor", chance = 820 }, + { name = "glacier robe", chance = 650 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -450 }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_DEATHDAMAGE, minDamage = -500, maxDamage = -650, radius = 4, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -450, range = 5, shootEffect = CONST_ANI_POISONARROW, target = true }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -400, length = 3, spread = 2, effect = CONST_ME_GREEN_RINGS, target = false }, +} + +monster.defenses = { + defense = 76, + armor = 76, + mitigation = 2.22, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 550, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -15 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/green_djinn.lua b/data-canary/monster/magicals/green_djinn.lua new file mode 100644 index 00000000000..31b13556cff --- /dev/null +++ b/data-canary/monster/magicals/green_djinn.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Green Djinn") +local monster = {} + +monster.description = "a green djinn" +monster.experience = 215 +monster.outfit = { + lookType = 51, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 51 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Mal'ouquah, Oasis Tomb, under the Ankrahmun Library Tomb, \z + Serpentine Tower last floor behind the Magic Walls, Deeper Banuta, Goroma underground, Magician Quarter.", +} + +monster.health = 330 +monster.maxHealth = 330 +monster.race = "blood" +monster.corpse = 6016 +monster.speed = 110 +monster.manaCost = 0 + +monster.faction = FACTION_EFREET +monster.enemyFactions = { FACTION_PLAYER, FACTION_MARID } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I grant you a deathwish!", yell = false }, + { text = "Muahahahahaha", yell = false }, + { text = "I wish you a merry trip to hell!", yell = false }, + { text = "Good wishes are for fairytales", yell = false }, +} + +monster.loot = { + { id = 2831, chance = 2280 }, -- book + { name = "gold coin", chance = 41000, maxCount = 70 }, + { name = "gold coin", chance = 51000, maxCount = 45 }, + { name = "small emerald", chance = 2960, maxCount = 4 }, + { name = "mystic turban", chance = 140 }, + { id = 3607, chance = 23500 }, -- cheese + { name = "grave flower", chance = 1000 }, + { name = "green piece of cloth", chance = 2000 }, + { name = "royal spear", chance = 4870, maxCount = 2 }, + { name = "mana potion", chance = 490 }, + { name = "dirty turban", chance = 2210 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -45, maxDamage = -80, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -105, range = 7, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, target = false, duration = 5000 }, + { name = "outfit", interval = 2000, chance = 1, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitMonster = "rat" }, + { name = "djinn electrify", interval = 2000, chance = 15, range = 5, target = false }, + { name = "djinn cancel invisibility", interval = 2000, chance = 10, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 15, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 50 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 80 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = -13 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/gryphon.lua b/data-canary/monster/magicals/gryphon.lua new file mode 100644 index 00000000000..39e919e600f --- /dev/null +++ b/data-canary/monster/magicals/gryphon.lua @@ -0,0 +1,109 @@ +local mType = Game.createMonsterType("Gryphon") +local monster = {} + +monster.description = "a gryphon" +monster.experience = 1000 +monster.outfit = { + lookType = 1220, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1819 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "Kilmaresh Mountains", +} + +monster.health = 3200 +monster.maxHealth = 3200 +monster.race = "blood" +monster.corpse = 31398 +monster.speed = 160 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 5, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 350 }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_HOLYDAMAGE, minDamage = -250, maxDamage = -450, radius = 3, effect = CONST_ME_HOLYAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -300, length = 3, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, +} + +monster.defenses = { + defense = 76, + armor = 76, + mitigation = 2.19, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/guardian_of_tales.lua b/data-canary/monster/magicals/guardian_of_tales.lua new file mode 100644 index 00000000000..01ee4a29711 --- /dev/null +++ b/data-canary/monster/magicals/guardian_of_tales.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Guardian of Tales") +local monster = {} + +monster.description = "a guardian of tales" +monster.experience = 9204 +monster.outfit = { + lookType = 1063, + lookHead = 92, + lookBody = 52, + lookLegs = 0, + lookFeet = 79, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 1659 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Secret Library (fire section).", +} + +monster.health = 15000 +monster.maxHealth = 15000 +monster.race = "ink" +monster.corpse = 28770 +monster.speed = 210 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 10000, maxCount = 10 }, + { name = "book page", chance = 10000, maxCount = 5 }, + { name = "burnt scroll", chance = 10000, maxCount = 5 }, + { name = "glowing rune", chance = 10000, maxCount = 5 }, + { name = "small diamond", chance = 10000, maxCount = 5 }, + { name = "fire axe", chance = 250 }, + { name = "soul orb", chance = 260, maxCount = 5 }, + { name = "spellbook of warding", chance = 250 }, + { name = "wand of inferno", chance = 250 }, + { name = "fire sword", chance = 250 }, + { name = "magma coat", chance = 350 }, + { name = "magma legs", chance = 250 }, + { name = "piece of hellfire armor", chance = 500, maxCount = 5 }, + { id = 12600, chance = 10000, maxCount = 5 }, -- coal +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -550 }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -605, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -375, maxDamage = -500, length = 5, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -775, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 77, + mitigation = 1.94, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -12 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/icecold_book.lua b/data-canary/monster/magicals/icecold_book.lua new file mode 100644 index 00000000000..42c058a8a43 --- /dev/null +++ b/data-canary/monster/magicals/icecold_book.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Icecold Book") +local monster = {} + +monster.description = "an icecold book" +monster.experience = 12750 +monster.outfit = { + lookType = 1061, + lookHead = 87, + lookBody = 85, + lookLegs = 79, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1664 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Secret Library (ice section).", +} + +monster.health = 21000 +monster.maxHealth = 21000 +monster.race = "ink" +monster.corpse = 28774 +monster.speed = 220 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 8 }, + { name = "book page", chance = 100000, maxCount = 3 }, + { name = "small diamond", chance = 100000, maxCount = 8 }, + { name = "small sapphire", chance = 100000, maxCount = 8 }, + { name = "quill", chance = 100000, maxCount = 8 }, + { name = "ultimate health potion", chance = 100000, maxCount = 8 }, + { name = "ultimate mana potion", chance = 100000, maxCount = 8 }, + { name = "diamond sceptre", chance = 100000 }, + { name = "frosty heart", chance = 100000, maxCount = 8 }, + { name = "glacier mask", chance = 350 }, + { name = "ice rapier", chance = 250 }, + { name = "silken bookmark", chance = 100000, maxCount = 8 }, + { name = "crystal mace", chance = 250 }, + { name = "glacier kilt", chance = 250 }, + { name = "glacier robe", chance = 250 }, + { name = "glacier shoes", chance = 350 }, + { name = "strange helmet", chance = 1000 }, + { name = "sapphire hammer", chance = 300 }, + { id = 7441, chance = 100000 }, -- ice cube + { name = "glacial rod", chance = 150 }, + { name = "crystalline armor", chance = 250 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, + { name = "combat", interval = 1000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -700, maxDamage = -850, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, + { name = "combat", interval = 1000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -380, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -350, maxDamage = -980, length = 5, spread = 0, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -230, maxDamage = -880, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICETORNADO, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 82, + mitigation = 2.16, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/juvenile_bashmu.lua b/data-canary/monster/magicals/juvenile_bashmu.lua new file mode 100644 index 00000000000..fe7bb499bb0 --- /dev/null +++ b/data-canary/monster/magicals/juvenile_bashmu.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Juvenile Bashmu") +local monster = {} + +monster.description = "a juvenile bashmu" +monster.experience = 4500 +monster.outfit = { + lookType = 1408, + lookHead = 0, + lookBody = 112, + lookLegs = 3, + lookFeet = 79, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2101 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Salt Caves", +} + +monster.health = 7500 +monster.maxHealth = 7500 +monster.race = "blood" +monster.corpse = 36967 +monster.speed = 195 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 20, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 1, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 70000, maxCount = 19 }, + { name = "great spirit potion", chance = 14700, maxCount = 4 }, + { name = "ultimate health potion", chance = 1300, maxCount = 4 }, + { name = "blue crystal shard", chance = 6160, maxCount = 3 }, + { name = "bashmu tongue", chance = 5840, maxCount = 3 }, + { name = "bashmu feather", chance = 4620, maxCount = 2 }, + { name = "green crystal shard", chance = 3666 }, + { name = "cyan crystal fragment", chance = 3340 }, + { id = 3039, chance = 2390, maxCount = 1 }, -- red gem + { name = "violet gem", chance = 2340, maxCount = 1 }, + { name = "lightning legs", chance = 2230 }, + { name = "diamond sceptre", chance = 2180 }, + { name = "lightning pendant", chance = 2180 }, + { name = "bashmu fang", chance = 2120 }, + { name = "yellow gem", chance = 2070 }, + { name = "war hammer", chance = 1540 }, + { name = "violet crystal shard", chance = 1490 }, + { name = "dragonbone staff", chance = 1430 }, + { name = "amber staff", chance = 1270 }, + { name = "lightning boots", chance = 1270 }, + { name = "green gem", chance = 1220 }, + { name = "spellweaver's robe", chance = 1110 }, + { name = "pair of iron fists", chance = 1010 }, + { name = "skull staff", chance = 960 }, + { name = "crystal mace", chance = 800 }, + { name = "chaos mace", chance = 530 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -400, length = 4, spread = 0, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -500, range = 3, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -500, range = 7, shootEffect = CONST_ANI_EARTHARROW, target = true }, +} + +monster.defenses = { + defense = 75, + armor = 75, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 5 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = -20 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/lamassu.lua b/data-canary/monster/magicals/lamassu.lua new file mode 100644 index 00000000000..2d22d43c092 --- /dev/null +++ b/data-canary/monster/magicals/lamassu.lua @@ -0,0 +1,129 @@ +local mType = Game.createMonsterType("Lamassu") +local monster = {} + +monster.description = "a lamassu" +monster.experience = 9000 +monster.outfit = { + lookType = 1190, + lookHead = 50, + lookBody = 2, + lookLegs = 0, + lookFeet = 76, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1806 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Kilmaresh.", +} + +monster.health = 8700 +monster.maxHealth = 8700 +monster.race = "blood" +monster.corpse = 31394 +monster.speed = 160 +monster.manaCost = 0 + +monster.faction = FACTION_ANUMA +monster.enemyFactions = { FACTION_PLAYER, FACTION_FAFNAR } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Be gone, mortal! This is not your place!", yell = false }, + { text = "I won't tolerate any sacrilege!", yell = false }, + { text = "I guard this site in Suon's name!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000 }, + { name = "lamassu horn", chance = 13400, maxCount = 5 }, + { name = "red crystal fragment", chance = 10500 }, + { name = "terra amulet", chance = 10000 }, + { name = "lamassu hoof", chance = 7700 }, + { name = "violet crystal shard", chance = 6800 }, + { name = "blue crystal shard", chance = 6500 }, + { id = 3039, chance = 6200 }, -- red gem + { name = "terra hood", chance = 5900 }, + { name = "sacred tree amulet", chance = 2300 }, + { name = "elven amulet", chance = 2000 }, + { name = "violet gem", chance = 1700 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -500, radius = 1, effect = CONST_ME_HOLYAREA, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -500, radius = 3, effect = CONST_ME_HOLYAREA, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -405, range = 5, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_SMALLPLANTS, target = true }, +} + +monster.defenses = { + defense = 82, + armor = 82, + mitigation = 2.16, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -30 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/lumbering_carnivor.lua b/data-canary/monster/magicals/lumbering_carnivor.lua new file mode 100644 index 00000000000..7eee6229eaa --- /dev/null +++ b/data-canary/monster/magicals/lumbering_carnivor.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Lumbering Carnivor") +local monster = {} + +monster.description = "a lumbering carnivor" +monster.experience = 1452 +monster.outfit = { + lookType = 1133, + lookHead = 0, + lookBody = 59, + lookLegs = 67, + lookFeet = 85, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1721 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Carnivora's Rocks.", +} + +monster.health = 2600 +monster.maxHealth = 2600 +monster.race = "blood" +monster.corpse = 30065 +monster.speed = 200 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 4, + color = 107, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 64770, maxCount = 3 }, + { name = "blue glass plate", chance = 20840, maxCount = 3 }, + { name = "axe", chance = 14620 }, + { name = "ice rapier", chance = 7600 }, + { id = 3264, chance = 5500 }, -- sword + { id = 281, chance = 1830 }, -- giant shimmering pearl (green) + { name = "green gem", chance = 1680 }, + { name = "violet gem", chance = 1560 }, + { name = "glorious axe", chance = 1530 }, + { name = "two handed sword", chance = 1490 }, + { name = "blue robe", chance = 760 }, + { name = "blue gem", chance = 990 }, + { name = "fur armor", chance = 950 }, + { name = "green crystal shard", chance = 920 }, + { name = "focus cape", chance = 80 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -500 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -150, radius = 4, effect = CONST_ME_GROUNDSHAKER, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 65, + mitigation = 1.82, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -40 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/manticore.lua b/data-canary/monster/magicals/manticore.lua new file mode 100644 index 00000000000..fba35b6318d --- /dev/null +++ b/data-canary/monster/magicals/manticore.lua @@ -0,0 +1,129 @@ +local mType = Game.createMonsterType("Manticore") +local monster = {} + +monster.description = "a manticore" +monster.experience = 5100 +monster.outfit = { + lookType = 1189, + lookHead = 116, + lookBody = 97, + lookLegs = 113, + lookFeet = 20, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1816 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Kilmaresh.", +} + +monster.health = 6700 +monster.maxHealth = 6700 +monster.race = "blood" +monster.corpse = 31390 +monster.speed = 150 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I'm spotting my next meal", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 3 }, + { name = "manticore tail", chance = 10250 }, + { name = "manticore ear", chance = 7390 }, + { name = "small emerald", chance = 5880 }, + { name = "green crystal fragment", chance = 5710 }, + { name = "flaming arrow", chance = 4870, maxCount = 9 }, + { name = "prismatic quartz", chance = 4370 }, + { name = "rainbow quartz", chance = 3700, maxCount = 3 }, + { name = "magma coat", chance = 3190 }, + { name = "violet gem", chance = 3030 }, + { name = "magma boots", chance = 2860 }, + { name = "magma monocle", chance = 2020 }, + { name = "wand of dragonbreath", chance = 1680 }, + { name = "wand of draconia", chance = 1180 }, + { name = "royal star", chance = 1010, maxCount = 3 }, + { name = "wand of everblazing", chance = 1010 }, + { name = "magma legs", chance = 340 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -450, length = 8, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "combat", interval = 4000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -400, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_GREEN_RINGS, target = true }, + { name = "combat", interval = 2000, chance = 22, type = COMBAT_FIREDAMAGE, minDamage = -450, maxDamage = -550, range = 4, shootEffect = CONST_ANI_BURSTARROW, target = true }, +} + +monster.defenses = { + defense = 78, + armor = 78, + mitigation = 2.16, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/marid.lua b/data-canary/monster/magicals/marid.lua new file mode 100644 index 00000000000..36340b8ccb9 --- /dev/null +++ b/data-canary/monster/magicals/marid.lua @@ -0,0 +1,148 @@ +local mType = Game.createMonsterType("Marid") +local monster = {} + +monster.description = "a marid" +monster.experience = 410 +monster.outfit = { + lookType = 104, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 104 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Kha'zeel, Magician Quarter, Djinn battle island through the Haunted Tomb.", +} + +monster.health = 550 +monster.maxHealth = 550 +monster.race = "blood" +monster.corpse = 6033 +monster.speed = 117 +monster.manaCost = 0 + +monster.faction = FACTION_MARID +monster.enemyFactions = { FACTION_PLAYER, FACTION_EFREET } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "blue djinn", chance = 10, interval = 2000, count = 2 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Wishes can come true.", yell = false }, + { text = "Feel the power of my magic, tiny mortal!", yell = false }, + { text = "Simsalabim", yell = false }, + { text = "Be careful what you wish for.", yell = false }, +} + +monster.loot = { + { id = 2659, chance = 2560 }, -- blue tapestry + { name = "small oil lamp", chance = 110 }, + { name = "small sapphire", chance = 6200 }, + { name = "gold coin", chance = 60000, maxCount = 70 }, + { name = "gold coin", chance = 60000, maxCount = 30 }, + { name = "blue gem", chance = 110 }, + { name = "hailstorm rod", chance = 770 }, + { id = 2948, chance = 5000 }, -- wooden flute + { name = "heavy machete", chance = 4530 }, + { name = "mystic turban", chance = 290 }, + { name = "blueberry", chance = 65000, maxCount = 29 }, + { name = "blue piece of cloth", chance = 3750 }, + { name = "royal spear", chance = 15500, maxCount = 3 }, + { name = "strong mana potion", chance = 9800 }, + { name = "seeds", chance = 2400 }, + { name = "magma monocle", chance = 320 }, + { name = "jewelled belt", chance = 7880 }, + { name = "noble turban", chance = 530 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -250, range = 7, shootEffect = CONST_ANI_ENERGYBALL, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -30, maxDamage = -90, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -650, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 1500 }, + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_ENERGY, target = false, duration = 6000 }, + { name = "outfit", interval = 2000, chance = 1, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitMonster = "rabbit" }, + { name = "djinn electrify", interval = 2000, chance = 15, range = 5, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -30, maxDamage = -90, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 24, + mitigation = 0.91, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 60 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = 90 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -8 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/medusa.lua b/data-canary/monster/magicals/medusa.lua new file mode 100644 index 00000000000..e945b600fd0 --- /dev/null +++ b/data-canary/monster/magicals/medusa.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Medusa") +local monster = {} + +monster.description = "a medusa" +monster.experience = 4050 +monster.outfit = { + lookType = 330, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 570 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Vandura Mountain (single spawn), Talahu (Medusa Cave), Deeper Banuta, Medusa Tower.", +} + +monster.health = 4500 +monster.maxHealth = 4500 +monster.race = "blood" +monster.corpse = 9607 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 600, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You will make sssuch a fine ssstatue!", yell = false }, + { text = "There isss no chhhanccce of essscape", yell = false }, + { text = "Are you tired or why are you moving thhat ssslow ", yell = false }, + { text = "Jussst look at me!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 190 }, + { name = "small emerald", chance = 3770, maxCount = 4 }, + { name = "platinum coin", chance = 74810, maxCount = 6 }, + { name = "knight armor", chance = 1840 }, + { name = "medusa shield", chance = 3040 }, + { name = "titan axe", chance = 1160 }, + { name = "great mana potion", chance = 10000, maxCount = 2 }, + { name = "terra mantle", chance = 870 }, + { name = "terra legs", chance = 420 }, + { name = "terra amulet", chance = 4060 }, + { name = "ultimate health potion", chance = 9290, maxCount = 2 }, + { id = 8896, chance = 500 }, -- slightly rusted armor + { name = "sacred tree amulet", chance = 850 }, + { name = "strand of medusa hair", chance = 9900 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450, condition = { type = CONDITION_POISON, totalDamage = 840, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -21, maxDamage = -350, range = 7, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_CARNIPHILA, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -500, length = 8, spread = 0, effect = CONST_ME_CARNIPHILA, target = false }, + { name = "speed", interval = 2000, chance = 25, radius = 7, effect = CONST_ME_POFF, target = true }, + { name = "outfit", interval = 2000, chance = 1, range = 7, target = true, duration = 3000, outfitMonster = "clay guardian" }, +} + +monster.defenses = { + defense = 30, + armor = 45, + mitigation = 1.74, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 150, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/menacing_carnivor.lua b/data-canary/monster/magicals/menacing_carnivor.lua new file mode 100644 index 00000000000..fed50464588 --- /dev/null +++ b/data-canary/monster/magicals/menacing_carnivor.lua @@ -0,0 +1,141 @@ +local mType = Game.createMonsterType("Menacing Carnivor") +local monster = {} + +monster.description = "a menacing carnivor" +monster.experience = 2112 +monster.outfit = { + lookType = 1138, + lookHead = 86, + lookBody = 51, + lookLegs = 83, + lookFeet = 91, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 1723 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Carnivora's Rocks.", +} + +monster.health = 3500 +monster.maxHealth = 3500 +monster.race = "blood" +monster.corpse = 30103 +monster.speed = 170 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 5, + color = 184, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 65410, maxCount = 8 }, + { name = "morning star", chance = 16730 }, + { name = "ultimate mana potion", chance = 9820 }, + { name = "violet glass plate", chance = 691 }, + { name = "crystal sword", chance = 4750 }, + { name = "terra rod", chance = 4480 }, + { name = "small ruby", chance = 4000 }, + { name = "onyx chip", chance = 3350 }, + { name = "green crystal fragment", chance = 3180 }, + { name = "small enchanted ruby", chance = 2050 }, + { name = "terra legs", chance = 2000 }, + { name = "knight legs", chance = 1780 }, + { name = "machete", chance = 1730 }, + { name = "wand of voodoo", chance = 1570 }, + { name = "heavy machete", chance = 1240 }, + { name = "wand of starstorm", chance = 1240 }, + { name = "wand of dragonbreath", chance = 970 }, + { name = "tiger eye", chance = 920 }, + { name = "opal", chance = 810 }, + { name = "iron helmet", chance = 760 }, + { name = "serpent sword", chance = 700 }, + { name = "wand of decay", chance = 490 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -300, maxDamage = -450 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -180, length = 4, spread = 0, effect = CONST_ME_SMOKE, target = false }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -200, length = 4, spread = 0, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -330, radius = 4, effect = CONST_ME_GROUNDSHAKER, target = false }, +} + +monster.defenses = { + defense = 0, + armor = 68, + mitigation = 1.88, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.reflects = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 50 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/merikh_the_slaughterer.lua b/data-canary/monster/magicals/merikh_the_slaughterer.lua new file mode 100644 index 00000000000..376754a0068 --- /dev/null +++ b/data-canary/monster/magicals/merikh_the_slaughterer.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Merikh the Slaughterer") +local monster = {} + +monster.description = "Merikh the Slaughterer" +monster.experience = 1500 +monster.outfit = { + lookType = 103, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 2000 +monster.maxHealth = 2000 +monster.race = "blood" +monster.corpse = 6032 +monster.speed = 90 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = true, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "green djinn", chance = 10, interval = 2000, count = 1 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Your death will be slow and painful.", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 97250, maxCount = 120 }, + { name = "green piece of cloth", chance = 100000, maxCount = 4 }, + { name = "noble turban", chance = 63900 }, + { name = "heavy machete", chance = 41650 }, + { name = "magma monocle", chance = 8400 }, + { name = "seeds", chance = 100 }, + { name = "jewelled belt", chance = 100000 }, + { name = "shiny stone", chance = 58300 }, + { name = "strong mana potion", chance = 41650, maxCount = 3 }, + { name = "small emerald", chance = 2800, maxCount = 2 }, + { name = "small oil lamp", chance = 100 }, + { name = "royal spear", chance = 55550, maxCount = 3 }, + { name = "mystic turban", chance = 36100 }, + { name = "green gem", chance = 2800 }, + { name = "pear", chance = 100, maxCount = 8 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -304 }, + --fireball + --heavy magic missile + --sudden death + --energy berserk + --electrifies +} + +monster.defenses = { + defense = 0, + armor = 0, + mitigation = 1.29, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 1 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -1 }, + { type = COMBAT_HOLYDAMAGE, percent = -1 }, + { type = COMBAT_DEATHDAMAGE, percent = 1 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/midnight_panther.lua b/data-canary/monster/magicals/midnight_panther.lua new file mode 100644 index 00000000000..77eaf6ebbdd --- /dev/null +++ b/data-canary/monster/magicals/midnight_panther.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Midnight Panther") +local monster = {} + +monster.description = "a midnight panther" +monster.experience = 900 +monster.outfit = { + lookType = 385, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 698 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Tiquanda.", +} + +monster.health = 1200 +monster.maxHealth = 1200 +monster.race = "blood" +monster.corpse = 12340 +monster.speed = 290 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Groooooooar", yell = false }, + { text = "MEOW", yell = true }, + { text = "Groarrrrrrrr", yell = false }, + { text = "Purrrrrrr", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 57 }, + { id = 3052, chance = 12500 }, -- life ring + { name = "meat", chance = 25000, maxCount = 4 }, + { name = "panther head", chance = 12500 }, + { name = "panther paw", chance = 100000 }, +} + +monster.attacks = { + { name = "melee", interval = 1500, chance = 100, minDamage = 0, maxDamage = -90 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -75, maxDamage = -215, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 30, + mitigation = 0.99, + { name = "speed", interval = 2000, chance = 15, speedChange = 370, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 125, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/nightmare.lua b/data-canary/monster/magicals/nightmare.lua new file mode 100644 index 00000000000..00929effa57 --- /dev/null +++ b/data-canary/monster/magicals/nightmare.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Nightmare") +local monster = {} + +monster.description = "a nightmare" +monster.experience = 1800 +monster.outfit = { + lookType = 245, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 299 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Pits of Inferno, Formorgar Mines, Cemetery Quarter, Edron \z + (In multiple places during The Inquisition Quest), Alchemist Quarter, Vengoth Castle, Deeper Banuta, Krailos Ruins, Grounds of Deceit.", +} + +monster.health = 2700 +monster.maxHealth = 2700 +monster.race = "blood" +monster.corpse = 6339 +monster.speed = 232 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 300, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Close your eyes... I want to show you something.", yell = false }, + { text = "I will haunt you forever!", yell = false }, + { text = "Pffffrrrrrrrrrrrr.", yell = false }, + { text = "I will make you scream.", yell = false }, + { text = "Take a ride with me.", yell = false }, + { text = "Weeeheeheeeheee!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 55 }, + { name = "platinum coin", chance = 2564, maxCount = 3 }, + { name = "boots of haste", chance = 337 }, + { name = "war axe", chance = 95 }, + { name = "knight legs", chance = 961 }, + { name = "ancient shield", chance = 990 }, + { name = "power bolt", chance = 9090, maxCount = 4 }, + { name = "ham", chance = 29000, maxCount = 2 }, + { name = "mysterious voodoo skull", chance = 123 }, + { name = "soul orb", chance = 20000 }, + { id = 6299, chance = 1298 }, -- death ring + { name = "demonic essence", chance = 10000 }, + { name = "skeleton decoration", chance = 337 }, + { name = "flask of demonic blood", chance = 19666, maxCount = 2 }, + { name = "essence of a bad dream", chance = 15240 }, + { name = "scythe leg", chance = 9090 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -170, range = 7, radius = 1, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -350, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, +} + +monster.defenses = { + defense = 25, + armor = 25, + mitigation = 0.70, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 60, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/nightmare_scion.lua b/data-canary/monster/magicals/nightmare_scion.lua new file mode 100644 index 00000000000..1212f11b31e --- /dev/null +++ b/data-canary/monster/magicals/nightmare_scion.lua @@ -0,0 +1,131 @@ +local mType = Game.createMonsterType("Nightmare Scion") +local monster = {} + +monster.description = "a nightmare scion" +monster.experience = 1350 +monster.outfit = { + lookType = 321, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 518 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Cemetery Quarter, Alchemist Quarter and in the Arena and Zoo Quarter (unreachable), \z + Vengoth Castle, Formorgar Mines, Lower Spike, Robson Isle (single respawn), Krailos Ruins.", +} + +monster.health = 1400 +monster.maxHealth = 1400 +monster.race = "blood" +monster.corpse = 9005 +monster.speed = 220 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 300, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Weeeheeheee!", yell = false }, + { text = "Pffffrrrrrrrrrrrr.", yell = false }, + { text = "Peak a boo, I killed you!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 53 }, + { name = "platinum coin", chance = 961, maxCount = 3 }, + { name = "crown helmet", chance = 666 }, + { name = "meat", chance = 50000, maxCount = 4 }, + { id = 6299, chance = 250 }, -- death ring + { name = "bar of chocolate", chance = 280 }, + { name = "diamond sceptre", chance = 340 }, + { name = "shadow sceptre", chance = 270 }, + { name = "focus cape", chance = 340 }, + { name = "crystal of focus", chance = 100 }, + { name = "essence of a bad dream", chance = 7692 }, + { name = "scythe leg", chance = 4761 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -140 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -115, maxDamage = -180, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -130, range = 7, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, +} + +monster.defenses = { + defense = 20, + armor = 25, + mitigation = 0.70, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 60, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/nightstalker.lua b/data-canary/monster/magicals/nightstalker.lua new file mode 100644 index 00000000000..cff81085ae5 --- /dev/null +++ b/data-canary/monster/magicals/nightstalker.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Nightstalker") +local monster = {} + +monster.description = "a Nightstalker" +monster.experience = 500 +monster.outfit = { + lookType = 320, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 520 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Cemetery Quarter, Vengoth Castle, Vandura Mountain, Robson Isle.", +} + +monster.health = 700 +monster.maxHealth = 700 +monster.race = "undead" +monster.corpse = 9001 +monster.speed = 130 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 0, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "The sunlight is so depressing.", yell = false }, + { text = "Come with me, my child.", yell = false }, + { text = "I've been in the shadow under your bed last night.", yell = false }, + { text = "You never know what hides in the night.", yell = false }, + { text = "I remember your face - and I know where you sleep.", yell = false }, + { text = "Only the sweetest and cruelest dreams for you, my love.", yell = false }, +} + +monster.loot = { + { id = 3007, chance = 1030 }, -- crystal ring + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 10 }, + { name = "platinum amulet", chance = 121 }, + { name = "boots of haste", chance = 121 }, + { name = "protection amulet", chance = 847 }, + { name = "shadow herb", chance = 4761 }, + { name = "haunted blade", chance = 318 }, + { name = "chaos mace", chance = 121 }, + { name = "strong mana potion", chance = 1612 }, + { name = "spirit cloak", chance = 520 }, + { name = "crystal of balance", chance = 127 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90, condition = { type = CONDITION_POISON, totalDamage = 80, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -60, maxDamage = -170, range = 7, effect = CONST_ME_HOLYAREA, target = true }, + { name = "nightstalker paralyze", interval = 2000, chance = 15, range = 7, target = true }, +} + +monster.defenses = { + defense = 15, + armor = 40, + mitigation = 1.18, + { name = "speed", interval = 2000, chance = 15, speedChange = 240, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_YELLOW_RINGS }, + { name = "outfit", interval = 5000, chance = 10, target = false, duration = 4000, outfitMonster = "nightstalker" }, + { name = "outfit", interval = 5000, chance = 10, target = false, duration = 4000, outfitMonster = "werewolf" }, + { name = "outfit", interval = 5000, chance = 10, target = false, duration = 4000, outfitMonster = "the count" }, + { name = "outfit", interval = 5000, chance = 10, target = false, duration = 4000, outfitMonster = "grim reaper" }, + { name = "outfit", interval = 5000, chance = 10, target = false, duration = 4000, outfitMonster = "tarantula" }, + { name = "outfit", interval = 5000, chance = 1, target = false, duration = 4000, outfitMonster = "ferumbras" }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/phantasm.lua b/data-canary/monster/magicals/phantasm.lua new file mode 100644 index 00000000000..36c0baed405 --- /dev/null +++ b/data-canary/monster/magicals/phantasm.lua @@ -0,0 +1,145 @@ +local mType = Game.createMonsterType("Phantasm") +local monster = {} + +monster.description = "a Phantasm" +monster.experience = 4400 +monster.outfit = { + lookType = 241, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 292 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Pits of Inferno, The Inquisition Quest, Deeper Banuta.", +} + +monster.health = 3950 +monster.maxHealth = 3950 +monster.race = "undead" +monster.corpse = 6343 +monster.speed = 170 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 350, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 3, + color = 203, +} + +monster.summon = { + maxSummons = 4, + summons = { + { name = "Phantasm Summon", chance = 35, interval = 2000, count = 4 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Oh my, you forgot to put your pants on!", yell = false }, + { text = "Weeheeheeheehee!", yell = false }, + { text = "Its nothing but a dream.", yell = false }, + { text = "Dream a little dream with me!", yell = false }, + { text = "Give in.", yell = false }, +} + +monster.loot = { + { name = "small ruby", chance = 12160, maxCount = 3 }, + { name = "gold coin", chance = 30000, maxCount = 100 }, + { name = "gold coin", chance = 30000, maxCount = 100 }, + { name = "gold coin", chance = 28000, maxCount = 33 }, + { name = "small emerald", chance = 10190, maxCount = 3 }, + { name = "small amethyst", chance = 14570, maxCount = 3 }, + { name = "platinum coin", chance = 87730, maxCount = 4 }, + { id = 3049, chance = 550 }, -- stealth ring + { name = "blank rune", chance = 22500, maxCount = 2 }, + { name = "crown armor", chance = 660 }, + { name = "shadow herb", chance = 26930, maxCount = 2 }, + { id = 6299, chance = 330 }, -- death ring + { name = "demonic essence", chance = 16320 }, + { name = "abyss hammer", chance = 110 }, + { name = "shadow sceptre", chance = 550 }, + { name = "great mana potion", chance = 32750, maxCount = 2 }, + { name = "ultimate health potion", chance = 14680 }, + { name = "small topaz", chance = 12810, maxCount = 3 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -475 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -610, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -5, maxDamage = -80, radius = 3, effect = CONST_ME_YELLOW_RINGS, target = false }, + { name = "phantasm drown", interval = 2000, chance = 15, target = false }, + { name = "drunk", interval = 2000, chance = 15, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, +} + +monster.defenses = { + defense = 0, + armor = 80, + mitigation = 1.10, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 228, maxDamage = 449, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = 500, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, + { name = "invisible", interval = 2000, chance = 25, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/phantasm_summon.lua b/data-canary/monster/magicals/phantasm_summon.lua new file mode 100644 index 00000000000..4926c01aada --- /dev/null +++ b/data-canary/monster/magicals/phantasm_summon.lua @@ -0,0 +1,106 @@ +local mType = Game.createMonsterType("Phantasm Summon") +local monster = {} + +monster.name = "Phantasm" +monster.description = "a phantasm" +monster.experience = 1 +monster.outfit = { + lookType = 241, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 65 +monster.maxHealth = 65 +monster.race = "undead" +monster.corpse = 6343 +monster.speed = 170 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Oh my, you forgot to put your pants on!", yell = false }, + { text = "Weeheeheeheehee!", yell = false }, + { text = "Its nothing but a dream.", yell = false }, + { text = "Dream a little dream with me!", yell = false }, + { text = "Give in.", yell = false }, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -80, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -5, maxDamage = -80, radius = 3, effect = CONST_ME_YELLOW_RINGS, target = false }, + { name = "phantasm drown", interval = 2000, chance = 10, target = false }, + { name = "drunk", interval = 2000, chance = 5, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, +} + +monster.defenses = { + defense = 0, + armor = 0, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 40, maxDamage = 65, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = 500, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, + { name = "invisible", interval = 2000, chance = 25, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/rage_squid.lua b/data-canary/monster/magicals/rage_squid.lua new file mode 100644 index 00000000000..0bbd087da45 --- /dev/null +++ b/data-canary/monster/magicals/rage_squid.lua @@ -0,0 +1,141 @@ +local mType = Game.createMonsterType("Rage Squid") +local monster = {} + +monster.description = "a rage squid" +monster.experience = 14820 +monster.outfit = { + lookType = 1059, + lookHead = 94, + lookBody = 78, + lookLegs = 79, + lookFeet = 57, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1668 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Secret Library (fire section).", +} + +monster.health = 17000 +monster.maxHealth = 17000 +monster.race = "undead" +monster.corpse = 28782 +monster.speed = 215 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 28570, chance = 10000 }, -- glowing rune + { name = "great spirit potion", chance = 10000, maxCount = 3 }, + { name = "fire mushroom", chance = 10000, maxCount = 6 }, + { name = "small amethyst", chance = 90000, maxCount = 5 }, + { name = "slime heart", chance = 3000 }, + { name = "piece of dead brain", chance = 4900 }, + { name = "platinum coin", chance = 100000, maxCount = 6 }, + { name = "ultimate health potion", chance = 10000, maxCount = 3 }, + { name = "small topaz", chance = 90000, maxCount = 5 }, + { name = "small emerald", chance = 90000, maxCount = 5 }, + { id = 3039, chance = 9800, maxCount = 5 }, -- red gem + { name = "orb", chance = 66000, maxCount = 5 }, + { name = "purple tome", chance = 6333 }, + { name = "great mana potion", chance = 10000, maxCount = 3 }, + { name = "demonic essence", chance = 4300 }, + { id = 28568, chance = 10000 }, -- inkwell + { name = "small ruby", chance = 90000, maxCount = 5 }, + { name = "talon", chance = 8990 }, + { name = "might ring", chance = 4990 }, + { name = "devil helmet", chance = 6990 }, + { name = "demonrage sword", chance = 400 }, + { id = 7393, chance = 390 }, -- demon trophy + { name = "giant sword", chance = 250 }, + { name = "demon shield", chance = 250 }, + { name = "magic plate armor", chance = 150 }, + { name = "platinum amulet", chance = 350 }, + { name = "wand of everblazing", chance = 300 }, + { name = "fire axe", chance = 500 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -280, range = 7, shootEffect = CONST_ANI_FLAMMINGARROW, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -380, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -175, maxDamage = -200, length = 5, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -475, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -475, radius = 2, effect = CONST_ME_FIREAREA, target = false }, +} + +monster.defenses = { + defense = 78, + armor = 78, + mitigation = 2.16, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -15 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/retching_horror.lua b/data-canary/monster/magicals/retching_horror.lua new file mode 100644 index 00000000000..0479a7cb368 --- /dev/null +++ b/data-canary/monster/magicals/retching_horror.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Retching Horror") +local monster = {} + +monster.description = "a retching horror" +monster.experience = 4100 +monster.outfit = { + lookType = 588, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1018 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "All over the surface of Upper Roshamuul and Nightmare Isles.", +} + +monster.health = 5300 +monster.maxHealth = 5300 +monster.race = "fire" +monster.corpse = 20174 +monster.speed = 180 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Wait for us, little maggot...", yell = false }, + { text = "We will devour you...", yell = false }, + { text = "My little beetles, go forth, eat, feast!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "platinum coin", chance = 100000, maxCount = 9 }, + { name = "fire sword", chance = 1240 }, + { name = "crown shield", chance = 1700 }, + { name = "tower shield", chance = 550 }, + { name = "brown mushroom", chance = 14000, maxCount = 2 }, + { name = "beastslayer axe", chance = 4260 }, + { name = "mercenary sword", chance = 2500 }, + { name = "spiked squelcher", chance = 410 }, + { name = "great mana potion", chance = 12500 }, + { name = "great health potion", chance = 15000 }, + { name = "underworld rod", chance = 1800 }, + { name = "wand of starstorm", chance = 960 }, + { id = 20029, chance = 3700 }, -- broken dream + { name = "goosebump leather", chance = 16400 }, + { name = "pool of chitinous glue", chance = 14000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "drunk", interval = 2000, chance = 10, length = 4, spread = 0, effect = CONST_ME_MAGIC_GREEN, target = true, duration = 5000 }, + { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 4, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_STUN, target = true, duration = 15000 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -110, radius = 4, effect = CONST_ME_HITAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, radius = 1, shootEffect = CONST_ANI_SNIPERARROW, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, +} + +monster.defenses = { + defense = 30, + armor = 30, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = -3 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 85 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/rorc.lua b/data-canary/monster/magicals/rorc.lua new file mode 100644 index 00000000000..8738996cffd --- /dev/null +++ b/data-canary/monster/magicals/rorc.lua @@ -0,0 +1,120 @@ +local mType = Game.createMonsterType("Rorc") +local monster = {} + +monster.description = "a rorc" +monster.experience = 105 +monster.outfit = { + lookType = 550, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 978 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "South-west of Ulderek's Rock and in the Rorc version of the Forsaken Mine.", +} + +monster.health = 260 +monster.maxHealth = 260 +monster.race = "blood" +monster.corpse = 18906 +monster.speed = 88 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Kroaaah!!", yell = false }, + { text = "Butak bana zamar!", yell = false }, + { text = "Krrrooow truaaak kiiiii!", yell = false }, +} + +monster.loot = { + { id = 3012, chance = 7410 }, -- wolf tooth chain + { name = "gold coin", chance = 73640, maxCount = 25 }, + { name = "obsidian lance", chance = 930 }, + { name = "orcish axe", chance = 2040 }, + { name = "plate shield", chance = 6700 }, + { name = "rorc feather", chance = 12520 }, + { name = "rorc egg", chance = 790 }, + { name = "hatched rorc egg", chance = 12670 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, +} + +monster.defenses = { + defense = 25, + armor = 25, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 40, maxDamage = 55, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/shiversleep.lua b/data-canary/monster/magicals/shiversleep.lua new file mode 100644 index 00000000000..c81c741eddc --- /dev/null +++ b/data-canary/monster/magicals/shiversleep.lua @@ -0,0 +1,98 @@ +local mType = Game.createMonsterType("Shiversleep") +local monster = {} + +monster.description = "Shiversleep" +monster.experience = 1900 +monster.outfit = { + lookType = 592, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 4600 +monster.maxHealth = 4600 +monster.race = "blood" +monster.corpse = 20163 +monster.speed = 135 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 1800, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -685, length = 7, spread = 0, effect = CONST_ME_STONES, target = false }, + { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -590, radius = 6, effect = CONST_ME_BIGPLANTS, target = false }, +} + +monster.defenses = { + defense = 55, + armor = 55, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/shock_head.lua b/data-canary/monster/magicals/shock_head.lua new file mode 100644 index 00000000000..22c1e30890e --- /dev/null +++ b/data-canary/monster/magicals/shock_head.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Shock Head") +local monster = {} + +monster.description = "a shock head" +monster.experience = 2300 +monster.outfit = { + lookType = 579, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1004 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Sparsely in eastern Lower Roshamuu and southern Guzzlemaw Valley.", +} + +monster.health = 4200 +monster.maxHealth = 4200 +monster.race = "blood" +monster.corpse = 20058 +monster.speed = 136 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "", yell = false }, + { text = "Thun... Thun... THUNDER!", yell = false }, +} + +monster.loot = { + { name = "small sapphire", chance = 5000 }, + { id = 3031, chance = 92000, maxCount = 200 }, -- gold coin + { name = "royal helmet", chance = 270 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -798 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -300, length = 5, spread = 2, effect = CONST_ME_BLACKSMOKE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -800, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false, duration = 7500 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -350, radius = 4, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_STONES, target = true }, + { name = "shock head skill reducer 1", interval = 2000, chance = 5, range = 5, target = false }, + { name = "shock head skill reducer 2", interval = 2000, chance = 5, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 30, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 350, effect = CONST_ME_INSECTS, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 25 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/sight_of_surrender.lua b/data-canary/monster/magicals/sight_of_surrender.lua new file mode 100644 index 00000000000..a239e02dae9 --- /dev/null +++ b/data-canary/monster/magicals/sight_of_surrender.lua @@ -0,0 +1,146 @@ +local mType = Game.createMonsterType("Sight of Surrender") +local monster = {} + +monster.description = "a sight of surrender" +monster.experience = 17000 +monster.outfit = { + lookType = 583, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1012 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Dark Grounds, Guzzlemaw Valley (if less than 100 Blowing Horns tasks \z + have been done the day before) and the Silencer Plateau (when Silencer Resonating Chambers are used there).", +} + +monster.health = 28000 +monster.maxHealth = 28000 +monster.race = "undead" +monster.corpse = 20144 +monster.speed = 170 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "BOW LOW!", yell = true }, + { text = "FEEL THE TRUE MEANING OF VANQUISH!", yell = true }, + { text = "HAHAHAHA DO YOU WANT TO AMUSE YOUR MASTER?", yell = true }, + { text = "NOW YOU WILL SURRENDER!", yell = true }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 15 }, + { name = "might ring", chance = 8000 }, + { name = "stone skin amulet", chance = 18000 }, + { name = "hammer of wrath", chance = 1380 }, + { name = "crystal mace", chance = 5500 }, + { name = "magic plate armor", chance = 1380 }, + { name = "crown legs", chance = 920 }, + { name = "crusader helmet", chance = 920 }, + { name = "tower shield", chance = 1380 }, + { name = "steel boots", chance = 920 }, + { name = "onyx flail", chance = 920 }, + { name = "jade hammer", chance = 920 }, + { name = "great mana potion", chance = 78000, maxCount = 5 }, + { name = "great spirit potion", chance = 72000, maxCount = 5 }, + { name = "ultimate health potion", chance = 30000, maxCount = 5 }, + { name = "blue crystal shard", chance = 23000, maxCount = 3 }, + { name = "violet crystal shard", chance = 32000, maxCount = 3 }, + { name = "green crystal shard", chance = 21600, maxCount = 3 }, + { name = "green crystal splinter", chance = 30000, maxCount = 5 }, + { name = "brown crystal splinter", chance = 30410, maxCount = 5 }, + { name = "blue crystal splinter", chance = 40000, maxCount = 5 }, + { name = "cluster of solace", chance = 11800 }, + { name = "sight of surrender's eye", chance = 100000 }, + { name = "broken visor", chance = 100000 }, + { id = 20208, chance = 460 }, -- string of mending +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1100 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -800, length = 8, spread = 0, effect = CONST_ME_YELLOWENERGY, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, radius = 1, shootEffect = CONST_ANI_LARGEROCK, target = true }, +} + +monster.defenses = { + defense = 70, + armor = 92, + mitigation = 2.31, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 550, maxDamage = 1100, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 520, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 30 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 35 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 40 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/silencer.lua b/data-canary/monster/magicals/silencer.lua new file mode 100644 index 00000000000..b2399ce294d --- /dev/null +++ b/data-canary/monster/magicals/silencer.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Silencer") +local monster = {} + +monster.description = "a silencer" +monster.experience = 5100 +monster.outfit = { + lookType = 585, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "RoshamuulKillsDeath", +} + +monster.raceId = 1014 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "All over the Roshamuul surface and Nightmare Isles.", +} + +monster.health = 5400 +monster.maxHealth = 5400 +monster.race = "blood" +monster.corpse = 20155 +monster.speed = 235 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 5, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Prrrroooaaaah!!! PRROAAAH!!", yell = false }, + { text = "PRRRROOOOOAAAAAHHHH!!!", yell = true }, + { text = "HUUUSSSSSSSSH!!", yell = true }, + { text = "Hussssssh!!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "platinum coin", chance = 100000, maxCount = 8 }, + { id = 3049, chance = 1200 }, -- stealth ring + { name = "boots of haste", chance = 360 }, + { name = "dark shield", chance = 2000 }, + { name = "assassin star", chance = 7600, maxCount = 10 }, + { name = "diamond sceptre", chance = 960 }, + { name = "haunted blade", chance = 2000 }, + { name = "titan axe", chance = 2200 }, + { name = "shadow sceptre", chance = 640 }, + { name = "glorious axe", chance = 2400 }, + { name = "terra legs", chance = 960 }, + { name = "terra boots", chance = 480 }, + { name = "cluster of solace", chance = 4560 }, + { name = "silencer claws", chance = 17000 }, + { name = "silencer resonating chamber", chance = 8410 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -315, condition = { type = CONDITION_POISON, totalDamage = 600, interval = 4000 } }, + { name = "silencer skill reducer", interval = 2000, chance = 10, range = 3, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -40, maxDamage = -150, radius = 4, shootEffect = CONST_ANI_ONYXARROW, effect = CONST_ME_MAGIC_RED, target = true }, +} + +monster.defenses = { + defense = 20, + armor = 71, + mitigation = 1.82, + { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 220, maxDamage = 425, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 65 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/sphinx.lua b/data-canary/monster/magicals/sphinx.lua new file mode 100644 index 00000000000..b7b305db787 --- /dev/null +++ b/data-canary/monster/magicals/sphinx.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Sphinx") +local monster = {} + +monster.description = "a sphinx" +monster.experience = 7500 +monster.outfit = { + lookType = 1188, + lookHead = 0, + lookBody = 39, + lookLegs = 0, + lookFeet = 3, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 1808 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Nykri Delta, Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Kilmaresh Catacombs.", +} + +monster.health = 8500 +monster.maxHealth = 8500 +monster.race = "blood" +monster.corpse = 31386 +monster.speed = 145 +monster.manaCost = 0 + +monster.faction = FACTION_ANUMA +monster.enemyFactions = { FACTION_PLAYER, FACTION_FAFNAR } + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 3 }, + { name = "sphinx feather", chance = 9300 }, + { name = "magma amulet", chance = 7000 }, + { id = 31438, chance = 5500 }, -- sphinx tiara + { name = "magma boots", chance = 3600 }, + { name = "lightning pendant", chance = 3500 }, + { name = "lightning headband", chance = 3100 }, + { name = "wand of starstorm", chance = 2900 }, + { name = "wand of defiance", chance = 1800 }, + { name = "magma monocle", chance = 1400 }, + { name = "magma legs", chance = 1300 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -500, length = 6, spread = 0, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_HOLYDAMAGE, minDamage = -100, maxDamage = -350, range = 5, radius = 3, shootEffect = CONST_ANI_SMALLHOLY, effect = CONST_ME_HOLYAREA, target = true }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, +} + +monster.defenses = { + defense = 82, + armor = 82, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -15 }, + { type = COMBAT_HOLYDAMAGE, percent = 15 }, + { type = COMBAT_DEATHDAMAGE, percent = -20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/spiky_carnivor.lua b/data-canary/monster/magicals/spiky_carnivor.lua new file mode 100644 index 00000000000..f8a29ef234f --- /dev/null +++ b/data-canary/monster/magicals/spiky_carnivor.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Spiky Carnivor") +local monster = {} + +monster.description = "a spiky carnivor" +monster.experience = 1650 +monster.outfit = { + lookType = 1139, + lookHead = 79, + lookBody = 121, + lookLegs = 23, + lookFeet = 86, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 1722 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Carnivora's Rocks.", +} + +monster.health = 2800 +monster.maxHealth = 2800 +monster.race = "blood" +monster.corpse = 30099 +monster.speed = 160 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 4, + color = 32, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 66230, maxCount = 6 }, + { name = "dark armor", chance = 13870 }, + { name = "green glass plate", chance = 10490, maxCount = 2 }, + { name = "blue crystal splinter", chance = 7590 }, + { name = "brown crystal splinter", chance = 7330 }, + { name = "guardian shield", chance = 5010 }, + { name = "warrior helmet", chance = 2980 }, + { name = "rainbow quartz", chance = 2540, maxCount = 2 }, + { name = "talon", chance = 2000 }, + { name = "glacier amulet", chance = 1920 }, + { name = "terra amulet", chance = 1920 }, + { name = "blue robe", chance = 1670 }, + { name = "prismatic quartz", chance = 1380 }, + { name = "lightning pendant", chance = 1270 }, + { name = "doublet", chance = 360 }, + { name = "terra mantle", chance = 330 }, + { name = "buckle", chance = 180 }, + { name = "shockwave amulet", chance = 150 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -400 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -230, maxDamage = -380, radius = 4, effect = CONST_ME_GROUNDSHAKER, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 71, + mitigation = 1.94, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.reflects = { + { type = COMBAT_PHYSICALDAMAGE, percent = 50 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 40 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/squid_warden.lua b/data-canary/monster/magicals/squid_warden.lua new file mode 100644 index 00000000000..39280d5fe8f --- /dev/null +++ b/data-canary/monster/magicals/squid_warden.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Squid Warden") +local monster = {} + +monster.description = "a squid warden" +monster.experience = 15300 +monster.outfit = { + lookType = 1059, + lookHead = 9, + lookBody = 21, + lookLegs = 3, + lookFeet = 57, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1669 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Secret Library (ice section).", +} + +monster.health = 16500 +monster.maxHealth = 16500 +monster.race = "undead" +monster.corpse = 28786 +monster.speed = 215 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 11000, maxCount = 57 }, + { name = "glowing rune", chance = 800, maxCount = 4 }, + { name = "small sapphire", chance = 900, maxCount = 4 }, + { name = "frosty heart", chance = 11000, maxCount = 4 }, + { id = 7441, chance = 20000 }, -- ice cube + { id = 28568, chance = 20000 }, -- inkwell + { name = "ultimate health potion", chance = 10003, maxCount = 4 }, + { name = "ultimate mana potion", chance = 10003, maxCount = 4 }, + { name = "ice rapier", chance = 500 }, + { name = "glacier mask", chance = 400 }, + { name = "piece of dead brain", chance = 10001, maxCount = 4 }, + { name = "crystal sword", chance = 300 }, + { name = "glacier robe", chance = 150 }, + { name = "glacier kilt", chance = 150 }, + { name = "slime heart", chance = 10002, maxCount = 4 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -300 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -200, range = 7, shootEffect = CONST_ANI_ICE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -680, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -375, length = 3, spread = 2, effect = CONST_ME_ICEATTACK, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -230, maxDamage = -480, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICETORNADO, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 78, + mitigation = 2.16, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/terrorsleep.lua b/data-canary/monster/magicals/terrorsleep.lua new file mode 100644 index 00000000000..531081d1cdd --- /dev/null +++ b/data-canary/monster/magicals/terrorsleep.lua @@ -0,0 +1,141 @@ +local mType = Game.createMonsterType("Terrorsleep") +local monster = {} + +monster.description = "a terrorsleep" +monster.experience = 6900 +monster.outfit = { + lookType = 587, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1016 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Roshamuul Mines, Roshamuul Cistern.", +} + +monster.health = 7200 +monster.maxHealth = 7200 +monster.race = "blood" +monster.corpse = 20163 +monster.speed = 180 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Aktat Roshok! Marruk!", yell = false }, + { text = "I will eat you in your sleep.", yell = false }, + { text = "I am the darkness around you...", yell = false }, +} + +monster.loot = { + { name = "small ruby", chance = 9600, maxCount = 3 }, + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "small emerald", chance = 14000 }, + { name = "small amethyst", chance = 17000, maxCount = 3 }, + { name = "platinum coin", chance = 100000, maxCount = 8 }, + { name = "giant sword", chance = 560 }, + { name = "warrior helmet", chance = 2820 }, + { name = "knight armor", chance = 4000 }, + { name = "white piece of cloth", chance = 4520 }, + { name = "red piece of cloth", chance = 1130 }, + { name = "great mana potion", chance = 36000, maxCount = 2 }, + { name = "ultimate health potion", chance = 26000 }, + { name = "small topaz", chance = 17000, maxCount = 2 }, + { name = "blue crystal shard", chance = 6000 }, + { name = "blue crystal splinter", chance = 13000 }, + { name = "cyan crystal fragment", chance = 17000 }, + { id = 20029, chance = 1130 }, -- broken dream + { name = "trapped bad dream monster", chance = 13000 }, + { name = "bowl of terror sweat", chance = 18000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 20, minDamage = -1000, maxDamage = -1500, radius = 7, effect = CONST_ME_YELLOW_RINGS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -300, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "feversleep skill reducer", interval = 2000, chance = 10, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -350, maxDamage = -500, length = 6, spread = 0, effect = CONST_ME_YELLOWENERGY, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -450, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, +} + +monster.defenses = { + defense = 50, + armor = 50, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 350, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_HITAREA }, + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 15 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 35 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 55 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/thanatursus.lua b/data-canary/monster/magicals/thanatursus.lua new file mode 100644 index 00000000000..eb4217bc4cb --- /dev/null +++ b/data-canary/monster/magicals/thanatursus.lua @@ -0,0 +1,136 @@ +local mType = Game.createMonsterType("Thanatursus") +local monster = {} + +monster.description = "a thanatursus" +monster.experience = 6300 +monster.outfit = { + lookType = 1134, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1728 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Haunted Temple, Court of Winter, Dream Labyrinth.", +} + +monster.health = 7200 +monster.maxHealth = 7200 +monster.race = "blood" +monster.corpse = 30069 +monster.speed = 200 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Uuuuuuuuuaaaaaarg!!!", yell = false }, + { text = "Nobody will ever escape from this place, muwahaha!!!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 17 }, + { name = "meat", chance = 90000, maxCount = 3 }, + { name = "great spirit potion", chance = 50000, maxCount = 3 }, + { name = "ultimate health potion", chance = 50000 }, + { name = "essence of a bad dream", chance = 17000 }, + { name = "knight axe", chance = 14000 }, + { name = "mino shield", chance = 12000 }, + { name = "terra boots", chance = 7000 }, + { name = "terra hood", chance = 6400 }, + { name = "beastslayer axe", chance = 500 }, + { name = "black shield", chance = 3500 }, + { name = "bloody pincers", chance = 4200 }, + { name = "dark shield", chance = 1500 }, + { name = "obsidian lance", chance = 1500 }, + { name = "sickle", chance = 1100 }, + { name = "titan axe", chance = 1100 }, + { name = "wand of cosmic energy", chance = 400 }, + { name = "wand of defiance", chance = 400 }, + { name = "warrior's axe", chance = 400 }, + { name = "warrior's shield", chance = 400 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -450 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HOLYDAMAGE, minDamage = -250, maxDamage = -400, radius = 3, effect = CONST_ME_HOLYAREA, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -280, maxDamage = -450, length = 4, spread = 0, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -400, radius = 6, effect = CONST_ME_BLOCKHIT, target = true }, +} + +monster.defenses = { + defense = 25, + armor = 78, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_HEALING, minDamage = 150, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 30 }, + { type = COMBAT_ENERGYDAMAGE, percent = 50 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/venerable_girtablilu.lua b/data-canary/monster/magicals/venerable_girtablilu.lua new file mode 100644 index 00000000000..00da4d9320d --- /dev/null +++ b/data-canary/monster/magicals/venerable_girtablilu.lua @@ -0,0 +1,138 @@ +local mType = Game.createMonsterType("Venerable Girtablilu") +local monster = {} + +monster.description = "a venerable girtablilu" +monster.experience = 5300 +monster.outfit = { + lookType = 1407, + lookHead = 38, + lookBody = 58, + lookLegs = 114, + lookFeet = 2, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2098 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Ruins of Nuur", +} + +monster.health = 8500 +monster.maxHealth = 8500 +monster.race = "blood" +monster.corpse = 36963 +monster.speed = 180 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 70000, maxCount = 19 }, + { name = "gold ingot", chance = 15920, maxCount = 2 }, + { name = "small diamond", chance = 5360, maxCount = 6 }, + { name = "cyan crystal fragment", chance = 5210, maxCount = 3 }, + { name = "scorpion charm", chance = 5210, maxCount = 1 }, + { id = 3039, chance = 4910, maxCount = 1 }, -- red gem + { name = "old girtablilu carapace", chance = 4760, maxCount = 1 }, + { name = "violet gem", chance = 4170, maxCount = 1 }, + { name = "northwind rod", chance = 3570 }, + { name = "wand of cosmic energy", chance = 2680 }, + { name = "blue crystal shard", chance = 2530 }, + { name = "red crystal fragment", chance = 2530 }, + { name = "violet crystal shard", chance = 2530 }, + { name = "yellow gem", chance = 2530 }, + { name = "underworld rod", chance = 2080 }, + { name = "wand of voodoo", chance = 2080 }, + { name = "blue gem", chance = 1930 }, + { id = 23529, chance = 1930 }, -- ring of blue plasma + { name = "green crystal fragment", chance = 1640 }, + { name = "green crystal shard", chance = 1640 }, + { name = "wand of defiance", chance = 1340 }, + { name = "wood cape", chance = 1340 }, + { name = "necrotic rod", chance = 1040 }, + { name = "springsprout rod", chance = 1040 }, + { name = "wand of decay", chance = 1040 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -550, effect = CONST_ME_DRAWBLOOD }, + { name = "combat", interval = 2750, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -500, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -400, length = 4, spread = 0, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -400, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "girtablilu poison wave", interval = 2000, chance = 30, minDamage = -200, maxDamage = -400 }, +} + +monster.defenses = { + defense = 80, + armor = 80, + mitigation = 2.16, + { name = "speed", interval = 1000, chance = 10, speedChange = 160, effect = CONST_ME_POFF, target = false, duration = 4000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -20 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/magicals/weakened_frazzlemaw.lua b/data-canary/monster/magicals/weakened_frazzlemaw.lua new file mode 100644 index 00000000000..b496e017346 --- /dev/null +++ b/data-canary/monster/magicals/weakened_frazzlemaw.lua @@ -0,0 +1,144 @@ +local mType = Game.createMonsterType("Weakened Frazzlemaw") +local monster = {} + +monster.description = "a weakened frazzlemaw" +monster.experience = 1000 +monster.outfit = { + lookType = 594, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "ThreatenedDreamsNightmareMonstersDeath", +} + +monster.raceId = 1442 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Feyrist.", +} + +monster.health = 1200 +monster.maxHealth = 1200 +monster.race = "blood" +monster.corpse = 20233 +monster.speed = 150 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Mwaaahgod! Overmwaaaaah! *gurgle*", yell = false }, + { text = "Mwaaaahnducate youuuuuu *gurgle*, mwaaah!", yell = false }, + { text = "MMMWAHMWAHMWAHMWAAAAH!", yell = true }, + { text = "Mmmwhamwhamwhah, mwaaah!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin + { id = 3035, chance = 60000, maxCount = 1 }, -- platinum coin + { id = 3110, chance = 5000 }, -- piece of iron + { id = 3114, chance = 12680 }, -- skull + { id = 3115, chance = 10000 }, -- bone + { id = 3116, chance = 5500 }, -- big bone + { id = 3578, chance = 6750, maxCount = 3 }, -- fish + { id = 3582, chance = 6000, maxCount = 2 }, -- ham + { id = 5880, chance = 3000 }, -- iron ore + { id = 5895, chance = 5000 }, -- fish fin + { id = 7418, chance = 350 }, -- nightmare blade + { id = 238, chance = 10000, maxCount = 3 }, -- great mana potion + { id = 239, chance = 10000, maxCount = 2 }, -- great health potion + { id = 10389, chance = 300 }, -- sai + { id = 20062, chance = 1200 }, -- cluster of solace + { id = 20198, chance = 12000 }, -- frazzle tongue + { id = 20199, chance = 10500 }, -- frazzle skin + { name = "fairy wings", chance = 15000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 80 }, + -- bleed + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 10, minDamage = -80, maxDamage = -200, radius = 3, effect = CONST_ME_DRAWBLOOD, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, length = 5, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, + { name = "speed", interval = 2000, chance = 15, speedChange = -600, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -50, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 45, + mitigation = 1.37, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 80, maxDamage = 225, effect = CONST_ME_HITBYPOISON, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/enraged_white_deer.lua b/data-canary/monster/mammals/enraged_white_deer.lua new file mode 100644 index 00000000000..c0463050905 --- /dev/null +++ b/data-canary/monster/mammals/enraged_white_deer.lua @@ -0,0 +1,106 @@ +local mType = Game.createMonsterType("Enraged White Deer") +local monster = {} + +monster.description = "an enraged white deer" +monster.experience = 165 +monster.outfit = { + lookType = 400, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 255 +monster.maxHealth = 255 +monster.race = "blood" +monster.corpse = 12524 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.events = { + "WhiteDeerScoutsDeath", +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "*wheeze*", yell = false }, + { text = "ROOOAAARR!!", yell = false }, + { text = "*sniff*", yell = false }, + { text = "*bell*", yell = false }, +} + +monster.loot = { + { name = "ham", chance = 19850, maxCount = 3 }, + { name = "white deer antlers", chance = 19520 }, + { name = "white deer skin", chance = 20280 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, +} + +monster.defenses = { + defense = 15, + armor = 15, + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HEALING, minDamage = 10, maxDamage = 40, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/evil_sheep.lua b/data-canary/monster/mammals/evil_sheep.lua new file mode 100644 index 00000000000..0d5e9e54bc6 --- /dev/null +++ b/data-canary/monster/mammals/evil_sheep.lua @@ -0,0 +1,112 @@ +local mType = Game.createMonsterType("Evil Sheep") +local monster = {} + +monster.description = "an evil sheep" +monster.experience = 240 +monster.outfit = { + lookType = 14, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 555 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Isle of Evil.", +} + +monster.health = 350 +monster.maxHealth = 350 +monster.race = "blood" +monster.corpse = 5991 +monster.speed = 78 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 20, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grrrr", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 50 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, + { name = "combat", interval = 4000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -50, range = 7, shootEffect = CONST_ANI_SNOWBALL, target = true }, +} + +monster.defenses = { + defense = 35, + armor = 18, + mitigation = 0.78, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/evil_sheep_lord.lua b/data-canary/monster/mammals/evil_sheep_lord.lua new file mode 100644 index 00000000000..178aed268e1 --- /dev/null +++ b/data-canary/monster/mammals/evil_sheep_lord.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Evil Sheep Lord") +local monster = {} + +monster.description = "an evil sheep lord" +monster.experience = 340 +monster.outfit = { + lookType = 13, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 556 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "Isle of Evil.", +} + +monster.health = 400 +monster.maxHealth = 400 +monster.race = "blood" +monster.corpse = 5994 +monster.speed = 89 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 3, + summons = { + { name = "Evil Sheep", chance = 30, interval = 2000, count = X }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You can COUNT on us!", yell = false }, + { text = "Maeh!", yell = false }, + { text = "I feel you're getting sleepy! Maeh!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 75000, maxCount = 60 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -118 }, + { name = "outfit", interval = 3000, chance = 20, range = 7, effect = CONST_ME_MAGIC_BLUE, target = true, duration = 4000, outfitMonster = "Sheep" }, +} + +monster.defenses = { + defense = 35, + armor = 24, + mitigation = 0.91, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "outfit", interval = 1500, chance = 50, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000, outfitMonster = "Werewolf" }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/exotic_bat.lua b/data-canary/monster/mammals/exotic_bat.lua new file mode 100644 index 00000000000..162e70f9d58 --- /dev/null +++ b/data-canary/monster/mammals/exotic_bat.lua @@ -0,0 +1,116 @@ +local mType = Game.createMonsterType("Exotic Bat") +local monster = {} + +monster.description = "a exotic bat" +monster.experience = 1200 +monster.outfit = { + lookType = 1373, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2051 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Exotic cave Spider cave.", +} + +monster.health = 1500 +monster.maxHealth = 1500 +monster.race = "venom" +monster.corpse = 35690 +monster.speed = 100 +monster.manaCost = 250 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 0, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 4 }, + { name = "great mana potion", chance = 30000, maxCount = 2 }, + { name = "terra amulet", chance = 6000 }, + { name = "dark mushroom", chance = 15000, maxCount = 6 }, + { name = "green mushroom", chance = 10300, maxCount = 5 }, + { name = "garlic necklace", chance = 5000 }, + { name = "bat wing", chance = 5000, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -80, maxDamage = -150, length = 5, spread = 2, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -60, maxDamage = -150, range = 7, radius = 3, effect = CONST_ME_YELLOW_RINGS, target = true }, +} + +monster.defenses = { + defense = 40, + armor = 40, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 1 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = 5 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/fox.lua b/data-canary/monster/mammals/fox.lua new file mode 100644 index 00000000000..dd048de2131 --- /dev/null +++ b/data-canary/monster/mammals/fox.lua @@ -0,0 +1,114 @@ +local mType = Game.createMonsterType("Fox") +local monster = {} + +monster.description = "a fox" +monster.experience = 15 +monster.outfit = { + lookType = 1029, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1548 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 250, + FirstUnlock = 10, + SecondUnlock = 100, + CharmsPoints = 5, + Stars = 1, + Occurrence = 0, + Locations = "South-west of Edron, possibly other places.", +} + +monster.health = 22 +monster.maxHealth = 22 +monster.race = "blood" +monster.corpse = 27517 +monster.speed = 85 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Yip! Yip!", yell = false }, + { text = "Grrrrrrr", yell = false }, +} + +monster.loot = { + { id = 3577, chance = 49320 }, -- meat + { name = "fox paw", chance = 1350 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 }, +} + +monster.defenses = { + defense = 20, + armor = 20, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 5 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/ghost_wolf.lua b/data-canary/monster/mammals/ghost_wolf.lua new file mode 100644 index 00000000000..03c19e0e71d --- /dev/null +++ b/data-canary/monster/mammals/ghost_wolf.lua @@ -0,0 +1,110 @@ +local mType = Game.createMonsterType("Ghost Wolf") +local monster = {} + +monster.description = "a ghost wolf" +monster.experience = 65 +monster.outfit = { + lookType = 730, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1148 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 2, + Locations = "Poacher Caves/Gloomy.", +} + +monster.health = 160 +monster.maxHealth = 160 +monster.race = "blood" +monster.corpse = 22078 +monster.speed = 135 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 65000, maxCount = 20 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, +} + +monster.defenses = { + defense = 15, + armor = 12, + mitigation = 0.51, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 35 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/ghoulish_hyaena.lua b/data-canary/monster/mammals/ghoulish_hyaena.lua new file mode 100644 index 00000000000..cbc170910ec --- /dev/null +++ b/data-canary/monster/mammals/ghoulish_hyaena.lua @@ -0,0 +1,118 @@ +local mType = Game.createMonsterType("Ghoulish Hyaena") +local monster = {} + +monster.description = "a ghoulish hyaena" +monster.experience = 195 +monster.outfit = { + lookType = 94, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 704 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Horestis Tomb.", +} + +monster.health = 400 +monster.maxHealth = 400 +monster.race = "blood" +monster.corpse = 6026 +monster.speed = 102 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 30, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grawrrr!!", yell = false }, + { text = "Hoouu!", yell = false }, +} + +monster.loot = { + { name = "small ruby", chance = 2700, maxCount = 2 }, + { name = "gold coin", chance = 89000, maxCount = 40 }, + { name = "meat", chance = 51060, maxCount = 3 }, + { name = "worm", chance = 65000, maxCount = 7 }, + { name = "health potion", chance = 19840 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -112, condition = { type = CONDITION_POISON, totalDamage = 10, interval = 4000 } }, -- poison + { name = "ghoulish hyaena wave", interval = 2000, chance = 15, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 21, + mitigation = 0.80, + { name = "speed", interval = 2000, chance = 15, speedChange = 3000, target = false, duration = 2000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 60 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/giant_beaver.lua b/data-canary/monster/mammals/giant_beaver.lua new file mode 100644 index 00000000000..d8b8d5e12d0 --- /dev/null +++ b/data-canary/monster/mammals/giant_beaver.lua @@ -0,0 +1,88 @@ +local mType = Game.createMonsterType("Giant Beaver") +local monster = {} + +monster.description = "a giant beaver" +monster.experience = 0 +monster.outfit = { + lookType = 1536, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.health = 5290 +monster.maxHealth = 5290 +monster.race = "blood" +monster.corpse = 0 +monster.speed = 182 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.defenses = { + defense = 110, + armor = 120, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 100 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = true }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/gloom_wolf.lua b/data-canary/monster/mammals/gloom_wolf.lua new file mode 100644 index 00000000000..89be04eed61 --- /dev/null +++ b/data-canary/monster/mammals/gloom_wolf.lua @@ -0,0 +1,114 @@ +local mType = Game.createMonsterType("Gloom Wolf") +local monster = {} + +monster.description = "a gloom wolf" +monster.experience = 70 +monster.outfit = { + lookType = 716, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1139 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 1, + Locations = "Tainted Caves, Poacher Caves/Gloomy.", +} + +monster.health = 200 +monster.maxHealth = 200 +monster.race = "blood" +monster.corpse = 21983 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 8, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "ham", chance = 20120 }, + { id = 3012, chance = 2000 }, -- wolf tooth chain + { name = "gold coin", chance = 65000, maxCount = 48 }, + { name = "meat", chance = 55000, maxCount = 2 }, + { name = "wolf paw", chance = 980 }, + { id = 22007, chance = 8000 }, --gloom wolf fur +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -92 }, +} + +monster.defenses = { + defense = 5, + armor = 10, + mitigation = 0.51, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/gnarlhound.lua b/data-canary/monster/mammals/gnarlhound.lua new file mode 100644 index 00000000000..6042324a9c9 --- /dev/null +++ b/data-canary/monster/mammals/gnarlhound.lua @@ -0,0 +1,115 @@ +local mType = Game.createMonsterType("Gnarlhound") +local monster = {} + +monster.description = "a gnarlhound" +monster.experience = 60 +monster.outfit = { + lookType = 341, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 630 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Zao Steppe, Raging Mage Tower, Gnarlhound Caves. \z + Four inaccessible ones can be seen in Telas's basement.", +} + +monster.health = 198 +monster.maxHealth = 198 +monster.race = "blood" +monster.corpse = 10333 +monster.speed = 205 +monster.manaCost = 465 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Gnarllll!", yell = false }, + { text = "Grrrrrr!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 48000, maxCount = 30 }, + { name = "meat", chance = 39075, maxCount = 3 }, + { name = "worm", chance = 33300, maxCount = 3 }, + { name = "shaggy tail", chance = 25550 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, +} + +monster.defenses = { + defense = 10, + armor = 10, + mitigation = 0.25, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/gore_horn.lua b/data-canary/monster/mammals/gore_horn.lua new file mode 100644 index 00000000000..37ca6c70b2b --- /dev/null +++ b/data-canary/monster/mammals/gore_horn.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Gore Horn") +local monster = {} + +monster.description = "a gore horn" +monster.experience = 12595 +monster.outfit = { + lookType = 1548, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2266 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 5000, + FirstUnlock = 200, + SecondUnlock = 2000, + CharmsPoints = 100, + Stars = 5, + Occurrence = 0, + Locations = "Sparkling Pools", +} + +monster.health = 20620 +monster.maxHealth = 20620 +monster.race = "blood" +monster.corpse = 39283 +monster.speed = 191 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Rraaaaa!", yell = false }, +} + +monster.loot = { + { name = "Gore Horn", chance = 36040 }, + { name = "Crystal Coin", chance = 30050 }, + { name = "Big Bone", chance = 5270 }, + { id = 3097, chance = 3590 }, -- Dwarven Ring + { name = "Metal Spats", chance = 3100 }, + { name = "Knight Legs", chance = 2330 }, + { name = "Diamond Sceptre", chance = 2060 }, + { name = "Doublet", chance = 1390 }, + { name = "Hammer of Wrath", chance = 1070 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1000 }, + { name = "combat", interval = 3500, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -450, maxDamage = -750, length = 7, spread = 0, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 4100, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -900, radius = 7, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2700, chance = 35, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -850, range = 1, shootEffect = CONST_ANI_ENERGY, target = true }, + { name = "root", interval = 2000, chance = 1, target = true }, +} + +monster.defenses = { + defense = 78, + armor = 78, + mitigation = 2.28, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = 50 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) + +RegisterPrimalPackBeast(monster) diff --git a/data-canary/monster/mammals/gorerilla.lua b/data-canary/monster/mammals/gorerilla.lua new file mode 100644 index 00000000000..58b8758208f --- /dev/null +++ b/data-canary/monster/mammals/gorerilla.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Gorerilla") +local monster = {} + +monster.description = "a gorerilla" +monster.experience = 13172 +monster.outfit = { + lookType = 1559, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2277 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 5000, + FirstUnlock = 200, + SecondUnlock = 2000, + CharmsPoints = 100, + Stars = 5, + Occurrence = 0, + Locations = "Sparkling Pools", +} + +monster.health = 16850 +monster.maxHealth = 16850 +monster.race = "blood" +monster.corpse = 39327 +monster.speed = 215 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 3, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Shwooosh!", yell = false }, +} + +monster.loot = { + { name = "Crystal Coin", chance = 20700, minCount = 1, maxCount = 2 }, + { name = "Gorerilla Mane", chance = 19890 }, + { name = "Gorerilla Tail", chance = 17060 }, + { name = "Ultimate Mana Potion", chance = 11210, minCount = 1, maxCount = 3 }, + { name = "Doublet", chance = 5880 }, + { name = "Magma Coat", chance = 2440 }, + { name = "Black Pearl", chance = 500, minCount = 1, maxCount = 2 }, + { name = "Crystal Crossbow", chance = 110 }, + { name = "Composite Hornbow", chance = 30 }, + { name = "Ornate Crossbow", chance = 30 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -950 }, + { name = "combat", interval = 2200, chance = 60, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -750, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = true }, + { name = "combat", interval = 3100, chance = 35, type = COMBAT_FIREDAMAGE, minDamage = -650, maxDamage = -850, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, + { name = "gorerilla large ring", interval = 3500, chance = 35, minDamage = -600, maxDamage = -1000 }, + { name = "gorerilla small ring", interval = 3800, chance = 20, minDamage = -600, maxDamage = -1000 }, +} + +monster.defenses = { + defense = 76, + armor = 76, + mitigation = 1.99, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 30 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) + +RegisterPrimalPackBeast(monster) diff --git a/data-canary/monster/mammals/grey_horse.lua b/data-canary/monster/mammals/grey_horse.lua new file mode 100644 index 00000000000..f299ce3608a --- /dev/null +++ b/data-canary/monster/mammals/grey_horse.lua @@ -0,0 +1,107 @@ +local mType = Game.createMonsterType("Grey Horse") +local monster = {} + +monster.name = "Horse" +monster.description = "a horse" +monster.experience = 0 +monster.outfit = { + lookType = 434, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 751 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 250, + FirstUnlock = 10, + SecondUnlock = 100, + CharmsPoints = 5, + Stars = 1, + Occurrence = 2, + Locations = "South-east, east and north-east of Thais depending on the Horse Station World Change; \z + one in the Gardens of Night (here, unreachable); one near Roswitha in Rathleton.", +} + +monster.health = 75 +monster.maxHealth = 75 +monster.race = "blood" +monster.corpse = 0 +monster.speed = 124 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = false, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 75, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Weeeeheeeeeee", yell = false }, + { text = "*snort*", yell = false }, + { text = "*Weeeeheeeeaaa*", yell = false }, +} + +monster.loot = {} + +monster.defenses = { + defense = 5, + armor = 10, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/horse.lua b/data-canary/monster/mammals/horse.lua new file mode 100644 index 00000000000..e15dc79cd21 --- /dev/null +++ b/data-canary/monster/mammals/horse.lua @@ -0,0 +1,106 @@ +local mType = Game.createMonsterType("Horse") +local monster = {} + +monster.description = "a horse" +monster.experience = 0 +monster.outfit = { + lookType = 435, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 750 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 250, + FirstUnlock = 10, + SecondUnlock = 100, + CharmsPoints = 5, + Stars = 1, + Occurrence = 1, + Locations = "South-east, east and north-east of Thais depending on the Horse Station World Change; \z + one near Roswitha in Rathleton.", +} + +monster.health = 75 +monster.maxHealth = 75 +monster.race = "blood" +monster.corpse = 0 +monster.speed = 124 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = false, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 75, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Weeeeheeeeeee", yell = false }, + { text = "*snort*", yell = false }, + { text = "*Weeeeheeeeaaa*", yell = false }, +} + +monster.loot = {} + +monster.defenses = { + defense = 5, + armor = 10, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/hot_dog.lua b/data-canary/monster/mammals/hot_dog.lua new file mode 100644 index 00000000000..a09b9e2019f --- /dev/null +++ b/data-canary/monster/mammals/hot_dog.lua @@ -0,0 +1,115 @@ +local mType = Game.createMonsterType("Hot Dog") +local monster = {} + +monster.description = "a hot dog" +monster.experience = 190 +monster.outfit = { + lookType = 32, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 557 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "Isle of Evil.", +} + +monster.health = 505 +monster.maxHealth = 505 +monster.race = "blood" +monster.corpse = 5971 +monster.speed = 75 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Wuff Wuff", yell = false }, + { text = "Grrr Wuff", yell = false }, + { text = "Show me how good you are without some rolled newspaper!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 75 }, +} + +monster.attacks = { + { name = "melee", interval = 1200, chance = 100, minDamage = 0, maxDamage = -55 }, + { name = "hot dog wave", interval = 2000, chance = 30, minDamage = -30, maxDamage = -60, target = false }, + { name = "combat", interval = 1000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -50, range = 7, effect = CONST_ME_FIREATTACK, target = true }, +} + +monster.defenses = { + defense = 2, + armor = 24, + mitigation = 0.72, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/husky.lua b/data-canary/monster/mammals/husky.lua new file mode 100644 index 00000000000..9d3239d4738 --- /dev/null +++ b/data-canary/monster/mammals/husky.lua @@ -0,0 +1,111 @@ +local mType = Game.createMonsterType("Husky") +local monster = {} + +monster.description = "a husky" +monster.experience = 0 +monster.outfit = { + lookType = 258, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "HuskyDeath", +} + +monster.raceId = 325 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 25, + FirstUnlock = 5, + SecondUnlock = 10, + CharmsPoints = 1, + Stars = 0, + Occurrence = 1, + Locations = "Svargrond and Nibelor.", +} + +monster.health = 140 +monster.maxHealth = 140 +monster.race = "blood" +monster.corpse = 7316 +monster.speed = 132 +monster.manaCost = 420 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = false, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Yoooohuuuu!", yell = false }, + { text = "Grrrrrrr", yell = false }, + { text = "Ruff, ruff!", yell = false }, +} + +monster.loot = {} + +monster.defenses = { + defense = 5, + armor = 1, + mitigation = 0.13, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/hyaena.lua b/data-canary/monster/mammals/hyaena.lua new file mode 100644 index 00000000000..d720ec0168b --- /dev/null +++ b/data-canary/monster/mammals/hyaena.lua @@ -0,0 +1,112 @@ +local mType = Game.createMonsterType("Hyaena") +local monster = {} + +monster.description = "a hyaena" +monster.experience = 20 +monster.outfit = { + lookType = 94, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 94 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Desert areas like those around Ankrahmun and Darashia.", +} + +monster.health = 60 +monster.maxHealth = 60 +monster.race = "blood" +monster.corpse = 6026 +monster.speed = 98 +monster.manaCost = 275 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 30, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grrrrrr", yell = false }, + { text = "Hou hou hou!", yell = false }, +} + +monster.loot = { + { name = "meat", chance = 30860, maxCount = 2 }, + { name = "worm", chance = 50130, maxCount = 3 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, +} + +monster.defenses = { + defense = 15, + armor = 1, + mitigation = 0.13, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/killer_rabbit.lua b/data-canary/monster/mammals/killer_rabbit.lua new file mode 100644 index 00000000000..9b6fb2818ef --- /dev/null +++ b/data-canary/monster/mammals/killer_rabbit.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Killer Rabbit") +local monster = {} + +monster.description = "a killer rabbit" +monster.experience = 160 +monster.outfit = { + lookType = 74, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 560 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 1, + Locations = "Isle of Evil.", +} + +monster.health = 205 +monster.maxHealth = 205 +monster.race = "blood" +monster.corpse = 6017 +monster.speed = 170 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "killer rabbit", chance = 30, interval = 2000, count = 2 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Who is lunch NOW?", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 90 }, +} + +monster.attacks = { + { name = "melee", interval = 1200, chance = 100, minDamage = 0, maxDamage = -100 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -50, range = 1, target = false }, +} + +monster.defenses = { + defense = 35, + armor = 17, + mitigation = 0.51, + { name = "speed", interval = 1000, chance = 40, speedChange = 380, effect = CONST_ME_ENERGYHIT, target = false, duration = 8000 }, + { name = "invisible", interval = 2000, chance = 30, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/kongra.lua b/data-canary/monster/mammals/kongra.lua new file mode 100644 index 00000000000..ccdc6b85c3e --- /dev/null +++ b/data-canary/monster/mammals/kongra.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Kongra") +local monster = {} + +monster.description = "a kongra" +monster.experience = 115 +monster.outfit = { + lookType = 116, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 116 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "In Banuta, northeast of Port Hope, Arena and Zoo Quarter.", +} + +monster.health = 340 +monster.maxHealth = 340 +monster.race = "blood" +monster.corpse = 6043 +monster.speed = 92 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Ungh! Ungh!", yell = false }, + { text = "Hugah!", yell = false }, + { text = "Huaauaauaauaa!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 69000, maxCount = 40 }, + { id = 3050, chance = 300 }, -- power ring + { name = "protection amulet", chance = 990 }, + { id = 3093, chance = 230 }, -- club ring + { name = "plate armor", chance = 950 }, + { name = "banana", chance = 30000, maxCount = 12 }, + { name = "ape fur", chance = 980 }, + { name = "health potion", chance = 570 }, + { name = "kongra's shoulderpad", chance = 4900 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 }, +} + +monster.defenses = { + defense = 20, + armor = 18, + mitigation = 0.36, + { name = "speed", interval = 2000, chance = 15, speedChange = 260, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -15 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/lion.lua b/data-canary/monster/mammals/lion.lua new file mode 100644 index 00000000000..be36b7e5f8e --- /dev/null +++ b/data-canary/monster/mammals/lion.lua @@ -0,0 +1,111 @@ +local mType = Game.createMonsterType("Lion") +local monster = {} + +monster.description = "a lion" +monster.experience = 30 +monster.outfit = { + lookType = 41, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 41 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Jakundaf Desert, Darama, Arena Quarter, Venore Amazon Camp.", +} + +monster.health = 80 +monster.maxHealth = 80 +monster.race = "blood" +monster.corpse = 5986 +monster.speed = 95 +monster.manaCost = 320 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Groarrr!", yell = false }, +} + +monster.loot = { + { name = "meat", chance = 45000, maxCount = 4 }, + { name = "ham", chance = 18430, maxCount = 2 }, + { name = "lion's mane", chance = 1400 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, +} + +monster.defenses = { + defense = 10, + armor = 10, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -15 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -8 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/mammoth.lua b/data-canary/monster/mammals/mammoth.lua new file mode 100644 index 00000000000..7a4864fef02 --- /dev/null +++ b/data-canary/monster/mammals/mammoth.lua @@ -0,0 +1,119 @@ +local mType = Game.createMonsterType("Mammoth") +local monster = {} + +monster.description = "a mammoth" +monster.experience = 160 +monster.outfit = { + lookType = 199, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 260 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Formorgar Glacier, Tyrsung, around the Barbarian Settlements, Mammoth Shearing Factory, Chyllfroest.", +} + +monster.health = 320 +monster.maxHealth = 320 +monster.race = "blood" +monster.corpse = 6074 +monster.speed = 95 +monster.manaCost = 500 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Troooooot!", yell = false }, + { text = "Hooooot-Toooooot!", yell = false }, + { text = "Tooooot.", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 90000, maxCount = 40 }, + { name = "meat", chance = 39000 }, + { name = "ham", chance = 30000, maxCount = 3 }, + { name = "tusk shield", chance = 500 }, + { name = "mammoth whopper", chance = 2800 }, + { name = "furry club", chance = 500 }, + { name = "thick fur", chance = 7280 }, + { name = "mammoth tusk", chance = 7500, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110 }, +} + +monster.defenses = { + defense = 25, + armor = 20, + mitigation = 0.41, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/merlkin.lua b/data-canary/monster/mammals/merlkin.lua new file mode 100644 index 00000000000..db493f11a11 --- /dev/null +++ b/data-canary/monster/mammals/merlkin.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Merlkin") +local monster = {} + +monster.description = "a merlkin" +monster.experience = 145 +monster.outfit = { + lookType = 117, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 117 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Banuta, north-east of Port Hope.", +} + +monster.health = 235 +monster.maxHealth = 235 +monster.race = "blood" +monster.corpse = 6044 +monster.speed = 97 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 70, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Ugh! Ugh! Ugh!", yell = false }, + { text = "Holy banana!", yell = false }, + { text = "Chakka! Chakka!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 69500, maxCount = 45 }, + { name = "small amethyst", chance = 260 }, + { id = 3046, chance = 3000 }, -- magic light wand + { name = "wand of decay", chance = 1050 }, + { name = "orange", chance = 1000, maxCount = 5 }, + { name = "banana", chance = 30350, maxCount = 12 }, + { name = "banana staff", chance = 100 }, + { name = "ape fur", chance = 1000 }, + { name = "mana potion", chance = 660 }, + { name = "banana sash", chance = 1800 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -90, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -15, maxDamage = -45, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "poisonfield", interval = 2000, chance = 15, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, +} + +monster.defenses = { + defense = 15, + armor = 16, + mitigation = 1.04, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_HEALING, minDamage = 30, maxDamage = 40, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -15 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/modified_gnarlhound.lua b/data-canary/monster/mammals/modified_gnarlhound.lua new file mode 100644 index 00000000000..ce3d38a090f --- /dev/null +++ b/data-canary/monster/mammals/modified_gnarlhound.lua @@ -0,0 +1,105 @@ +local mType = Game.createMonsterType("Modified Gnarlhound") +local monster = {} + +monster.description = "a modified gnarlhound" +monster.experience = 0 +monster.outfit = { + lookType = 515, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 877 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 25, + FirstUnlock = 5, + SecondUnlock = 10, + CharmsPoints = 1, + Stars = 0, + Occurrence = 1, + Locations = "South of Stonehome, deep under Telas's house.", +} + +monster.health = 1500 +monster.maxHealth = 1500 +monster.race = "blood" +monster.corpse = 10333 +monster.speed = 225 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = false, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 25, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Gnarllll!", yell = false }, +} + +monster.loot = {} + +monster.defenses = { + defense = 5, + armor = 200, + mitigation = 4.26, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 90 }, + { type = COMBAT_ENERGYDAMAGE, percent = 90 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 90 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 90 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/mole.lua b/data-canary/monster/mammals/mole.lua new file mode 100644 index 00000000000..09e5a61bd1e --- /dev/null +++ b/data-canary/monster/mammals/mole.lua @@ -0,0 +1,113 @@ +local mType = Game.createMonsterType("Mole") +local monster = {} + +monster.description = "a mole" +monster.experience = 100 +monster.outfit = { + lookType = 1048, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1570 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Warzone 4 and Warzone 6.", +} + +monster.health = 200 +monster.maxHealth = 200 +monster.race = "blood" +monster.corpse = 27646 +monster.speed = 80 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3031, chance = 10000, maxCount = 78 }, -- gold coin +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, +} + +monster.defenses = { + defense = 5, + armor = 20, + mitigation = 0.64, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 40 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/mushroom_sniffer.lua b/data-canary/monster/mammals/mushroom_sniffer.lua new file mode 100644 index 00000000000..f614cdd85c9 --- /dev/null +++ b/data-canary/monster/mammals/mushroom_sniffer.lua @@ -0,0 +1,107 @@ +local mType = Game.createMonsterType("Mushroom Sniffer") +local monster = {} + +monster.description = "a mushroom sniffer" +monster.experience = 0 +monster.outfit = { + lookType = 60, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 870 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 25, + FirstUnlock = 5, + SecondUnlock = 10, + CharmsPoints = 1, + Stars = 0, + Occurrence = 0, + Locations = "Truffels Garden.", +} + +monster.health = 250 +monster.maxHealth = 250 +monster.race = "blood" +monster.corpse = 4116 +monster.speed = 55 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = false, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 25, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Sniff", yell = false }, + { text = "Oink", yell = false }, + { text = "Oink oink", yell = false }, +} + +monster.loot = {} + +monster.defenses = { + defense = 5, + armor = 20, + mitigation = 0.64, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 90 }, + { type = COMBAT_ENERGYDAMAGE, percent = 90 }, + { type = COMBAT_EARTHDAMAGE, percent = 90 }, + { type = COMBAT_FIREDAMAGE, percent = 90 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 90 }, + { type = COMBAT_HOLYDAMAGE, percent = 90 }, + { type = COMBAT_DEATHDAMAGE, percent = 90 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/mutated_bat.lua b/data-canary/monster/mammals/mutated_bat.lua new file mode 100644 index 00000000000..dfea480341b --- /dev/null +++ b/data-canary/monster/mammals/mutated_bat.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Mutated Bat") +local monster = {} + +monster.description = "a mutated bat" +monster.experience = 750 +monster.outfit = { + lookType = 307, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 509 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Cemetery Quarter (around 10 underground on the west side along with banshees, \z + and 4 bats on the church roof), Alchemist Quarter (4 found on top of roofs), \z + Arena and Zoo Quarter (2 under the arena with other mutated creatures), \z + Razzachai, Northern Zao Plantations, Souleater Mountains, Middle Spike, Vengoth and Vengoth Castle.", +} + +monster.health = 900 +monster.maxHealth = 900 +monster.race = "blood" +monster.corpse = 8915 +monster.speed = 93 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 300, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Shriiiiiek", yell = false }, +} + +monster.loot = { + { name = "black pearl", chance = 720, maxCount = 3 }, + { name = "gold coin", chance = 92500, maxCount = 130 }, + { name = "small amethyst", chance = 500, maxCount = 2 }, + { id = 3051, chance = 990 }, -- energy ring + { name = "battle shield", chance = 7760 }, + { name = "black shield", chance = 70 }, + { name = "obsidian lance", chance = 7260 }, + { name = "star herb", chance = 5060 }, + { name = "bat wing", chance = 4900, maxCount = 2 }, + { name = "mercenary sword", chance = 110 }, + { id = 8894, chance = 12530 }, -- heavily rusted armor + { id = 8895, chance = 12530, maxCount = 2 }, -- rusted armor + { name = "batwing hat", chance = 80 }, + { name = "mutated bat ear", chance = 4900 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -168, condition = { type = CONDITION_POISON, totalDamage = 120, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -70, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -30, maxDamage = -90, radius = 6, effect = CONST_ME_SOUND_WHITE, target = false }, + { name = "mutated bat curse", interval = 2000, chance = 10, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -190, maxDamage = -240, length = 4, spread = 3, effect = CONST_ME_POISONAREA, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 19, + mitigation = 1.74, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/mutated_rat.lua b/data-canary/monster/mammals/mutated_rat.lua new file mode 100644 index 00000000000..0a09b5275e5 --- /dev/null +++ b/data-canary/monster/mammals/mutated_rat.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Mutated Rat") +local monster = {} + +monster.description = "a mutated rat" +monster.experience = 450 +monster.outfit = { + lookType = 305, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 502 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Alchemist Quarter, Arena and Zoo Quarter (Inside the arena with other mutated creatures), \z + Razzachai, Vampire Castle on Vengoth, Robson's Isle, Mushroom Gardens, Souleater Mountains, \z + Northern Zao Plantations, Middle Spike.", +} + +monster.health = 550 +monster.maxHealth = 550 +monster.race = "blood" +monster.corpse = 8957 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grrrrrrrrrrrrrr!", yell = false }, + { text = "Fcccccchhhhhh", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 78500, maxCount = 130 }, + { id = 3049, chance = 540 }, -- stealth ring + { id = 3114, chance = 20240 }, -- skull + { name = "mouldy cheese", chance = 950 }, + { name = "halberd", chance = 2990 }, + { name = "plate shield", chance = 3750 }, + { name = "tower shield", chance = 50 }, + { name = "green mushroom", chance = 1390 }, + { name = "stone herb", chance = 4920 }, + { name = "health potion", chance = 560 }, + { name = "spellbook of enlightenment", chance = 300 }, + { name = "mutated rat tail", chance = 3800 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -158, condition = { type = CONDITION_POISON, totalDamage = 100, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -45, maxDamage = -85, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -80, maxDamage = -100, length = 5, spread = 3, effect = CONST_ME_POISONAREA, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -30, maxDamage = -70, range = 7, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, range = 7, radius = 3, effect = CONST_ME_POISONAREA, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 32, + mitigation = 0.99, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 80, maxDamage = 95, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/mutated_tiger.lua b/data-canary/monster/mammals/mutated_tiger.lua new file mode 100644 index 00000000000..f74c3299c75 --- /dev/null +++ b/data-canary/monster/mammals/mutated_tiger.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Mutated Tiger") +local monster = {} + +monster.description = "a mutated tiger" +monster.experience = 750 +monster.outfit = { + lookType = 318, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 516 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Alchemist Quarter, Arena and Zoo Quarter (Inside with other mutated creatures), \z + Muggy Plains, Souleater Mountains and Northern Zao Plantations.", +} + +monster.health = 1100 +monster.maxHealth = 1100 +monster.race = "blood" +monster.corpse = 8999 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 100, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "GRAAARRRRRR", yell = true }, + { text = "CHHHHHHHHHHH", yell = true }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 5 }, + { id = 3052, chance = 5580 }, -- life ring + { name = "guardian shield", chance = 380 }, + { name = "meat", chance = 29500, maxCount = 2 }, + { name = "angelic axe", chance = 440 }, + { name = "glorious axe", chance = 870 }, + { name = "strong health potion", chance = 6000 }, + { name = "silky tapestry", chance = 730 }, + { name = "striped fur", chance = 20130 }, + { name = "sabretooth", chance = 10600 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 25, + mitigation = 0.99, + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 80 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/nighthunter.lua b/data-canary/monster/mammals/nighthunter.lua new file mode 100644 index 00000000000..c83d387c30a --- /dev/null +++ b/data-canary/monster/mammals/nighthunter.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Nighthunter") +local monster = {} + +monster.description = "a nighthunter" +monster.experience = 12647 +monster.outfit = { + lookType = 1552, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2270 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 5000, + FirstUnlock = 200, + SecondUnlock = 2000, + CharmsPoints = 100, + Stars = 5, + Occurrence = 0, + Locations = "Monster Graveyard", +} + +monster.health = 19200 +monster.maxHealth = 19200 +monster.race = "blood" +monster.corpse = 39299 +monster.speed = 205 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Shriiiiek! Shriiiiek!", yell = false }, +} + +monster.loot = { + { name = "Crystal Coin", chance = 34190 }, + { name = "Nighthunter Wing", chance = 24370, minCount = 1, maxCount = 2 }, + { name = "Ultimate Health Potion", chance = 12640, minCount = 1, maxCount = 3 }, + { name = "Red Crystal Fragment", chance = 3980 }, + { name = "Green Crystal Shard", chance = 3670 }, + { name = "Cyan Crystal Fragment", chance = 3080 }, + { name = "Yellow Gem", chance = 2940 }, + { name = "Crystal Sword", chance = 1590 }, + { name = "Warrior's Axe", chance = 1400 }, + { name = "Spellbook of Mind Control", chance = 960 }, + { name = "Stone Skin Amulet", chance = 850 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -700 }, + { name = "combat", interval = 3500, chance = 35, type = COMBAT_EARTHDAMAGE, minDamage = -950, maxDamage = -1300, range = 1, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, + { name = "nighthunter wave", interval = 5000, chance = 25, minDamage = -600, maxDamage = -775 }, +} + +monster.defenses = { + defense = 85, + armor = 81, + mitigation = 2.28, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 15 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) + +RegisterPrimalPackBeast(monster) diff --git a/data-canary/monster/mammals/noble_lion.lua b/data-canary/monster/mammals/noble_lion.lua new file mode 100644 index 00000000000..934caf54673 --- /dev/null +++ b/data-canary/monster/mammals/noble_lion.lua @@ -0,0 +1,118 @@ +local mType = Game.createMonsterType("Noble Lion") +local monster = {} + +monster.description = "a noble lion" +monster.experience = 400 +monster.outfit = { + lookType = 570, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1118 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "Lion's Rock temple.", +} + +monster.health = 1000 +monster.maxHealth = 1000 +monster.race = "blood" +monster.corpse = 21863 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Groarrrr! Rwarrrr", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 68 }, -- gold coin + { id = 3577, chance = 25000 }, -- meat + { id = 3582, chance = 25000 }, -- ham + { id = 9691, chance = 20000 }, -- lion's mane +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 40 }, +} + +monster.defenses = { + defense = 26, + armor = 27, + mitigation = 1.02, + { name = "speed", interval = 2000, chance = 15, speedChange = 250, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/panda.lua b/data-canary/monster/mammals/panda.lua new file mode 100644 index 00000000000..b5f0000761d --- /dev/null +++ b/data-canary/monster/mammals/panda.lua @@ -0,0 +1,114 @@ +local mType = Game.createMonsterType("Panda") +local monster = {} + +monster.description = "a panda" +monster.experience = 23 +monster.outfit = { + lookType = 123, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 123 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "South of Port Hope around Trapwood, as well as a lone specimen in the Arena Quarter.", +} + +monster.health = 80 +monster.maxHealth = 80 +monster.race = "blood" +monster.corpse = 6049 +monster.speed = 78 +monster.manaCost = 300 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Groar", yell = false }, + { text = "Grrrr", yell = false }, +} + +monster.loot = { + { name = "meat", chance = 70500, maxCount = 4 }, + { name = "ham", chance = 39000, maxCount = 2 }, + { name = "bamboo stick", chance = 10000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, +} + +monster.defenses = { + defense = 10, + armor = 8, + mitigation = 0.20, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/parder.lua b/data-canary/monster/mammals/parder.lua new file mode 100644 index 00000000000..b6387445bff --- /dev/null +++ b/data-canary/monster/mammals/parder.lua @@ -0,0 +1,120 @@ +local mType = Game.createMonsterType("Parder") +local monster = {} + +monster.description = "a parder" +monster.experience = 1100 +monster.outfit = { + lookType = 1533, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2256 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "In almost all grass areas in Tibia, also found in Rookgaard and Dawnport.", +} + +monster.health = 1200 +monster.maxHealth = 1200 +monster.race = "blood" +monster.corpse = 39204 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grrroaaar!", yell = false }, + { text = "FCHHH!", yell = true }, +} + +monster.loot = { + { name = "Gold Coin", chance = 100000, minCount = 1, maxCount = 285 }, + { name = "Ham", chance = 24670 }, + { name = "Parder Fur", chance = 19070 }, + { name = "Parder Tooth", chance = 14320, minCount = 1, maxCount = 2 }, + { name = "Red Crystal Fragment", chance = 14030 }, + { name = "Strong Health Potion", chance = 7560, minCount = 1, maxCount = 3 }, + { name = "Barbarian Axe", chance = 4540 }, + { id = 7385, chance = 1510 }, -- Crimson Sword +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -275 }, + { name = "combat", interval = 2500, chance = 47, type = COMBAT_PHYSICALDAMAGE, minDamage = -126, maxDamage = -262, effect = CONST_ME_BIG_SCRATCH, target = true, range = 1 }, + { name = "combat", interval = 2850, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -260, maxDamage = -300, length = 5, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, +} + +monster.defenses = { + defense = 90, + armor = 33, + mitigation = 1.15, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 15 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/pig.lua b/data-canary/monster/mammals/pig.lua new file mode 100644 index 00000000000..c4dc2b1dd1e --- /dev/null +++ b/data-canary/monster/mammals/pig.lua @@ -0,0 +1,109 @@ +local mType = Game.createMonsterType("Pig") +local monster = {} + +monster.description = "a pig" +monster.experience = 0 +monster.outfit = { + lookType = 60, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 60 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 250, + FirstUnlock = 10, + SecondUnlock = 100, + CharmsPoints = 5, + Stars = 1, + Occurrence = 0, + Locations = "Rookgaard, Orc Fort, under Femor Hills with Goblins, some farms like Donald McRonaldThe McRonalds Farm, Liberty Bay slums and Nargor, Foreigner Quarter in Yalahar, Isle of the Kings, cells in The Pits of Inferno QuestTafariels throneroom in Pits of Inferno, Gardens of Night Mapper Coords129.18126.125104texthere, unreachable.", +} + +monster.health = 25 +monster.maxHealth = 25 +monster.race = "blood" +monster.corpse = 6000 +monster.speed = 57 +monster.manaCost = 255 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = false, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 25, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Oink oink", yell = false }, + { text = "Oink", yell = false }, +} + +monster.loot = { + { name = "meat", chance = 64000, maxCount = 4 }, + { name = "pig foot", chance = 950 }, +} + +monster.defenses = { + defense = 5, + armor = 2, + mitigation = 0.05, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/polar_bear.lua b/data-canary/monster/mammals/polar_bear.lua new file mode 100644 index 00000000000..4669fd86cd8 --- /dev/null +++ b/data-canary/monster/mammals/polar_bear.lua @@ -0,0 +1,112 @@ +local mType = Game.createMonsterType("Polar Bear") +local monster = {} + +monster.description = "a polar bear" +monster.experience = 28 +monster.outfit = { + lookType = 42, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 42 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Ice Islands.", +} + +monster.health = 85 +monster.maxHealth = 85 +monster.race = "blood" +monster.corpse = 5987 +monster.speed = 78 +monster.manaCost = 315 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 5, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "GROARRR!", yell = true }, +} + +monster.loot = { + { name = "meat", chance = 50500, maxCount = 4 }, + { name = "ham", chance = 50320, maxCount = 2 }, + { name = "polar bear paw", chance = 980 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, +} + +monster.defenses = { + defense = 10, + armor = 7, + mitigation = 0.25, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/poodle.lua b/data-canary/monster/mammals/poodle.lua new file mode 100644 index 00000000000..b11babe6a2a --- /dev/null +++ b/data-canary/monster/mammals/poodle.lua @@ -0,0 +1,90 @@ +local mType = Game.createMonsterType("Poodle") +local monster = {} + +monster.description = "a poodle" +monster.experience = 0 +monster.outfit = { + lookType = 473, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 20 +monster.maxHealth = 20 +monster.race = "blood" +monster.corpse = 5971 +monster.speed = 100 +monster.manaCost = 220 + +monster.changeTarget = { + interval = 2000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = false, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 8, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Wuff wuff", yell = false }, +} + +monster.loot = {} + +monster.defenses = { + defense = 2, + armor = 1, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/rabbit.lua b/data-canary/monster/mammals/rabbit.lua new file mode 100644 index 00000000000..4d1c0e8a285 --- /dev/null +++ b/data-canary/monster/mammals/rabbit.lua @@ -0,0 +1,107 @@ +local mType = Game.createMonsterType("Rabbit") +local monster = {} + +monster.description = "a rabbit" +monster.experience = 0 +monster.outfit = { + lookType = 74, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 74 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 250, + FirstUnlock = 10, + SecondUnlock = 100, + CharmsPoints = 5, + Stars = 1, + Occurrence = 0, + Locations = "In most grass areas of Tibia, for example on Tutorial Island.", +} + +monster.health = 15 +monster.maxHealth = 15 +monster.race = "blood" +monster.corpse = 6017 +monster.speed = 90 +monster.manaCost = 220 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = false, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "meat", chance = 85620, maxCount = 2 }, + { id = 3595, chance = 10000, maxCount = 2 }, -- carrot +} + +monster.defenses = { + defense = 5, + armor = 1, + mitigation = 0.05, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/rat.lua b/data-canary/monster/mammals/rat.lua new file mode 100644 index 00000000000..205888f9a55 --- /dev/null +++ b/data-canary/monster/mammals/rat.lua @@ -0,0 +1,115 @@ +local mType = Game.createMonsterType("Rat") +local monster = {} + +monster.description = "a rat" +monster.experience = 5 +monster.outfit = { + lookType = 21, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "RationalRequestRatDeath", +} + +monster.raceId = 21 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 250, + FirstUnlock = 10, + SecondUnlock = 100, + CharmsPoints = 5, + Stars = 1, + Occurrence = 0, + Locations = "Rookgaard and Mainland, in most sewers and caves near towns. They can be found almost everywhere in Tibia.", +} + +monster.health = 20 +monster.maxHealth = 20 +monster.race = "blood" +monster.corpse = 5964 +monster.speed = 67 +monster.manaCost = 200 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 5, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Meep!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 4 }, + { id = 3607, chance = 39410 }, -- cheese +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8 }, +} + +monster.defenses = { + defense = 5, + armor = 1, + mitigation = 0.07, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/roaring_lion.lua b/data-canary/monster/mammals/roaring_lion.lua new file mode 100644 index 00000000000..926d3996c3c --- /dev/null +++ b/data-canary/monster/mammals/roaring_lion.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Roaring Lion") +local monster = {} + +monster.description = "a roaring lion" +monster.experience = 800 +monster.outfit = { + lookType = 570, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 981 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Lion's Rock a few floors down.", +} + +monster.health = 1000 +monster.maxHealth = 1000 +monster.race = "blood" +monster.corpse = 19103 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Groarrrr! Rwarrrr!", yell = false }, + { text = "Growl!", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 114 }, -- gold coin + { id = 3577, chance = 25000 }, -- meat + { id = 3582, chance = 25000 }, -- ham + { id = 9691, chance = 16666 }, -- lion's mane + { id = 3035, chance = 10000 }, -- platinum coin + { id = 3030, chance = 7692 }, -- small ruby + { id = 3033, chance = 7142 }, -- small amethyst + { id = 9057, chance = 6666 }, -- small topaz + { id = 3029, chance = 5555 }, -- small sapphire + { id = 3077, chance = 1612 }, -- ankh + { id = 3048, chance = 1204 }, -- might ring + { id = 3385, chance = 1010 }, -- crown helmet +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 40 }, +} + +monster.defenses = { + defense = 28, + armor = 28, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/sabretooth.lua b/data-canary/monster/mammals/sabretooth.lua new file mode 100644 index 00000000000..91fe1151653 --- /dev/null +++ b/data-canary/monster/mammals/sabretooth.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Sabretooth") +local monster = {} + +monster.description = "a sabretooth" +monster.experience = 11931 +monster.outfit = { + lookType = 1549, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2267 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 5000, + FirstUnlock = 200, + SecondUnlock = 2000, + CharmsPoints = 100, + Stars = 5, + Occurrence = 0, + Locations = "Sparkling Pools", +} + +monster.health = 17300 +monster.maxHealth = 17300 +monster.race = "blood" +monster.corpse = 39287 +monster.speed = 225 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "Sabretooth Fur", chance = 23640 }, + { name = "Crystal Coin", chance = 23350, minCount = 1, maxCount = 2 }, + { name = "Elven Amulet", chance = 5010 }, + { name = "Wand of Inferno", chance = 4720 }, + { name = "Dragon Necklace", chance = 3850 }, + { name = "Magma Coat", chance = 3820 }, + { name = "Sacred Tree Amulet", chance = 2730 }, + { name = "Fire Sword", chance = 2650 }, + { name = "Wand of Dragonbreath", chance = 2330 }, + { name = "Metal Spats", chance = 2260 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1100 }, + { name = "sabretooth wave", interval = 5000, chance = 35, minDamage = -600, maxDamage = -1000 }, + { name = "combat", interval = 3500, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -800, maxDamage = -1500, range = 1, effect = CONST_ME_BIG_SCRATCH, target = true }, + { name = "combat", interval = 2700, chance = 35, type = COMBAT_FIREDAMAGE, minDamage = -900, maxDamage = -1350, range = 1, target = true }, +} + +monster.defenses = { + defense = 110, + armor = 63, + mitigation = 1.62, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) + +RegisterPrimalPackBeast(monster) diff --git a/data-canary/monster/mammals/sheep.lua b/data-canary/monster/mammals/sheep.lua new file mode 100644 index 00000000000..9ad781a2ed2 --- /dev/null +++ b/data-canary/monster/mammals/sheep.lua @@ -0,0 +1,112 @@ +local mType = Game.createMonsterType("Sheep") +local monster = {} + +monster.description = "a sheep" +monster.experience = 0 +monster.outfit = { + lookType = 14, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 14 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 250, + FirstUnlock = 10, + SecondUnlock = 100, + CharmsPoints = 5, + Stars = 1, + Occurrence = 0, + Locations = "In Rookgaard Sheep field, Greenshore and other farms like the one in Thais, east of Carlin. They can also be found wandering the fields of Edron, and some can be found along with a Black Sheep with the Hunter in Femor Hills.", +} + +monster.health = 20 +monster.maxHealth = 20 +monster.race = "blood" +monster.corpse = 5991 +monster.speed = 58 +monster.manaCost = 250 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = false, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 20, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Maeh", yell = false }, +} + +monster.loot = { + { name = "meat", chance = 70000, maxCount = 4 }, + { name = "wool", chance = 1000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1 }, +} + +monster.defenses = { + defense = 5, + armor = 1, + mitigation = 0.05, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/sibang.lua b/data-canary/monster/mammals/sibang.lua new file mode 100644 index 00000000000..5977affac01 --- /dev/null +++ b/data-canary/monster/mammals/sibang.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Sibang") +local monster = {} + +monster.description = "a sibang" +monster.experience = 105 +monster.outfit = { + lookType = 118, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 118 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "In Banuta, north-east of Port Hope.", +} + +monster.health = 225 +monster.maxHealth = 225 +monster.race = "blood" +monster.corpse = 6045 +monster.speed = 107 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 70, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Eeeeek! Eeeeek!", yell = false }, + { text = "Huh! Huh! Huh!", yell = false }, + { text = "Ahhuuaaa!", yell = false }, +} + +monster.loot = { + { name = "small stone", chance = 30060, maxCount = 3 }, + { name = "gold coin", chance = 56000, maxCount = 35 }, + { name = "orange", chance = 19840, maxCount = 5 }, + { name = "banana", chance = 30000, maxCount = 12 }, + { name = "coconut", chance = 1960, maxCount = 3 }, + { name = "melon", chance = 1000 }, + { name = "ape fur", chance = 1000 }, + { name = "banana sash", chance = 5000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -55, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 15, + mitigation = 0.83, + { name = "speed", interval = 2000, chance = 15, speedChange = 380, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -15 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/silver_rabbit.lua b/data-canary/monster/mammals/silver_rabbit.lua new file mode 100644 index 00000000000..73ff2e5291f --- /dev/null +++ b/data-canary/monster/mammals/silver_rabbit.lua @@ -0,0 +1,108 @@ +local mType = Game.createMonsterType("Silver Rabbit") +local monster = {} + +monster.description = "a silver rabbit" +monster.experience = 0 +monster.outfit = { + lookType = 262, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 327 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 250, + FirstUnlock = 10, + SecondUnlock = 100, + CharmsPoints = 5, + Stars = 1, + Occurrence = 0, + Locations = "A lot of places on the Ice Islands and one on Rookgaard (unreachable).", +} + +monster.health = 15 +monster.maxHealth = 15 +monster.race = "blood" +monster.corpse = 7338 +monster.speed = 92 +monster.manaCost = 220 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "meat", chance = 86170, maxCount = 2 }, + { id = 3595, chance = 11150 }, -- carrot + { name = "silky fur", chance = 28670 }, +} + +monster.defenses = { + defense = 5, + armor = 1, + mitigation = 0.05, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/skunk.lua b/data-canary/monster/mammals/skunk.lua new file mode 100644 index 00000000000..0b0845b8d18 --- /dev/null +++ b/data-canary/monster/mammals/skunk.lua @@ -0,0 +1,113 @@ +local mType = Game.createMonsterType("Skunk") +local monster = {} + +monster.description = "a skunk" +monster.experience = 3 +monster.outfit = { + lookType = 106, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 106 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 250, + FirstUnlock = 10, + SecondUnlock = 100, + CharmsPoints = 5, + Stars = 1, + Occurrence = 0, + Locations = "Unannounced raid in Edron outside the depot, Tiquanda, Shattered Isles, \z + Liberty Bay, south gate of Thais.", +} + +monster.health = 20 +monster.maxHealth = 20 +monster.race = "blood" +monster.corpse = 6035 +monster.speed = 68 +monster.manaCost = 200 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 8, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "bulb of garlic", chance = 4910 }, + { name = "skunk tail", chance = 920 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -1, maxDamage = -3, range = 1, target = true }, +} + +monster.defenses = { + defense = 5, + armor = 1, + mitigation = 0.13, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/squirrel.lua b/data-canary/monster/mammals/squirrel.lua new file mode 100644 index 00000000000..3d41b0ff9b8 --- /dev/null +++ b/data-canary/monster/mammals/squirrel.lua @@ -0,0 +1,108 @@ +local mType = Game.createMonsterType("Squirrel") +local monster = {} + +monster.description = "a squirrel" +monster.experience = 0 +monster.outfit = { + lookType = 274, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 384 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 250, + FirstUnlock = 10, + SecondUnlock = 100, + CharmsPoints = 5, + Stars = 1, + Occurrence = 0, + Locations = "North of Carlin, Northwest of Thais, East of Kazordoon, Yalahar, Dawnport, Edron Hunters Camp, Plains of Havoc and other Tibian woods.", +} + +monster.health = 20 +monster.maxHealth = 20 +monster.race = "blood" +monster.corpse = 276 +monster.speed = 240 +monster.manaCost = 220 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = false, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 20, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Chchch", yell = false }, +} + +monster.loot = { + { name = "walnut", chance = 1140 }, + { name = "peanut", chance = 980 }, + { name = "acorn", chance = 50410 }, +} +monster.defenses = { + defense = 5, + armor = 1, + mitigation = 0.05, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/starving_wolf.lua b/data-canary/monster/mammals/starving_wolf.lua new file mode 100644 index 00000000000..49407483cb0 --- /dev/null +++ b/data-canary/monster/mammals/starving_wolf.lua @@ -0,0 +1,116 @@ +local mType = Game.createMonsterType("Starving Wolf") +local monster = {} + +monster.description = "a starving wolf" +monster.experience = 65 +monster.outfit = { + lookType = 27, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 723 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 2, + Locations = "East, west and south-west of the Femor Hills.", +} + +monster.health = 85 +monster.maxHealth = 85 +monster.race = "blood" +monster.corpse = 5968 +monster.speed = 94 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 8, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Gaarrrrrr", yell = false }, + { text = "Gnoorrr", yell = false }, + { text = "Yoooohhuuuu!", yell = false }, +} + +monster.loot = { + { name = "dirty fur", chance = 64730 }, + { name = "meat", chance = 5300, maxCount = 2 }, + { name = "wolf paw", chance = 1430 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 }, +} + +monster.defenses = { + defense = 10, + armor = 2, + mitigation = 0.33, + { name = "effect", interval = 2000, chance = 10, radius = 1, effect = CONST_ME_YELLOW_RINGS, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/stone_rhino.lua b/data-canary/monster/mammals/stone_rhino.lua new file mode 100644 index 00000000000..20131196c20 --- /dev/null +++ b/data-canary/monster/mammals/stone_rhino.lua @@ -0,0 +1,118 @@ +local mType = Game.createMonsterType("Stone Rhino") +local monster = {} + +monster.description = "a stone rhino" +monster.experience = 1800 +monster.outfit = { + lookType = 936, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1395 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "Astral Shaper Ruins in two small rooms on the second floor, and to the east.", +} + +monster.health = 3000 +monster.maxHealth = 3000 +monster.race = "blood" +monster.corpse = 25082 +monster.speed = 145 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "SNIFF!", yell = true }, +} + +monster.loot = { + { id = 5925, chance = 50320 }, -- hardened bone + { id = 24388, chance = 50320 }, -- rhino hide + { id = 24389, chance = 50320 }, -- rhino horn + { id = 22186, chance = 50320 }, -- raw meat +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -280 }, +} + +monster.defenses = { + defense = 10, + armor = 72, + mitigation = 1.88, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 0, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/terrified_elephant.lua b/data-canary/monster/mammals/terrified_elephant.lua new file mode 100644 index 00000000000..7750ddd09d0 --- /dev/null +++ b/data-canary/monster/mammals/terrified_elephant.lua @@ -0,0 +1,116 @@ +local mType = Game.createMonsterType("Terrified Elephant") +local monster = {} + +monster.description = "a terrified elephant" +monster.experience = 160 +monster.outfit = { + lookType = 211, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 771 +monster.Bestiary = { + class = "Mammal", + + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "East of Port Hope, close to the Deeper Banuta shortcut, Mapper Coords128.84127.16872texthere.", +} + +monster.health = 320 +monster.maxHealth = 320 +monster.race = "blood" +monster.corpse = 6052 +monster.speed = 105 +monster.manaCost = 500 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hooooot-Toooooot!", yell = false }, + { text = "Tooooot!", yell = false }, + { text = "Trooooot!", yell = false }, +} + +monster.loot = { + { name = "meat", chance = 40000, maxCount = 4 }, + { name = "ham", chance = 27000, maxCount = 9 }, + { name = "tusk", chance = 8510, maxCount = 2 }, + { name = "tusk shield", chance = 80 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, +} + +monster.defenses = { + defense = 0, + armor = 20, + mitigation = 0.41, + { name = "speed", interval = 2000, chance = 15, speedChange = 800, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/thieving_squirrel.lua b/data-canary/monster/mammals/thieving_squirrel.lua new file mode 100644 index 00000000000..73fc8bf2df9 --- /dev/null +++ b/data-canary/monster/mammals/thieving_squirrel.lua @@ -0,0 +1,97 @@ +local mType = Game.createMonsterType("Thieving Squirrel") +local monster = {} + +monster.description = "a thieving squirrel" +monster.experience = 15 +monster.outfit = { + lookType = 274, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 55 +monster.maxHealth = 55 +monster.race = "blood" +monster.corpse = 276 +monster.speed = 500 +monster.manaCost = 220 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = false, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 55, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Chchch", yell = false }, +} + +monster.loot = { + { id = 9843, chance = 100000 }, -- flask with beaver bait + { id = 841, chance = 4550 }, -- peanut +} + +monster.attacks = {} + +monster.defenses = { + defense = 5, + armor = 5, + mitigation = 0.10, + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/thornfire_wolf.lua b/data-canary/monster/mammals/thornfire_wolf.lua new file mode 100644 index 00000000000..1490259289e --- /dev/null +++ b/data-canary/monster/mammals/thornfire_wolf.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Thornfire Wolf") +local monster = {} + +monster.description = "a thornfire wolf" +monster.experience = 200 +monster.outfit = { + lookType = 414, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 739 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Shadowthorn.", +} + +monster.health = 600 +monster.maxHealth = 600 +monster.race = "venom" +monster.corpse = 12717 +monster.speed = 160 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 5, + color = 206, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hfffff!", yell = false }, + { text = "Rrrrrr!", yell = false }, + { text = "Graaawwwr!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 64000, maxCount = 53 }, + { name = "meat", chance = 34000 }, + { name = "wolf paw", chance = 7900 }, + { name = "flaming arrow", chance = 15000, maxCount = 8 }, + { name = "fiery heart", chance = 7900 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -68 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -35, maxDamage = -70, range = 1, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -30, maxDamage = -70, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_EXPLOSIONHIT, target = true }, + { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 2, target = true }, +} + +monster.defenses = { + defense = 15, + armor = 18, + mitigation = 0.64, + { name = "combat", interval = 1000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 220, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 5 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/tiger.lua b/data-canary/monster/mammals/tiger.lua new file mode 100644 index 00000000000..6e6a263ff7d --- /dev/null +++ b/data-canary/monster/mammals/tiger.lua @@ -0,0 +1,113 @@ +local mType = Game.createMonsterType("Tiger") +local monster = {} + +monster.description = "a tiger" +monster.experience = 40 +monster.outfit = { + lookType = 125, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 125 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Tiquanda, Meriana, Arena and Zoo Quarter. Three unreachable ones are found in the Rookgaard Academy, \z + below Ankrahmun (during the Nomads Land Quest), and on Charles's ship.", +} + +monster.health = 75 +monster.maxHealth = 75 +monster.race = "blood" +monster.corpse = 6051 +monster.speed = 100 +monster.manaCost = 420 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "meat", chance = 35190, maxCount = 4 }, + { name = "striped fur", chance = 10830 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, +} + +monster.defenses = { + defense = 15, + armor = 5, + mitigation = 0.38, + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/vampire_pig.lua b/data-canary/monster/mammals/vampire_pig.lua new file mode 100644 index 00000000000..bc606617de9 --- /dev/null +++ b/data-canary/monster/mammals/vampire_pig.lua @@ -0,0 +1,115 @@ +local mType = Game.createMonsterType("Vampire Pig") +local monster = {} + +monster.description = "a vampire pig" +monster.experience = 165 +monster.outfit = { + lookType = 60, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 558 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "Isle of Evil on the surface.", +} + +monster.health = 305 +monster.maxHealth = 305 +monster.race = "blood" +monster.corpse = 6000 +monster.speed = 55 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 30, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Oink", yell = false }, + { text = "Oink oink", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 90000, maxCount = 40 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -25, radius = 4, effect = CONST_ME_BATS, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -35, maxDamage = -55, range = 3, target = true }, +} + +monster.defenses = { + defense = 35, + armor = 20, + mitigation = 0.62, + { name = "outfit", interval = 2000, chance = 20, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 1500, outfitMonster = "mutated bat" }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/vulcongra.lua b/data-canary/monster/mammals/vulcongra.lua new file mode 100644 index 00000000000..3c728dd8da6 --- /dev/null +++ b/data-canary/monster/mammals/vulcongra.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Vulcongra") +local monster = {} + +monster.description = "a vulcongra" +monster.experience = 1100 +monster.outfit = { + lookType = 509, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 898 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Hot Spot (in Gnomebase Alpha) and Lower Spike.", +} + +monster.health = 1600 +monster.maxHealth = 1600 +monster.race = "fire" +monster.corpse = 16186 +monster.speed = 160 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 220, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Fuchah!", yell = false }, + { text = "Fuchah! Fuchah!", yell = false }, + { text = "Yag! Yag! Yag!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 7 }, + { name = "platinum coin", chance = 14780 }, + { name = "wand of inferno", chance = 1000 }, + { id = 3091, chance = 2920 }, -- sword ring + { name = "fire sword", chance = 260 }, + { name = "banana", chance = 10420, maxCount = 10 }, + { name = "strong health potion", chance = 7100 }, + { name = "strong mana potion", chance = 7100 }, + { name = "magma amulet", chance = 970 }, + { name = "magma coat", chance = 140 }, + { name = "fiery heart", chance = 9380 }, + { id = 12600, chance = 940 }, -- coal + { name = "brown crystal splinter", chance = 4850 }, + { name = "red crystal fragment", chance = 2280 }, + { name = "magma clump", chance = 12440 }, + { name = "blazing bone", chance = 8030 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -235 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -195, maxDamage = -340, length = 8, spread = 0, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -200, range = 7, shootEffect = CONST_ANI_FIRE, target = true }, + { name = "vulcongra soulfire", interval = 3000, chance = 100, target = false }, +} + +monster.defenses = { + defense = 35, + armor = 50, + mitigation = 1.46, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/war_wolf.lua b/data-canary/monster/mammals/war_wolf.lua new file mode 100644 index 00000000000..4128c475dc8 --- /dev/null +++ b/data-canary/monster/mammals/war_wolf.lua @@ -0,0 +1,113 @@ +local mType = Game.createMonsterType("War Wolf") +local monster = {} + +monster.description = "a war wolf" +monster.experience = 55 +monster.outfit = { + lookType = 3, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 3 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Orc Fort, the Orc Peninsula, Magician Tower and northwest tower or south underground of Thais, Zao steppe encaged, Vengoth.", +} + +monster.health = 140 +monster.maxHealth = 140 +monster.race = "blood" +monster.corpse = 6009 +monster.speed = 132 +monster.manaCost = 420 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Yoooohhuuuu!", yell = false }, + { text = "Grrrrrrr", yell = false }, +} + +monster.loot = { + { name = "ham", chance = 35000, maxCount = 2 }, + { name = "wolf paw", chance = 710 }, + { name = "warwolf fur", chance = 5230 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, +} + +monster.defenses = { + defense = 15, + armor = 8, + mitigation = 0.41, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = true }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/water_buffalo.lua b/data-canary/monster/mammals/water_buffalo.lua new file mode 100644 index 00000000000..5234de84aa8 --- /dev/null +++ b/data-canary/monster/mammals/water_buffalo.lua @@ -0,0 +1,117 @@ +local mType = Game.createMonsterType("Water Buffalo") +local monster = {} + +monster.description = "a water buffalo" +monster.experience = 20 +monster.outfit = { + lookType = 523, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 872 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 30, + Stars = 2, + Occurrence = 3, + Locations = "It raids every four hours, starting at server save, in groups of one to three at \z + various places around Venore swamp, especially near the southern production site.", +} + +monster.health = 390 +monster.maxHealth = 390 +monster.race = "blood" +monster.corpse = 17421 +monster.speed = 75 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Gnarrr!", yell = false }, + { text = "Gnoorr!", yell = false }, + { text = "Mrrr!", yell = false }, + { text = "", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 20 }, + { name = "meat", chance = 33600, maxCount = 4 }, + { name = "ham", chance = 39200, maxCount = 3 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, +} + +monster.defenses = { + defense = 5, + armor = 35, + mitigation = 1.04, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/white_deer.lua b/data-canary/monster/mammals/white_deer.lua new file mode 100644 index 00000000000..7c346ee69a6 --- /dev/null +++ b/data-canary/monster/mammals/white_deer.lua @@ -0,0 +1,112 @@ +local mType = Game.createMonsterType("White Deer") +local monster = {} + +monster.description = "a white deer" +monster.experience = 0 +monster.outfit = { + lookType = 400, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "WhiteDeerDeath", +} + +monster.raceId = 720 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 250, + FirstUnlock = 10, + SecondUnlock = 100, + CharmsPoints = 5, + Stars = 1, + Occurrence = 2, + Locations = "Around AbDendriel, Carlin east from Lothar, Femor Hills and Ferngrims Gate, usually in pairs. They will appear when they're not overhunted.", +} + +monster.health = 195 +monster.maxHealth = 195 +monster.race = "blood" +monster.corpse = 0 +monster.speed = 104 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = false, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 195, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "*bell*", yell = false }, + { text = "ROOOAAARR!!", yell = true }, + { text = "*sniff*", yell = false }, + { text = "*wheeze*", yell = false }, +} + +monster.loot = {} + +monster.defenses = { + defense = 5, + armor = 2, + mitigation = 0.56, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/white_lion.lua b/data-canary/monster/mammals/white_lion.lua new file mode 100644 index 00000000000..0330aca13c0 --- /dev/null +++ b/data-canary/monster/mammals/white_lion.lua @@ -0,0 +1,120 @@ +local mType = Game.createMonsterType("White Lion") +local monster = {} + +monster.description = "a white lion" +monster.experience = 2300 +monster.outfit = { + lookType = 1290, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1967 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Lion Sanctum.", +} + +monster.health = 2700 +monster.maxHealth = 2700 +monster.race = "blood" +monster.corpse = 34245 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 15, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 5, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 5 }, + { name = "great spirit potion", chance = 5000, maxCount = 2 }, + { name = "lion's mane", chance = 5000 }, + { name = "green crystal shard", chance = 5000, maxCount = 2 }, + { name = "cyan crystal fragment", chance = 1500 }, + { name = "green crystal fragment", chance = 1500 }, + { name = "terra boots", chance = 5000 }, + { name = "axe", chance = 5000 }, + { name = "leather boots", chance = 5000 }, + { name = "twin hooks", chance = 5000 }, + { name = "war hammer", chance = 1500 }, + { name = "combat knife", chance = 1500 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 0, minDamage = 0, maxDamage = -300 }, + { name = "combat", interval = 2000, chance = 0, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -400, range = 1, effect = CONST_ME_HOLYAREA, target = false }, + { name = "combat", interval = 2000, chance = 0, type = COMBAT_HOLYDAMAGE, minDamage = -250, maxDamage = -350, range = 1, radius = 2, effect = CONST_ME_HOLYAREA, target = false }, + { name = "combat", interval = 2000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -350, range = 1, radius = 2, effect = CONST_ME_EXPLOSIONAREA, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 38, + mitigation = 0.91, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 30 }, + { type = COMBAT_FIREDAMAGE, percent = 25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 40 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/white_tiger.lua b/data-canary/monster/mammals/white_tiger.lua new file mode 100644 index 00000000000..3d34267d2fb --- /dev/null +++ b/data-canary/monster/mammals/white_tiger.lua @@ -0,0 +1,112 @@ +local mType = Game.createMonsterType("White Tiger") +local monster = {} + +monster.description = "a white tiger" +monster.experience = 40 +monster.outfit = { + lookType = 1649, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2391 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Oskayaat", +} + +monster.health = 75 +monster.maxHealth = 75 +monster.race = "blood" +monster.corpse = 43771 +monster.speed = 110 +monster.manaCost = 420 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "meat", chance = 35190, maxCount = 4 }, + { name = "striped fur", chance = 10830 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, +} + +monster.defenses = { + defense = 15, + armor = 5, + mitigation = 0.38, + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/wild_dog.lua b/data-canary/monster/mammals/wild_dog.lua new file mode 100644 index 00000000000..2aae5f1a488 --- /dev/null +++ b/data-canary/monster/mammals/wild_dog.lua @@ -0,0 +1,94 @@ +local mType = Game.createMonsterType("Wild Dog") +local monster = {} + +monster.description = "a wild dog" +monster.experience = 0 +monster.outfit = { + lookType = 32, + lookHead = 20, + lookBody = 30, + lookLegs = 40, + lookFeet = 50, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 20 +monster.maxHealth = 20 +monster.race = "blood" +monster.corpse = 5971 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = false, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 20, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Wuff wuff", yell = false }, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 }, +} + +monster.defenses = { + defense = 2, + armor = 1, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/wild_horse.lua b/data-canary/monster/mammals/wild_horse.lua new file mode 100644 index 00000000000..06d51a73e99 --- /dev/null +++ b/data-canary/monster/mammals/wild_horse.lua @@ -0,0 +1,106 @@ +local mType = Game.createMonsterType("Wild Horse") +local monster = {} + +monster.description = "a wild horse" +monster.experience = 0 +monster.outfit = { + lookType = 393, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 730 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 10, + Stars = 1, + Occurrence = 3, + Locations = "Near the Thais Troll Cave entrance during the Horse Station World Change.", +} + +monster.health = 75 +monster.maxHealth = 75 +monster.race = "blood" +monster.corpse = 0 +monster.speed = 124 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = false, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 75, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Weeeeheeeeeee", yell = false }, + { text = "*snort*", yell = false }, + { text = "*Weeeeheeeeaaa*", yell = false }, +} + +monster.loot = {} + +monster.defenses = { + defense = 5, + armor = 10, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/winter_wolf.lua b/data-canary/monster/mammals/winter_wolf.lua new file mode 100644 index 00000000000..b0a9d12f8a0 --- /dev/null +++ b/data-canary/monster/mammals/winter_wolf.lua @@ -0,0 +1,111 @@ +local mType = Game.createMonsterType("Winter Wolf") +local monster = {} + +monster.description = "a winter wolf" +monster.experience = 20 +monster.outfit = { + lookType = 52, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 52 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 250, + FirstUnlock = 10, + SecondUnlock = 100, + CharmsPoints = 5, + Stars = 1, + Occurrence = 0, + Locations = "Ice Islands.", +} + +monster.health = 30 +monster.maxHealth = 30 +monster.race = "blood" +monster.corpse = 5997 +monster.speed = 85 +monster.manaCost = 260 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Yoooohhuuuu!", yell = false }, +} + +monster.loot = { + { name = "meat", chance = 30000, maxCount = 2 }, + { name = "winter wolf fur", chance = 10000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, +} + +monster.defenses = { + defense = 5, + armor = 2, + mitigation = 0.15, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/wolf.lua b/data-canary/monster/mammals/wolf.lua new file mode 100644 index 00000000000..2b1a13734e9 --- /dev/null +++ b/data-canary/monster/mammals/wolf.lua @@ -0,0 +1,112 @@ +local mType = Game.createMonsterType("Wolf") +local monster = {} + +monster.description = "a wolf" +monster.experience = 18 +monster.outfit = { + lookType = 27, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 27 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 250, + FirstUnlock = 10, + SecondUnlock = 100, + CharmsPoints = 5, + Stars = 1, + Occurrence = 0, + Locations = "In almost all grass areas in Tibia, also found in Rookgaard and Dawnport.", +} + +monster.health = 25 +monster.maxHealth = 25 +monster.race = "blood" +monster.corpse = 5968 +monster.speed = 82 +monster.manaCost = 255 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 8, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Yoooohhuuuu!", yell = false }, + { text = "Grrrrrrr", yell = false }, +} + +monster.loot = { + { name = "meat", chance = 55000, maxCount = 2 }, + { name = "wolf paw", chance = 980 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, +} + +monster.defenses = { + defense = 5, + armor = 1, + mitigation = 0.10, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/mammals/yeti.lua b/data-canary/monster/mammals/yeti.lua new file mode 100644 index 00000000000..80b4a8a0c29 --- /dev/null +++ b/data-canary/monster/mammals/yeti.lua @@ -0,0 +1,119 @@ +local mType = Game.createMonsterType("Yeti") +local monster = {} + +monster.description = "a yeti" +monster.experience = 460 +monster.outfit = { + lookType = 110, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 110 +monster.Bestiary = { + class = "Mammal", + race = BESTY_RACE_MAMMAL, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Folda, Chyllfroest, Isle of Merriment.", +} + +monster.health = 950 +monster.maxHealth = 950 +monster.race = "blood" +monster.corpse = 6038 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Yooodelaaahooohooo", yell = false }, + { text = "Yooodelaaaheehee", yell = false }, +} + +monster.loot = { + { id = 2992, chance = 10000, maxCount = 22 }, -- snowball + { name = "gold coin", chance = 100000, maxCount = 60 }, + { name = "gold coin", chance = 100000, maxCount = 40 }, + { name = "bunnyslippers", chance = 1333 }, + { name = "meat", chance = 33333, maxCount = 4 }, + { name = "ham", chance = 10000, maxCount = 5 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, +} + +monster.defenses = { + defense = 33, + armor = 28, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -8 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/nostalgia/old_bear.lua b/data-canary/monster/nostalgia/old_bear.lua new file mode 100644 index 00000000000..e78a9cbf00d --- /dev/null +++ b/data-canary/monster/nostalgia/old_bear.lua @@ -0,0 +1,99 @@ +local mType = Game.createMonsterType("Old Bear") +local monster = {} + +monster.name = "Bear" +monster.description = "a bear" +monster.experience = 23 +monster.outfit = { + lookType = 919, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 80 +monster.maxHealth = 80 +monster.race = "blood" +monster.corpse = 5975 +monster.speed = 78 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grrrr", yell = false }, + { text = "Groar", yell = false }, +} + +monster.loot = { + { name = "meat", chance = 39750, maxCount = 5 }, + { name = "ham", chance = 20000, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -25 }, +} + +monster.defenses = { + defense = 10, + armor = 10, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/nostalgia/old_bonelord.lua b/data-canary/monster/nostalgia/old_bonelord.lua new file mode 100644 index 00000000000..90d99dee2ce --- /dev/null +++ b/data-canary/monster/nostalgia/old_bonelord.lua @@ -0,0 +1,120 @@ +local mType = Game.createMonsterType("Old Beholder") +local monster = {} + +monster.name = "Beholder" +monster.description = "a beholder" +monster.experience = 170 +monster.outfit = { + lookType = 924, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 260 +monster.maxHealth = 260 +monster.race = "venom" +monster.corpse = 5992 +monster.speed = 85 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 6, + summons = { + { name = "Skeleton", chance = 20, interval = 2000, count = 6 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Olho por Olho!", yell = false }, + { text = "Estou olhando para voce!", yell = false }, + { text = "Deixe-me dar uma olhada em voce!", yell = false }, + { text = "Voce tem o olhar!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 65000, maxCount = 82 }, + { id = 3059, chance = 4650 }, -- spellbook + { name = "two handed sword", chance = 3840 }, + { name = "morning star", chance = 6950 }, + { name = "longsword", chance = 8980 }, + { name = "steel shield", chance = 4001 }, + { name = "bonelord eye", chance = 940 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_ENERGYDAMAGE, minDamage = -15, maxDamage = -45, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_FIREDAMAGE, minDamage = -25, maxDamage = -45, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -50, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = -5, maxDamage = -45, range = 7, shootEffect = CONST_ANI_POISON, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -5, maxDamage = -50, range = 7, shootEffect = CONST_ANI_DEATH, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -45, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_MANADRAIN, minDamage = -5, maxDamage = -35, range = 7, target = false }, +} + +monster.defenses = { + defense = 10, + armor = 10, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/nostalgia/old_bug.lua b/data-canary/monster/nostalgia/old_bug.lua new file mode 100644 index 00000000000..096a64f5c6c --- /dev/null +++ b/data-canary/monster/nostalgia/old_bug.lua @@ -0,0 +1,97 @@ +local mType = Game.createMonsterType("Old Bug") +local monster = {} + +monster.name = "Bug" +monster.description = "a bug" +monster.experience = 18 +monster.outfit = { + lookType = 920, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 29 +monster.maxHealth = 29 +monster.race = "venom" +monster.corpse = 5990 +monster.speed = 80 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 51170, maxCount = 6 }, + { name = "cherry", chance = 2590, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -23 }, +} + +monster.defenses = { + defense = 5, + armor = 5, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/nostalgia/old_giant_spider.lua b/data-canary/monster/nostalgia/old_giant_spider.lua new file mode 100644 index 00000000000..ebac5e23c18 --- /dev/null +++ b/data-canary/monster/nostalgia/old_giant_spider.lua @@ -0,0 +1,107 @@ +local mType = Game.createMonsterType("Old Giant Spider") +local monster = {} + +monster.name = "Giant Spider" +monster.description = "a giant spider" +monster.experience = 900 +monster.outfit = { + lookType = 910, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 1300 +monster.maxHealth = 1300 +monster.race = "venom" +monster.corpse = 5977 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 85 }, -- gold coin + { id = 3448, chance = 11900, maxCount = 11 }, -- poison arrow + { id = 3557, chance = 7933 }, -- plate legs + { id = 3357, chance = 10010 }, -- plate armor + { id = 3351, chance = 4945 }, -- steel helmet + { id = 236, chance = 3571 }, -- strong health potion + { id = 3371, chance = 850 }, -- knight legs + { id = 3055, chance = 280 }, -- platinum amulet + { id = 3370, chance = 500 }, -- knight armor +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, + { name = "poisonfield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -70, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, +} + +monster.defenses = { + defense = 25, + armor = 25, + { name = "speed", interval = 2000, chance = 15, speedChange = 390, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/nostalgia/old_pig.lua b/data-canary/monster/nostalgia/old_pig.lua new file mode 100644 index 00000000000..5cca68ad2a1 --- /dev/null +++ b/data-canary/monster/nostalgia/old_pig.lua @@ -0,0 +1,95 @@ +local mType = Game.createMonsterType("Old Pig") +local monster = {} + +monster.name = "Pig" +monster.description = "a pig" +monster.experience = 0 +monster.outfit = { + lookType = 921, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 25 +monster.maxHealth = 25 +monster.race = "blood" +monster.corpse = 6000 +monster.speed = 57 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = false, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 25, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Oink oink", yell = false }, + { text = "Oink", yell = false }, +} + +monster.loot = { + { name = "meat", chance = 64000, maxCount = 4 }, + { name = "pig foot", chance = 950 }, +} + +monster.defenses = { + defense = 5, + armor = 10, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/nostalgia/old_spider.lua b/data-canary/monster/nostalgia/old_spider.lua new file mode 100644 index 00000000000..1183da9ef1a --- /dev/null +++ b/data-canary/monster/nostalgia/old_spider.lua @@ -0,0 +1,97 @@ +local mType = Game.createMonsterType("Old Spider") +local monster = {} + +monster.name = "Spider" +monster.description = "a spider" +monster.experience = 12 +monster.outfit = { + lookType = 922, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 20 +monster.maxHealth = 20 +monster.race = "venom" +monster.corpse = 5961 +monster.speed = 76 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 6, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 65150, maxCount = 5 }, + { name = "spider fangs", chance = 960 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -9 }, +} + +monster.defenses = { + defense = 2, + armor = 2, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/nostalgia/old_wasp.lua b/data-canary/monster/nostalgia/old_wasp.lua new file mode 100644 index 00000000000..bae075bcb2a --- /dev/null +++ b/data-canary/monster/nostalgia/old_wasp.lua @@ -0,0 +1,97 @@ +local mType = Game.createMonsterType("Old Wasp") +local monster = {} + +monster.name = "Wasp" +monster.description = "a wasp" +monster.experience = 24 +monster.outfit = { + lookType = 923, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 35 +monster.maxHealth = 35 +monster.race = "venom" +monster.corpse = 5989 +monster.speed = 160 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Bssssss", yell = false }, +} + +monster.loot = { + { name = "honeycomb", chance = 3000 }, +} + +monster.attacks = { + { name = "melee", interval = 1500, chance = 100, minDamage = 0, maxDamage = -20, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } }, +} + +monster.defenses = { + defense = 10, + armor = 10, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/nostalgia/old_wolf.lua b/data-canary/monster/nostalgia/old_wolf.lua new file mode 100644 index 00000000000..595d1bef28c --- /dev/null +++ b/data-canary/monster/nostalgia/old_wolf.lua @@ -0,0 +1,98 @@ +local mType = Game.createMonsterType("Old Wolf") +local monster = {} + +monster.name = "Wolf" +monster.description = "a wolf" +monster.experience = 18 +monster.outfit = { + lookType = 918, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 25 +monster.maxHealth = 25 +monster.race = "blood" +monster.corpse = 5968 +monster.speed = 82 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 8, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Yoooohhuuuu!", yell = false }, + { text = "Grrrrrrr", yell = false }, +} + +monster.loot = { + { name = "meat", chance = 55000, maxCount = 4 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -20 }, +} + +monster.defenses = { + defense = 5, + armor = 5, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 5 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 5 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/plants/bane_bringer.lua b/data-canary/monster/plants/bane_bringer.lua new file mode 100644 index 00000000000..243f7562cb3 --- /dev/null +++ b/data-canary/monster/plants/bane_bringer.lua @@ -0,0 +1,116 @@ +local mType = Game.createMonsterType("Bane Bringer") +local monster = {} + +monster.description = "a bane bringer" +monster.experience = 400 +monster.outfit = { + lookType = 310, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 679 +monster.Bestiary = { + class = "Plant", + race = BESTY_RACE_PLANT, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Green Claw Swamp underground, near the big witches' cauldron.", +} + +monster.health = 2500 +monster.maxHealth = 2500 +monster.race = "venom" +monster.corpse = 8953 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 0, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "You shall not succeed!", yell = false }, + { text = "This time we will prevail!", yell = false }, +} + +monster.loot = { + { id = 3135, chance = 15220, maxCount = 96 }, -- wooden trash + { name = "dry piece of wood", chance = 100000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, +} + +monster.defenses = { + defense = 0, + armor = 17, + mitigation = 0.56, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 90 }, + { type = COMBAT_EARTHDAMAGE, percent = 90 }, + { type = COMBAT_FIREDAMAGE, percent = 90 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 90 }, + { type = COMBAT_HOLYDAMAGE, percent = 90 }, + { type = COMBAT_DEATHDAMAGE, percent = 90 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/plants/carniphila.lua b/data-canary/monster/plants/carniphila.lua new file mode 100644 index 00000000000..4251cde140a --- /dev/null +++ b/data-canary/monster/plants/carniphila.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Carniphila") +local monster = {} + +monster.description = "a carniphila" +monster.experience = 150 +monster.outfit = { + lookType = 120, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 120 +monster.Bestiary = { + class = "Plant", + race = BESTY_RACE_PLANT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Deep inside the Tiquanda Jungle including Tiquanda Laboratory and a small cave, \z + Forbidden Lands, Deeper Banuta, Arena and Zoo quarter in Yalahar.", +} + +monster.health = 255 +monster.maxHealth = 255 +monster.race = "venom" +monster.corpse = 6047 +monster.speed = 55 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 90000, maxCount = 40 }, + { name = "corncob", chance = 890 }, + { name = "dark mushroom", chance = 7692 }, + { name = "sling herb", chance = 446, maxCount = 2 }, + { name = "shadow herb", chance = 880 }, + { name = "seeds", chance = 490 }, + { name = "carniphila seeds", chance = 4166 }, + { name = "carrot on a stick", chance = 170 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, condition = { type = CONDITION_POISON, totalDamage = 100, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -95, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -800, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false, duration = 30000 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -130, radius = 3, effect = CONST_ME_POISONAREA, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 22, + mitigation = 0.51, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/plants/glooth_anemone.lua b/data-canary/monster/plants/glooth_anemone.lua new file mode 100644 index 00000000000..221cd859f10 --- /dev/null +++ b/data-canary/monster/plants/glooth_anemone.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Glooth Anemone") +local monster = {} + +monster.description = "a glooth anemone" +monster.experience = 1755 +monster.outfit = { + lookType = 604, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1042 +monster.Bestiary = { + class = "Plant", + race = BESTY_RACE_PLANT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Rathleton Sewers, Underground Glooth Factory, Jaccus Maxxen's Dungeon.", +} + +monster.health = 2400 +monster.maxHealth = 2400 +monster.race = "venom" +monster.corpse = 20988 +monster.speed = 90 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 3, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "*shglib*", yell = false }, +} + +monster.loot = { + { id = 21144, chance = 3190 }, -- bowl of glooth soup + { id = 21197, chance = 2020 }, -- slimy leaf tentacle + { id = 3732, chance = 3180 }, -- green mushroom + { id = 21183, chance = 320 }, -- glooth amulet + { id = 3031, chance = 100000, maxCount = 170 }, -- gold coin + { id = 236, chance = 6690, maxCount = 2 }, -- strong health potion + { id = 237, chance = 6690, maxCount = 2 }, -- strong mana potion + { id = 7643, chance = 960 }, -- ultimate health potion + { id = 3035, chance = 57320, maxCount = 3 }, -- platinum coin + { id = 9057, chance = 1240, maxCount = 3 }, -- small topaz + { id = 3032, chance = 1600, maxCount = 3 }, -- small emerald + { id = 3030, chance = 1150, maxCount = 3 }, -- small ruby + { id = 21164, chance = 140 }, -- glooth cape + { id = 21172, chance = 700 }, -- glooth whip + { id = 21179, chance = 120 }, -- glooth blade + { id = 21178, chance = 370 }, -- glooth club + { id = 21180, chance = 240 }, -- glooth axe + { id = 21158, chance = 370 }, -- glooth spear +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 50 }, + { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -200, range = 7, radius = 4, shootEffect = CONST_ANI_GLOOTHSPEAR, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 2000, chance = 7, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -100, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_MAGIC_RED, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 42, + mitigation = 1.02, + { name = "combat", interval = 2000, chance = 9, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_GREEN, target = false }, + { name = "glooth anemone summon", interval = 2000, chance = 14, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 35 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/plants/haunted_treeling.lua b/data-canary/monster/plants/haunted_treeling.lua new file mode 100644 index 00000000000..c8b13f61553 --- /dev/null +++ b/data-canary/monster/plants/haunted_treeling.lua @@ -0,0 +1,131 @@ +local mType = Game.createMonsterType("Haunted Treeling") +local monster = {} + +monster.description = "a haunted treeling" +monster.experience = 310 +monster.outfit = { + lookType = 310, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 511 +monster.Bestiary = { + class = "Plant", + race = BESTY_RACE_PLANT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Vengoth surface, Vengoth Castle (Boreth's tower), Northern Zao Plantations, Tiquanda Laboratory, \z + Dryad Gardens.", +} + +monster.health = 450 +monster.maxHealth = 450 +monster.race = "undead" +monster.corpse = 8953 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 85, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Knarrrz", yell = false }, + { text = "Huuhuuhuuuhuuaarrr", yell = false }, + { text = "Knorrrrrr", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 91920, maxCount = 95 }, + { id = 3139, chance = 29190 }, -- wooden trash + { name = "red mushroom", chance = 7700 }, + { name = "health potion", chance = 5130 }, + { name = "white mushroom", chance = 5030, maxCount = 2 }, + { name = "haunted piece of wood", chance = 4950 }, + { name = "orange mushroom", chance = 1800 }, + { name = "strong health potion", chance = 1040 }, + { id = 3097, chance = 660 }, -- dwarven ring + { name = "small emerald", chance = 620 }, + { name = "bullseye potion", chance = 100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_MANADRAIN, minDamage = -30, maxDamage = -100, radius = 4, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 5, spread = 0, effect = CONST_ME_SMALLPLANTS, target = false, duration = 15000 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, radius = 1, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_CARNIPHILA, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -55, maxDamage = -100, radius = 4, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, radius = 1, effect = CONST_ME_POISONAREA, target = false }, +} + +monster.defenses = { + defense = 0, + armor = 20, + mitigation = 0.91, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/plants/hideous_fungus.lua b/data-canary/monster/plants/hideous_fungus.lua new file mode 100644 index 00000000000..275adb03b2f --- /dev/null +++ b/data-canary/monster/plants/hideous_fungus.lua @@ -0,0 +1,146 @@ +local mType = Game.createMonsterType("Hideous Fungus") +local monster = {} + +monster.description = "a hideous fungus" +monster.experience = 3700 +monster.outfit = { + lookType = 499, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 891 +monster.Bestiary = { + class = "Plant", + race = BESTY_RACE_PLANT, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Warzone 1, Rathleton Sewers, unreachable location in Tiquanda Laboratory.", +} + +monster.health = 4600 +monster.maxHealth = 4600 +monster.race = "venom" +monster.corpse = 16083 +monster.speed = 170 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 1, + summons = { + { name = "humorless fungus", chance = 10, interval = 2000, count = 1 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Munch munch munch!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 197 }, + { name = "platinum coin", chance = 100000, maxCount = 7 }, + { name = "war hammer", chance = 4010 }, + { name = "white piece of cloth", chance = 6430 }, + { name = "green piece of cloth", chance = 3003 }, + { name = "red piece of cloth", chance = 1820 }, + { name = "blue piece of cloth", chance = 3700 }, + { name = "great mana potion", chance = 7692 }, + { name = "great health potion", chance = 7220 }, + { name = "mana potion", chance = 9090 }, + { name = "terra mantle", chance = 800 }, + { name = "terra legs", chance = 920 }, + { name = "terra boots", chance = 2000 }, + { name = "terra amulet", chance = 2000 }, + { name = "mushroom backpack", chance = 20 }, + { name = "mushroom pie", chance = 14500, maxCount = 3 }, + { name = "muck rod", chance = 590 }, + { name = "hideous chunk", chance = 14285 }, + { name = "envenomed arrow", chance = 14500, maxCount = 15 }, + { name = "mycological bow", chance = 60 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -430, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_SMALLPLANTS, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -550, length = 8, spread = 0, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_ICEAREA, target = false }, + { name = "drunk", interval = 2000, chance = 10, range = 7, radius = 5, shootEffect = CONST_ANI_SMALLSTONE, effect = CONST_ME_STUN, target = true, duration = 4000 }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -400, maxDamage = -640, range = 7, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, +} + +monster.defenses = { + defense = 0, + armor = 60, + mitigation = 1.74, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 275, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_BLUE, duration = 2000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = 5 }, + { type = COMBAT_DEATHDAMAGE, percent = 35 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/plants/humongous_fungus.lua b/data-canary/monster/plants/humongous_fungus.lua new file mode 100644 index 00000000000..09f301a6a59 --- /dev/null +++ b/data-canary/monster/plants/humongous_fungus.lua @@ -0,0 +1,142 @@ +local mType = Game.createMonsterType("Humongous Fungus") +local monster = {} + +monster.description = "a humongous fungus" +monster.experience = 2900 +monster.outfit = { + lookType = 488, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 881 +monster.Bestiary = { + class = "Plant", + race = BESTY_RACE_PLANT, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Warzone 1, Rathleton Sewers, unreachable location in Tiquanda Laboratory.", +} + +monster.health = 3400 +monster.maxHealth = 3400 +monster.race = "blood" +monster.corpse = 15872 +monster.speed = 130 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 15, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Munch munch munch!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 200 }, + { name = "platinum coin", chance = 999900, maxCount = 6 }, + { name = "mushroom pie", chance = 17130, maxCount = 3 }, + { name = "brown piece of cloth", chance = 15120 }, + { name = "drill bolt", chance = 15120, maxCount = 15 }, + { name = "humongous chunk", chance = 10470 }, + { name = "white piece of cloth", chance = 10230 }, + { name = "strong health potion", chance = 5040, maxCount = 2 }, + { name = "great mana potion", chance = 4960, maxCount = 2 }, + { name = "great health potion", chance = 4950, maxCount = 2 }, + { name = "strong mana potion", chance = 4930, maxCount = 2 }, + { name = "mana potion", chance = 4750, maxCount = 3 }, + { name = "blue piece of cloth", chance = 4440 }, + { name = "red piece of cloth", chance = 2670 }, + { name = "terra amulet", chance = 2180 }, + { name = "terra boots", chance = 1950 }, + { name = "angelic axe", chance = 1420 }, + { name = "terra legs", chance = 1160 }, + { name = "terra mantle", chance = 870 }, + { name = "muck rod", chance = 640 }, + { name = "mushroom backpack", chance = 20 }, + { name = "mycological bow", chance = 140 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -330 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -180, maxDamage = -350, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_SMALLPLANTS, target = false }, + { name = "poisonfield", interval = 2000, chance = 10, radius = 4, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -500, maxDamage = -1000, length = 8, spread = 0, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -130, maxDamage = -260, length = 5, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -400, maxDamage = -640, range = 7, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, +} + +monster.defenses = { + defense = 0, + armor = 70, + mitigation = 2.02, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 225, maxDamage = 380, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = 5 }, + { type = COMBAT_DEATHDAMAGE, percent = 35 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/plants/leaf_golem.lua b/data-canary/monster/plants/leaf_golem.lua new file mode 100644 index 00000000000..4308ffd7d09 --- /dev/null +++ b/data-canary/monster/plants/leaf_golem.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Leaf Golem") +local monster = {} + +monster.description = "a leaf golem" +monster.experience = 45 +monster.outfit = { + lookType = 567, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 979 +monster.Bestiary = { + class = "Plant", + race = BESTY_RACE_PLANT, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Leaf dungeon in Hellgate, Lair of the Treeling Witch, Forest Fury Camp and in the \z + Forest Fury version of the Forsaken Mine.", +} + +monster.health = 90 +monster.maxHealth = 90 +monster.race = "undead" +monster.corpse = 19041 +monster.speed = 68 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "*crackle*", yell = false }, + { text = "*swwwwishhhh*", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 87460, maxCount = 27 }, + { name = "fir cone", chance = 14930 }, + { name = "dowser", chance = 12190 }, + { name = "swampling club", chance = 5130 }, + { name = "white mushroom", chance = 4920, maxCount = 3 }, + { name = "small emerald", chance = 950 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -15, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = true }, + { name = "speed", interval = 2000, chance = 20, speedChange = -600, radius = 3, effect = CONST_ME_SMALLPLANTS, target = false, duration = 9000 }, +} + +monster.defenses = { + defense = 10, + armor = 11, + mitigation = 0.41, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/plants/omnivora.lua b/data-canary/monster/plants/omnivora.lua new file mode 100644 index 00000000000..d13c6909bcd --- /dev/null +++ b/data-canary/monster/plants/omnivora.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Omnivora") +local monster = {} + +monster.description = "an omnivora" +monster.experience = 750 +monster.outfit = { + lookType = 717, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1141 +monster.Bestiary = { + class = "Plant", + race = BESTY_RACE_PLANT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Tiquanda Medusa Tower.", +} + +monster.health = 1200 +monster.maxHealth = 1200 +monster.race = "blood" +monster.corpse = 21995 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3031, chance = 97000, maxCount = 242 }, -- gold coin + { id = 3578, chance = 18200, maxCount = 2 }, -- fish + { id = 16124, chance = 2000 }, -- blue crystal splinter + { id = 16123, chance = 2000 }, -- brown crystal splinter + { id = 16122, chance = 2210 }, -- green crystal splinter + { id = 3582, chance = 1200 }, -- ham + { id = 3723, chance = 1900 }, -- white mushroom + { id = 3052, chance = 950 }, -- life ring + { id = 3297, chance = 780 }, -- serpent sword + { id = 814, chance = 700 }, -- terra amulet + { id = 813, chance = 560 }, -- terra boots + { id = 3069, chance = 430 }, -- necrotic rod + { id = 8072, chance = 320 }, -- spellbook of enlightenment + { id = 12311, chance = 100 }, -- carrot on a stick +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, + { name = "speed", interval = 4000, chance = 20, speedChange = -350, range = 7, shootEffect = CONST_ANI_POISON, target = true, duration = 12000 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -80, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISON, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -100, length = 8, spread = 0, effect = CONST_ME_POISONAREA, target = false }, +} + +monster.defenses = { + defense = 35, + armor = 38, + mitigation = 0.99, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 400, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/plants/spit_nettle.lua b/data-canary/monster/plants/spit_nettle.lua new file mode 100644 index 00000000000..3ca58c2e377 --- /dev/null +++ b/data-canary/monster/plants/spit_nettle.lua @@ -0,0 +1,117 @@ +local mType = Game.createMonsterType("Spit Nettle") +local monster = {} + +monster.description = "a spit nettle" +monster.experience = 20 +monster.outfit = { + lookType = 221, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 221 +monster.Bestiary = { + class = "Plant", + race = BESTY_RACE_PLANT, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Tiquanda, Trapwood, the outskirts of Chor and Forbidden Lands, Alchemist Quarter in Yalahar, \z + Tiquanda Laboratory.", +} + +monster.health = 150 +monster.maxHealth = 150 +monster.race = "venom" +monster.corpse = 6062 +monster.speed = 0 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 10750, maxCount = 5 }, + { name = "shadow herb", chance = 11080 }, + { name = "nettle spit", chance = 9620 }, + { name = "sling herb", chance = 5680, maxCount = 2 }, + { name = "nettle blossom", chance = 970 }, +} + +monster.attacks = { + { name = "combat", interval = 1000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -15, maxDamage = -40, range = 7, shootEffect = CONST_ANI_POISON, target = true }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -40, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISON, target = true }, +} + +monster.defenses = { + defense = 0, + armor = 12, + mitigation = 0.86, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 8, maxDamage = 16, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/plants/stalking_stalk.lua b/data-canary/monster/plants/stalking_stalk.lua new file mode 100644 index 00000000000..2415168d0a6 --- /dev/null +++ b/data-canary/monster/plants/stalking_stalk.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Stalking Stalk") +local monster = {} + +monster.description = "a stalking stalk" +monster.experience = 11569 +monster.outfit = { + lookType = 1554, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2272 +monster.Bestiary = { + class = "Plant", + race = BESTY_RACE_PLANT, + toKill = 5000, + FirstUnlock = 200, + SecondUnlock = 2000, + CharmsPoints = 100, + Stars = 5, + Occurrence = 0, + Locations = "Monster Graveyard", +} + +monster.health = 17100 +monster.maxHealth = 17100 +monster.race = "blood" +monster.corpse = 39307 +monster.speed = 190 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 2, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Sizzzle...", yell = false }, +} + +monster.loot = { + { name = "Stalking Seeds", chance = 21520 }, + { name = "Crystal Coin", chance = 16570, minCount = 1, maxCount = 3 }, + { name = "Small Diamond", chance = 7140, minCount = 1, maxCount = 3 }, + { name = "Green Crystal Fragment", chance = 5030 }, + { name = "Dragon Necklace", chance = 4540 }, + { name = "Opal", chance = 3960, minCount = 1, maxCount = 2 }, + { name = "Magma Coat", chance = 2160 }, + { name = "Bow", chance = 2000 }, + { name = "Green Gem", chance = 1780 }, + { name = "Warrior's Axe", chance = 1700 }, + { name = "Muck Rod", chance = 1310 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400, effect = CONST_ME_CARNIPHILA }, + { name = "combat", interval = 4000, chance = 40, type = COMBAT_FIREDAMAGE, minDamage = -800, maxDamage = -1050, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_HITBYFIRE, target = true }, + { name = "combat", interval = 2900, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -850, maxDamage = -1130, radius = 4, effect = CONST_ME_PLANTATTACK, target = false }, +} + +monster.defenses = { + defense = 110, + armor = 76, + mitigation = 2.11, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -25 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 25 }, + { type = COMBAT_FIREDAMAGE, percent = 25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) + +RegisterPrimalPackBeast(monster) diff --git a/data-canary/monster/plants/swampling.lua b/data-canary/monster/plants/swampling.lua new file mode 100644 index 00000000000..b2d243dfa62 --- /dev/null +++ b/data-canary/monster/plants/swampling.lua @@ -0,0 +1,120 @@ +local mType = Game.createMonsterType("Swampling") +local monster = {} + +monster.description = "a swampling" +monster.experience = 45 +monster.outfit = { + lookType = 535, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 919 +monster.Bestiary = { + class = "Plant", + race = BESTY_RACE_PLANT, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Venore swamp area, Venore Salamander Cave, Tiquanda Laboratory.", +} + +monster.health = 80 +monster.maxHealth = 80 +monster.race = "venom" +monster.corpse = 17622 +monster.speed = 95 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Gnark!", yell = false }, +} + +monster.loot = { + { id = 3003, chance = 5080 }, -- rope + { name = "gold coin", chance = 84900, maxCount = 12 }, + { name = "white mushroom", chance = 10220, maxCount = 5 }, + { name = "swampling club", chance = 7410 }, + { name = "swampling moss", chance = 19900 }, + { name = "piece of swampling wood", chance = 14870 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -2, maxDamage = -15, range = 7, shootEffect = CONST_ANI_POISON, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -300, length = 3, spread = 2, effect = CONST_ME_WATERSPLASH, target = false, duration = 5000 }, +} + +monster.defenses = { + defense = 10, + armor = 4, + mitigation = 0.25, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/plants/wilting_leaf_golem.lua b/data-canary/monster/plants/wilting_leaf_golem.lua new file mode 100644 index 00000000000..c9c4fd36e88 --- /dev/null +++ b/data-canary/monster/plants/wilting_leaf_golem.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Wilting Leaf Golem") +local monster = {} + +monster.description = "a wilting leaf golem" +monster.experience = 145 +monster.outfit = { + lookType = 573, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 982 +monster.Bestiary = { + class = "Plant", + race = BESTY_RACE_PLANT, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Forest Fury Camp, Lair of the Treeling Witch and in the Forest Fury version of the Forsaken Mine.", +} + +monster.health = 380 +monster.maxHealth = 380 +monster.race = "blood" +monster.corpse = 19117 +monster.speed = 74 +monster.manaCost = 390 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "*crackle*", yell = false }, + { text = "*swwwwishhhh*", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 97540, maxCount = 45 }, + { name = "fir cone", chance = 14950 }, + { name = "dowser", chance = 11880 }, + { name = "small emerald", chance = 1050 }, + { name = "white mushroom", chance = 5040, maxCount = 3 }, + { name = "swampling club", chance = 4890 }, +} + +monster.attacks = { + { name = "melee", interval = 1500, chance = 100, minDamage = 0, maxDamage = -120, condition = { type = CONDITION_POISON, totalDamage = 300, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -50, range = 7, radius = 1, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONHIT, target = true }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -150, maxDamage = -200, radius = 4, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "speed", interval = 2000, chance = 20, speedChange = -600, radius = 3, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, +} + +monster.defenses = { + defense = 0, + armor = 20, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/adult_goanna.lua b/data-canary/monster/reptiles/adult_goanna.lua new file mode 100644 index 00000000000..956af1034a1 --- /dev/null +++ b/data-canary/monster/reptiles/adult_goanna.lua @@ -0,0 +1,142 @@ +local mType = Game.createMonsterType("Adult Goanna") +local monster = {} + +monster.description = "an adult goanna" +monster.experience = 6650 +monster.outfit = { + lookType = 1195, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1818 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Green Belt.", +} + +monster.health = 8300 +monster.maxHealth = 8300 +monster.race = "blood" +monster.corpse = 31405 +monster.speed = 210 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 3 }, + { name = "envenomed arrow", chance = 60120, maxCount = 8 }, + { name = "earth arrow", chance = 13180, maxCount = 30 }, + { name = "emerald bangle", chance = 12240 }, + { name = "goanna meat", chance = 11650 }, + { name = "small enchanted emerald", chance = 10030 }, + { name = "green crystal splinter", chance = 9100 }, + { name = "terra rod", chance = 8250 }, + { name = "red goanna scale", chance = 7910 }, + { name = "blue crystal shard", chance = 7820 }, + { name = "small sapphire", chance = 6890, maxCount = 2 }, + { name = "terra hood", chance = 6630 }, + { name = "goanna claw", chance = 6210 }, + { name = "terra amulet", chance = 6040 }, + { name = "yellow gem", chance = 4250 }, + { name = "silver brooch", chance = 4000 }, + { name = "green gem", chance = 3150 }, + { name = "serpent sword", chance = 2810 }, + { name = "scared frog", chance = 2720 }, + { name = "opal", chance = 2640, maxCount = 2 }, + { name = "onyx chip", chance = 2640 }, + { name = "gemmed figurine", chance = 1530 }, + { name = "small amethyst", chance = 1360 }, + { name = "fur armor", chance = 1360 }, + { name = "wood cape", chance = 1280 }, + { name = "white pearl", chance = 1280 }, + { name = "small tortoise", chance = 1190 }, + { name = "sacred tree amulet", chance = 1020 }, + { name = "coral brooch", chance = 770 }, + { name = "lizard heart", chance = 770 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400, condition = { type = CONDITION_POISON, totalDamage = 200, interval = 4000 } }, + { name = "combat", interval = 2500, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -600, range = 3, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 3000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -380, radius = 2, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 3600, chance = 40, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -390, length = 8, spread = 3, effect = CONST_ME_GREEN_RINGS, target = false }, +} + +monster.defenses = { + defense = 84, + armor = 84, + mitigation = 2.6, + { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 25 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/boar_man.lua b/data-canary/monster/reptiles/boar_man.lua new file mode 100644 index 00000000000..0d142e332d4 --- /dev/null +++ b/data-canary/monster/reptiles/boar_man.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Boar Man") +local monster = {} + +monster.description = "a boar man" +monster.experience = 7720 +monster.outfit = { + lookType = 1603, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2339 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Ingol", +} + +monster.health = 9200 +monster.maxHealth = 9200 +monster.race = "blood" +monster.corpse = 42218 +monster.speed = 160 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Oink!", yell = false }, + { text = "Hungerrr!", yell = false }, + { text = "Grunt!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 78950, maxCount = 22 }, + { name = "red crystal fragment", chance = 9830, maxCount = 6 }, + { id = 3039, chance = 6390, maxCount = 2 }, -- red gem + { name = "boar man hoof", chance = 4640, maxCount = 2 }, + { name = "great health potion", chance = 3810, maxCount = 4 }, + { name = "sapphire hammer", chance = 2700 }, + { name = "crystal mace", chance = 2160 }, + { name = "crystal sword", chance = 1310 }, + { name = "tower shield", chance = 930 }, + { id = 3007, chance = 710 }, -- crystal ring +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -498 }, + { name = "combat", interval = 2300, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -375, maxDamage = -392, range = 7, shootEffect = CONST_ANI_THROWINGKNIFE, target = true }, + { name = "combat", interval = 2600, chance = 40, type = COMBAT_DEATHDAMAGE, minDamage = -386, maxDamage = -480, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, target = true }, + { name = "combat", interval = 2900, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -60, maxDamage = -140, range = 1, radius = 4, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 3200, chance = 35, type = COMBAT_ENERGYDAMAGE, minDamage = -311, maxDamage = -400, length = 8, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, +} + +monster.defenses = { + defense = 50, + armor = 72, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 15 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 5 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/carnivostrich.lua b/data-canary/monster/reptiles/carnivostrich.lua new file mode 100644 index 00000000000..e0ebbb811ed --- /dev/null +++ b/data-canary/monster/reptiles/carnivostrich.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Carnivostrich") +local monster = {} + +monster.description = "a carnivostrich" +monster.experience = 7290 +monster.outfit = { + lookType = 1605, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2341 +monster.Bestiary = { + class = "Bird", + race = BESTY_RACE_BIRD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Ingol", +} + +monster.health = 8250 +monster.maxHealth = 8250 +monster.race = "blood" +monster.corpse = 42226 +monster.speed = 168 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 3, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Yooohhouuu!", yell = false }, + { text = "GRROARR", yell = false }, + { text = "Grrrrrrrr!", yell = false }, + { text = "Yoooohhuuuu!!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 80450, maxCount = 28 }, + { name = "small ruby", chance = 16390, maxCount = 8 }, + { name = "small emerald", chance = 8330, maxCount = 8 }, + { name = "strong mana potion", chance = 4910, maxCount = 4 }, + { name = "carnivostrich feather", chance = 3470, maxCount = 4 }, + { name = "underworld rod", chance = 2420 }, + { name = "wand of voodoo", chance = 2110 }, + { name = "blue gem", chance = 2090 }, + { name = "spellbook of mind control", chance = 810 }, + { name = "boots of haste", chance = 620 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500, condition = { type = CONDITION_POISON, totalDamage = 480, interval = 4000 } }, + { name = "combat", interval = 2500, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -386, maxDamage = -480, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = true }, + { name = "combat", interval = 3000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -135, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = true }, + { name = "combat", interval = 3500, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -495, length = 7, spread = 0, effect = CONST_ME_BLACKSMOKE, target = false }, + { name = "combat", interval = 4000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -280, maxDamage = -320, length = 7, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "energy chain", interval = 4500, chance = 20, minDamage = -302, maxDamage = -309, range = 3, target = true }, + { name = "thunderstorm ring", interval = 5000, chance = 20, minDamage = -325, maxDamage = -415 }, +} + +monster.defenses = { + defense = 50, + armor = 63, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = -20 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/cobra.lua b/data-canary/monster/reptiles/cobra.lua new file mode 100644 index 00000000000..e05a21ad4d7 --- /dev/null +++ b/data-canary/monster/reptiles/cobra.lua @@ -0,0 +1,113 @@ +local mType = Game.createMonsterType("Cobra") +local monster = {} + +monster.description = "a cobra" +monster.experience = 30 +monster.outfit = { + lookType = 81, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 81 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Ankrahmun Library Tomb, Tarpit Tomb, Mountain Tomb, Peninsula Tomb, Darama, Tiquanda, \z + Drefia, Forbidden Lands, Arena Quarter, Lion's Rock.", +} + +monster.health = 65 +monster.maxHealth = 65 +monster.race = "blood" +monster.corpse = 4188 +monster.speed = 60 +monster.manaCost = 275 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Fsssss", yell = false }, + { text = "Zzzzzz", yell = false }, +} + +monster.loot = { + { name = "cobra tongue", chance = 5000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0, condition = { type = CONDITION_POISON, totalDamage = 100, interval = 4000 } }, -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -20, maxDamage = -40, range = 7, shootEffect = CONST_ANI_POISON, target = false }, +} + +monster.defenses = { + defense = 5, + armor = 1, + mitigation = 0.15, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/corrupt_naga.lua b/data-canary/monster/reptiles/corrupt_naga.lua new file mode 100644 index 00000000000..7292452428e --- /dev/null +++ b/data-canary/monster/reptiles/corrupt_naga.lua @@ -0,0 +1,99 @@ +local mType = Game.createMonsterType("Corrupt Naga") +local monster = {} + +monster.description = "a corrupt naga" +monster.experience = 4380 +monster.outfit = { + lookType = 1538, + lookHead = 86, + lookBody = 57, + lookLegs = 75, + lookFeet = 94, + lookAddons = 3, + lookMount = 0, +} + +monster.health = 5990 +monster.maxHealth = 5990 +monster.race = "blood" +monster.corpse = 39217 +monster.speed = 182 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "corrupt naga scales", chance = 17720 }, +} + +monster.attacks = { + { name = "combat", interval = 2000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = -120, maxDamage = -340, target = true }, -- basic_attack + { name = "combat", interval = 2500, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -320, maxDamage = -430, effect = CONST_ME_YELLOWSMOKE, range = 3, target = true }, -- eruption_strike + { name = "nagadeathattack", interval = 3000, chance = 35, minDamage = -360, maxDamage = -415, target = true }, -- death_strike + { name = "combat", interval = 3500, chance = 35, type = COMBAT_LIFEDRAIN, minDamage = -360, maxDamage = -386, radius = 4, effect = CONST_ME_DRAWBLOOD, target = false }, -- great_blood_ball +} + +monster.defenses = { + defense = 110, + armor = 0, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 25 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/crape_man.lua b/data-canary/monster/reptiles/crape_man.lua new file mode 100644 index 00000000000..83097403b9c --- /dev/null +++ b/data-canary/monster/reptiles/crape_man.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Crape Man") +local monster = {} + +monster.description = "a crape man" +monster.experience = 5040 +monster.outfit = { + lookType = 1601, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2337 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Ingol", +} + +monster.health = 9150 +monster.maxHealth = 9150 +monster.race = "blood" +monster.corpse = 42210 +monster.speed = 155 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Ungh! Ungh!", yell = false }, + { text = "Klack klack!", yell = false }, + { text = "Hugah!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 71540, maxCount = 28 }, + { name = "crab man claws", chance = 5210, maxCount = 2 }, + { name = "green gem", chance = 3010 }, + { name = "great health potion", chance = 2000, maxCount = 5 }, + { id = 281, chance = 1700 }, -- giant shimmering pearl (green) + { name = "guardian halberd", chance = 2400 }, + { name = "lightning legs", chance = 900 }, + { name = "warrior's shield", chance = 900 }, + { name = "glacier kilt", chance = 750 }, + { name = "noble axe", chance = 700 }, + { name = "hammer of wrath", chance = 400 }, + { name = "ring of the sky", chance = 300 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -498 }, + { name = "combat", interval = 3500, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -120, maxDamage = -320, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, target = true }, + { name = "combat", interval = 2500, chance = 50, type = COMBAT_ENERGYDAMAGE, minDamage = -330, maxDamage = -380, range = 7, radius = 4, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_PURPLEENERGY, target = true }, + { name = "combat", interval = 3000, chance = 65, type = COMBAT_ENERGYDAMAGE, minDamage = -311, maxDamage = -370, length = 3, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, +} + +monster.defenses = { + defense = 50, + armor = 80, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 25 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 5 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/crocodile.lua b/data-canary/monster/reptiles/crocodile.lua index dbadf10db52..cf15a880f69 100644 --- a/data-canary/monster/reptiles/crocodile.lua +++ b/data-canary/monster/reptiles/crocodile.lua @@ -75,10 +75,10 @@ monster.voices = { } monster.loot = { - { id = 3031, chance = 50000, maxCount = 10 }, -- gold coin - { id = 3582, chance = 40000 }, -- ham - { id = 3556, chance = 100 }, -- crocodile boots - { id = 10279, chance = 20180 }, -- piece of crocodile leather + { name = "gold coin", chance = 50000, maxCount = 10 }, + { name = "ham", chance = 40000 }, + { name = "crocodile boots", chance = 100 }, + { name = "piece of crocodile leather", chance = 20180 }, } monster.attacks = { @@ -87,11 +87,12 @@ monster.attacks = { monster.defenses = { defense = 15, - armor = 15, + armor = 13, + mitigation = 0.13, } monster.elements = { - { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, { type = COMBAT_ENERGYDAMAGE, percent = -5 }, { type = COMBAT_EARTHDAMAGE, percent = 20 }, { type = COMBAT_FIREDAMAGE, percent = -10 }, diff --git a/data-canary/monster/reptiles/dreadmaw.lua b/data-canary/monster/reptiles/dreadmaw.lua new file mode 100644 index 00000000000..2a8d79d9ce8 --- /dev/null +++ b/data-canary/monster/reptiles/dreadmaw.lua @@ -0,0 +1,104 @@ +local mType = Game.createMonsterType("Dreadmaw") +local monster = {} + +monster.description = "a dreadmaw" +monster.experience = 1500 +monster.outfit = { + lookType = 358, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.bosstiary = { + bossRaceId = 639, + bossRace = RARITY_NEMESIS, +} + +monster.health = 2000 +monster.maxHealth = 2000 +monster.race = "blood" +monster.corpse = 10221 +monster.speed = 95 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = true, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 99990, maxCount = 10 }, + { name = "gold ingot", chance = 99990 }, + { name = "ham", chance = 50000 }, + { name = "piece of crocodile leather", chance = 99990 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, +} + +monster.defenses = { + defense = 15, + armor = 15, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/emerald_tortoise.lua b/data-canary/monster/reptiles/emerald_tortoise.lua new file mode 100644 index 00000000000..d2b1a88246d --- /dev/null +++ b/data-canary/monster/reptiles/emerald_tortoise.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Emerald Tortoise") +local monster = {} + +monster.description = "an emerald tortoise" +monster.experience = 12129 +monster.outfit = { + lookType = 1550, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2268 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 5000, + FirstUnlock = 200, + SecondUnlock = 2000, + CharmsPoints = 100, + Stars = 5, + Occurrence = 0, + Locations = "Sparkling Pools", +} + +monster.health = 22300 +monster.maxHealth = 22300 +monster.race = "blood" +monster.corpse = 39291 +monster.speed = 179 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Shllpp...", yell = false }, +} + +monster.loot = { + { name = "Emerald Tortoise Shell", chance = 28590 }, + { name = "Crystal Coin", chance = 15520, minCount = 1, maxCount = 3 }, + { name = "Great Spirit Potion", chance = 13360, minCount = 1, maxCount = 2 }, + { name = "Blue Crystal Shard", chance = 4030 }, + { name = "Green Crystal Fragment", chance = 3950 }, + { name = "Violet Gem", chance = 3950 }, + { name = "Red Crystal Fragment", chance = 3350 }, + { name = "Yellow Gem", chance = 3320 }, + { name = "White Pearl", chance = 3240 }, + { name = "Green Crystal Shard", chance = 2900 }, + { name = "Green Gem", chance = 2870 }, + { name = "Orichalcum Pearl", chance = 2640, minCount = 1, maxCount = 2 }, + { id = 282, chance = 2420 }, -- Giant Shimmering Pearl (Green) + { id = 3039, chance = 2420 }, -- Red Gem + { name = "Black Pearl", chance = 2160, minCount = 1, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1250 }, + { name = "energy chain", interval = 5000, chance = 37, minDamage = -750, maxDamage = -1000, range = 3, target = true }, + { name = "combat", interval = 2700, chance = 35, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -600, range = 5, shootEffect = CONST_ANI_ENERGY, target = true }, + { name = "emerald tortoise large ring", interval = 3500, chance = 35, minDamage = -550, maxDamage = -1000 }, + { name = "emerald tortoise small ring", interval = 4500, chance = 20, minDamage = -550, maxDamage = -700 }, + { name = "emerald tortoise small explosion", interval = 3800, chance = 30, minDamage = -400, maxDamage = -600 }, + { name = "combat", interval = 4100, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -450, maxDamage = -750, radius = 3, effect = CONST_ME_BLUE_ENERGY_SPARK, target = false }, +} + +monster.defenses = { + defense = 110, + armor = 97, + mitigation = 2.57, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) + +RegisterPrimalPackBeast(monster) diff --git a/data-canary/monster/reptiles/fungosaurus.lua b/data-canary/monster/reptiles/fungosaurus.lua new file mode 100644 index 00000000000..f7e65e7eb9d --- /dev/null +++ b/data-canary/monster/reptiles/fungosaurus.lua @@ -0,0 +1,98 @@ +local mType = Game.createMonsterType("Fungosaurus") +local monster = {} + +monster.description = "a fungosaurus" +monster.experience = 0 +monster.outfit = { + lookType = 1555, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.health = 30000 +monster.maxHealth = 30000 +monster.race = "blood" +monster.corpse = 39311 +monster.speed = 182 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Rraaaaa!", yell = false }, + { text = "CHEHEHE!!!", yell = true }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 300, maxDamage = -801 }, + { name = "combat", interval = 3000, chance = 47, type = COMBAT_PHYSICALDAMAGE, minDamage = -800, maxDamage = -1500, effect = CONST_ME_YELLOWSMOKE, target = true }, + { name = "combat", interval = 4000, chance = 31, type = COMBAT_LIFEDRAIN, minDamage = -800, maxDamage = -1500, radius = 4, effect = CONST_ME_DRAWBLOOD, target = false }, + { name = "root", interval = 2000, chance = 3, target = true }, + { name = "fear", interval = 2000, chance = 3, target = true }, +} + +monster.defenses = { + defense = 110, + armor = 0, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/harpy.lua b/data-canary/monster/reptiles/harpy.lua new file mode 100644 index 00000000000..cf146658994 --- /dev/null +++ b/data-canary/monster/reptiles/harpy.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Harpy") +local monster = {} + +monster.description = "a harpy" +monster.experience = 5720 +monster.outfit = { + lookType = 1604, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2340 +monster.Bestiary = { + class = "Bird", + race = BESTY_RACE_BIRD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Ingol", +} + +monster.health = 7700 +monster.maxHealth = 7700 +monster.race = "blood" +monster.corpse = 42222 +monster.speed = 175 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 3, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Blood will flow!", yell = false }, + { text = "Shriek!", yell = false }, + { text = "Screech!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 73130, maxCount = 25 }, + { name = "harpy feathers", chance = 6720 }, + { name = "violet crystal shard", chance = 4690 }, + { name = "blue crystal shard", chance = 4530 }, + { name = "great spirit potion", chance = 2970, maxCount = 3 }, + { name = "gold ring", chance = 1720 }, + { name = "wand of defiance", chance = 1720 }, + { name = "focus cape", chance = 1560 }, + { name = "violet gem", chance = 1200 }, + { name = "ornate crossbow", chance = 500 }, + { name = "shockwave amulet", chance = 470 }, + { name = "magic plate armor", chance = 440 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -345 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -296, maxDamage = -350, range = 3, effect = CONST_ME_BIG_SCRATCH, target = true }, + { name = "energy ring", interval = 2000, chance = 20, minDamage = -280, maxDamage = -350 }, + { name = "energy chain", interval = 2000, chance = 20, minDamage = -155, maxDamage = -249, range = 3, target = true }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -310, maxDamage = -405, length = 5, spread = 3, effect = CONST_ME_SOUND_BLUE, target = false }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -320, maxDamage = -420, range = 7, radius = 4, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -425, maxDamage = -545, effect = CONST_ME_POISON, target = true }, +} + +monster.defenses = { + defense = 50, + armor = 58, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 25 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/killer_caiman.lua b/data-canary/monster/reptiles/killer_caiman.lua new file mode 100644 index 00000000000..5169a20f5b5 --- /dev/null +++ b/data-canary/monster/reptiles/killer_caiman.lua @@ -0,0 +1,119 @@ +local mType = Game.createMonsterType("Killer Caiman") +local monster = {} + +monster.description = "a killer caiman" +monster.experience = 900 +monster.outfit = { + lookType = 358, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 627 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Northern Zao Plantations, Souleater Mountains, Muggy Plains, \z + Killer Caiman Cave in the Zao Steppe, Chyllfroest.", +} + +monster.health = 1500 +monster.maxHealth = 1500 +monster.race = "blood" +monster.corpse = 10221 +monster.speed = 93 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 80 }, + { name = "small emerald", chance = 10150, maxCount = 5 }, + { name = "obsidian lance", chance = 4975 }, + { name = "ham", chance = 40100 }, + { name = "crocodile boots", chance = 510 }, + { id = 281, chance = 1130 }, -- giant shimmering pearl (green) + { name = "piece of crocodile leather", chance = 25430 }, + { name = "bunch of ripe rice", chance = 4800, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -180 }, +} + +monster.defenses = { + defense = 35, + armor = 40, + mitigation = 0.38, + { name = "speed", interval = 2000, chance = 15, speedChange = 700, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/liodile.lua b/data-canary/monster/reptiles/liodile.lua new file mode 100644 index 00000000000..b8021eea69b --- /dev/null +++ b/data-canary/monster/reptiles/liodile.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Liodile") +local monster = {} + +monster.description = "a liodile" +monster.experience = 6860 +monster.outfit = { + lookType = 1602, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2338 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Ingol", +} + +monster.health = 8600 +monster.maxHealth = 8600 +monster.race = "blood" +monster.corpse = 42214 +monster.speed = 165 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Growl!", yell = false }, + { text = "Meat!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 80540, maxCount = 23 }, + { name = "small sapphire", chance = 9790, maxCount = 4 }, + { name = "green crystal shard", chance = 5360 }, + { name = "liodile fang", chance = 4030, maxCount = 3 }, + { name = "yellow gem", chance = 3720 }, + { name = "assassin dagger", chance = 2600 }, + { name = "terra legs", chance = 2420 }, + { name = "springsprout rod", chance = 1610 }, + { name = "sacred tree amulet", chance = 830 }, + { name = "leviathan's amulet", chance = 720 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_EARTHDAMAGE, minDamage = -325, maxDamage = -400, range = 7, shootEffect = CONST_ANI_POISONARROW, target = true }, + { name = "combat", interval = 2000, chance = 34, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -400, range = 2, effect = CONST_ME_GROUNDSHAKER, target = true }, +} + +monster.defenses = { + defense = 50, + armor = 71, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = -20 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/lizard_chosen.lua b/data-canary/monster/reptiles/lizard_chosen.lua new file mode 100644 index 00000000000..fc6ddad3d4a --- /dev/null +++ b/data-canary/monster/reptiles/lizard_chosen.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Lizard Chosen") +local monster = {} + +monster.description = "a lizard chosen" +monster.experience = 2200 +monster.outfit = { + lookType = 344, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 620 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Temple of Equilibrium (Zao) Hidden stairs, Fire Dragon Dojo, Corruption Hole, Razzachai.", +} + +monster.health = 3050 +monster.maxHealth = 3050 +monster.race = "blood" +monster.corpse = 10371 +monster.speed = 136 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 50, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grzzzzzzz!", yell = false }, + { text = "Kzzzzzzz!", yell = false }, + { text = "Garrrblarrrrzzzz!", yell = false }, +} + +monster.loot = { + { name = "small diamond", chance = 2550, maxCount = 5 }, + { name = "gold coin", chance = 33000, maxCount = 100 }, + { name = "gold coin", chance = 32000, maxCount = 100 }, + { name = "gold coin", chance = 32000, maxCount = 36 }, + { name = "platinum coin", chance = 2920, maxCount = 5 }, + { name = "tower shield", chance = 1100 }, + { name = "lizard leather", chance = 2000 }, + { name = "lizard scale", chance = 980, maxCount = 3 }, + { name = "great health potion", chance = 5350, maxCount = 3 }, + { name = "zaoan armor", chance = 980 }, + { name = "zaoan helmet", chance = 140 }, + { name = "zaoan shoes", chance = 810 }, + { name = "zaoan legs", chance = 940 }, + { name = "spiked iron ball", chance = 9890 }, + { name = "corrupted flag", chance = 3350 }, + { name = "cursed shoulder spikes", chance = 5800 }, + { name = "scale of corruption", chance = 2870 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -360 }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -240, maxDamage = -320, length = 3, spread = 2, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -190, maxDamage = -340, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -90, maxDamage = -180, length = 8, spread = 3, effect = CONST_ME_GREEN_RINGS, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 28, + mitigation = 0.94, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 75, maxDamage = 125, effect = CONST_ME_MAGIC_GREEN, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/lizard_dragon_priest.lua b/data-canary/monster/reptiles/lizard_dragon_priest.lua new file mode 100644 index 00000000000..9d658b0f6f8 --- /dev/null +++ b/data-canary/monster/reptiles/lizard_dragon_priest.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Lizard Dragon Priest") +local monster = {} + +monster.description = "a lizard dragon priest" +monster.experience = 1320 +monster.outfit = { + lookType = 339, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 623 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Zzaion, Zao Palace and its antechambers, Muggy Plains, Corruption Hole, Razachai, \z + Temple of Equilibrium, Northern Zao Plantations.", +} + +monster.health = 1450 +monster.maxHealth = 1450 +monster.race = "blood" +monster.corpse = 10363 +monster.speed = 128 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 50, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "Dragon Hatchling", chance = 20, interval = 2000, count = 2 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I ssssmell warm blood!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 5000, maxCount = 100 }, + { name = "gold coin", chance = 4400, maxCount = 88 }, + { name = "small amethyst", chance = 4900, maxCount = 3 }, + { name = "platinum coin", chance = 4090, maxCount = 2 }, + { name = "yellow gem", chance = 1000 }, + { id = 3052, chance = 770 }, -- life ring + { name = "terra rod", chance = 1001 }, + { name = "wand of inferno", chance = 1480 }, + { name = "lizard leather", chance = 980 }, + { name = "lizard scale", chance = 1130 }, + { name = "strong mana potion", chance = 12110 }, + { name = "great mana potion", chance = 7940 }, + { name = "focus cape", chance = 660 }, + { name = "bunch of ripe rice", chance = 960 }, + { name = "zaoan shoes", chance = 450 }, + { name = "zaoan robe", chance = 300 }, + { name = "dragon priest's wandtip", chance = 9910 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -125, maxDamage = -190, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -320, maxDamage = -400, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, +} + +monster.defenses = { + defense = 15, + armor = 22, + mitigation = 0.78, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 200, maxDamage = 300, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 85 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/lizard_high_guard.lua b/data-canary/monster/reptiles/lizard_high_guard.lua new file mode 100644 index 00000000000..9d254133db4 --- /dev/null +++ b/data-canary/monster/reptiles/lizard_high_guard.lua @@ -0,0 +1,131 @@ +local mType = Game.createMonsterType("Lizard High Guard") +local monster = {} + +monster.description = "a lizard high guard" +monster.experience = 1450 +monster.outfit = { + lookType = 337, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 625 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Zzaion, Zao Palace and its antechambers, Muggy Plains, Zao Orc Land (single spawn in fort), \z + Corruption Hole, Razachai, Temple of Equilibrium, Northern Zao Plantations.", +} + +monster.health = 1800 +monster.maxHealth = 1800 +monster.race = "blood" +monster.corpse = 10355 +monster.speed = 119 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hizzzzzzz!", yell = false }, + { text = "To armzzzz!", yell = false }, + { text = "Engage zze aggrezzor!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 32000, maxCount = 100 }, + { name = "gold coin", chance = 32000, maxCount = 100 }, + { name = "gold coin", chance = 32000, maxCount = 27 }, + { name = "small emerald", chance = 2520, maxCount = 4 }, + { name = "platinum coin", chance = 4900, maxCount = 2 }, + { name = "tower shield", chance = 1040 }, + { name = "lizard leather", chance = 1000 }, + { name = "lizard scale", chance = 970 }, + { name = "strong health potion", chance = 11925 }, + { name = "great health potion", chance = 7070 }, + { name = "red lantern", chance = 1220 }, + { name = "bunch of ripe rice", chance = 4950 }, + { name = "zaoan armor", chance = 80 }, + { name = "zaoan shoes", chance = 700 }, + { name = "zaoan legs", chance = 720 }, + { name = "spiked iron ball", chance = 7000 }, + { name = "high guard flag", chance = 2990 }, + { name = "high guard shoulderplates", chance = 8150 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -306 }, +} + +monster.defenses = { + defense = 35, + armor = 40, + mitigation = 1.18, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 25, maxDamage = 75, effect = CONST_ME_MAGIC_GREEN, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 45 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/lizard_legionnaire.lua b/data-canary/monster/reptiles/lizard_legionnaire.lua new file mode 100644 index 00000000000..3cd2ae78eb3 --- /dev/null +++ b/data-canary/monster/reptiles/lizard_legionnaire.lua @@ -0,0 +1,126 @@ +local mType = Game.createMonsterType("Lizard Legionnaire") +local monster = {} + +monster.description = "a lizard legionnaire" +monster.experience = 1100 +monster.outfit = { + lookType = 338, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 624 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Zzaion, Zao Palace and its antechambers, Muggy Plains, Zao Orc Land (in fort), \z + Corruption Hole, Razachai, Temple of Equilibrium, Northern Zao Plantations.", +} + +monster.health = 1400 +monster.maxHealth = 1400 +monster.race = "blood" +monster.corpse = 10359 +monster.speed = 133 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Tssss!", yell = false }, +} + +monster.loot = { + { name = "small diamond", chance = 1001, maxCount = 2 }, + { name = "gold coin", chance = 44000, maxCount = 100 }, + { name = "gold coin", chance = 54000, maxCount = 65 }, + { name = "lizard leather", chance = 970 }, + { name = "lizard scale", chance = 980, maxCount = 3 }, + { name = "strong health potion", chance = 3880 }, + { name = "red lantern", chance = 530 }, + { name = "bunch of ripe rice", chance = 1950 }, + { name = "zaoan armor", chance = 70 }, + { name = "zaoan shoes", chance = 460 }, + { name = "drakinata", chance = 710 }, + { name = "zaoan halberd", chance = 960 }, + { name = "legionnaire flags", chance = 1940 }, + { name = "broken halberd", chance = 14940 }, + { name = "lizard trophy", chance = 20 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -180 }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SPEAR, target = true }, +} + +monster.defenses = { + defense = 25, + armor = 30, + mitigation = 1.07, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 45 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/lizard_magistratus.lua b/data-canary/monster/reptiles/lizard_magistratus.lua new file mode 100644 index 00000000000..fb9c83a8c12 --- /dev/null +++ b/data-canary/monster/reptiles/lizard_magistratus.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Lizard Magistratus") +local monster = {} + +monster.description = "a lizard magistratus" +monster.experience = 2000 +monster.outfit = { + lookType = 115, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "LizardMagistratusDeath", +} + +monster.raceId = 655 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Razzachai.", +} + +monster.health = 6250 +monster.maxHealth = 6250 +monster.race = "blood" +monster.corpse = 6041 +monster.speed = 128 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Shhhhhhhh.", yell = false }, + { text = "I can't work wizh zuch dizturbancez!", yell = false }, +} + +monster.loot = { + { name = "small ruby", chance = 8970, maxCount = 5 }, + { name = "gold coin", chance = 77230, maxCount = 50 }, + { name = "platinum coin", chance = 13400, maxCount = 19 }, + { name = "lizard leather", chance = 220 }, + { name = "lizard scale", chance = 450 }, + { name = "strong mana potion", chance = 6280 }, + { name = "great mana potion", chance = 4480 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -60 }, + { name = "lizard magistratus curse", interval = 2000, chance = 10, range = 5, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 25, + mitigation = 1.18, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 85 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/lizard_noble.lua b/data-canary/monster/reptiles/lizard_noble.lua new file mode 100644 index 00000000000..1ba79d847e6 --- /dev/null +++ b/data-canary/monster/reptiles/lizard_noble.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Lizard Noble") +local monster = {} + +monster.description = "a lizard noble" +monster.experience = 2000 +monster.outfit = { + lookType = 115, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "LizardNobleDeath", +} + +monster.raceId = 656 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Razzachai.", +} + +monster.health = 7000 +monster.maxHealth = 7000 +monster.race = "blood" +monster.corpse = 6041 +monster.speed = 128 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Where are zhe guardz when you need zhem!", yell = false }, +} + +monster.loot = { + { name = "small ruby", chance = 7100, maxCount = 5 }, + { name = "gold coin", chance = 91300, maxCount = 100 }, + { name = "platinum coin", chance = 10000, maxCount = 20 }, + { name = "lizard leather", chance = 220 }, + { name = "lizard scale", chance = 650 }, + { name = "strong health potion", chance = 2550 }, + { name = "great health potion", chance = 2900 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -250, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -100, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 27, + mitigation = 1.02, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 85 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/lizard_sentinel.lua b/data-canary/monster/reptiles/lizard_sentinel.lua new file mode 100644 index 00000000000..97962c22b35 --- /dev/null +++ b/data-canary/monster/reptiles/lizard_sentinel.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Lizard Sentinel") +local monster = {} + +monster.description = "a lizard sentinel" +monster.experience = 110 +monster.outfit = { + lookType = 114, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 114 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Chor, Zzaion and Foreigner Quarter.", +} + +monster.health = 265 +monster.maxHealth = 265 +monster.race = "blood" +monster.corpse = 6040 +monster.speed = 90 +monster.manaCost = 560 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Tssss!", yell = false }, +} + +monster.loot = { + { name = "small diamond", chance = 190 }, + { name = "gold coin", chance = 89000, maxCount = 80 }, + { name = "halberd", chance = 510 }, + { name = "spear", chance = 8750, maxCount = 3 }, + { name = "obsidian lance", chance = 1120 }, + { name = "chain armor", chance = 8560 }, + { name = "scale armor", chance = 7730 }, + { name = "hunting spear", chance = 4700 }, + { name = "sentinel shield", chance = 320 }, + { name = "lizard leather", chance = 990 }, + { name = "lizard scale", chance = 960 }, + { name = "health potion", chance = 590 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -70, range = 7, shootEffect = CONST_ANI_SPEAR, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 17, + mitigation = 0.62, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/lizard_snakecharmer.lua b/data-canary/monster/reptiles/lizard_snakecharmer.lua new file mode 100644 index 00000000000..7a7339ef2aa --- /dev/null +++ b/data-canary/monster/reptiles/lizard_snakecharmer.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Lizard Snakecharmer") +local monster = {} + +monster.description = "a lizard snakecharmer" +monster.experience = 210 +monster.outfit = { + lookType = 115, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 115 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Chor, Forbidden Temple.", +} + +monster.health = 325 +monster.maxHealth = 325 +monster.race = "blood" +monster.corpse = 6041 +monster.speed = 172 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 4, + runHealth = 15, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 6, + summons = { + { name = "cobra", chance = 20, interval = 2000, count = 6 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I smeeeel warm blood!", yell = false }, + { text = "Shhhhhhh", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 83740, maxCount = 55 }, + { name = "small amethyst", chance = 520 }, + { name = "yellow gem", chance = 150 }, + { id = 3052, chance = 340 }, -- life ring + { name = "life crystal", chance = 1430 }, + { name = "terra rod", chance = 920 }, + { name = "snakebite rod", chance = 230 }, + { name = "cape", chance = 8640 }, + { name = "charmer's tiara", chance = 230 }, + { name = "lizard leather", chance = 1320 }, + { name = "lizard scale", chance = 860 }, + { name = "mana potion", chance = 860 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -100, maxDamage = -200, range = 7, shootEffect = CONST_ANI_POISON, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -110, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = true }, +} + +monster.defenses = { + defense = 15, + armor = 22, + mitigation = 0.38, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/lizard_templar.lua b/data-canary/monster/reptiles/lizard_templar.lua new file mode 100644 index 00000000000..b59057e6413 --- /dev/null +++ b/data-canary/monster/reptiles/lizard_templar.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Lizard Templar") +local monster = {} + +monster.description = "a lizard templar" +monster.experience = 155 +monster.outfit = { + lookType = 113, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 113 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Chor, the lizard city south-east from Port Hope. They can also be found in Yalahar's \z + Foreigner Quarter and in Zzaion.", +} + +monster.health = 410 +monster.maxHealth = 410 +monster.race = "blood" +monster.corpse = 4239 +monster.speed = 87 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hissss!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 84000, maxCount = 60 }, + { name = "small emerald", chance = 250 }, + { id = 3264, chance = 4000 }, -- sword + { name = "morning star", chance = 1990 }, + { name = "short sword", chance = 9500 }, + { name = "steel helmet", chance = 2000 }, + { name = "plate armor", chance = 1000 }, + { name = "templar scytheblade", chance = 500 }, + { name = "salamander shield", chance = 110 }, + { name = "lizard leather", chance = 880 }, + { name = "lizard scale", chance = 990 }, + { name = "health potion", chance = 890 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -70 }, +} + +monster.defenses = { + defense = 20, + armor = 26, + mitigation = 0.51, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/lizard_zaogun.lua b/data-canary/monster/reptiles/lizard_zaogun.lua new file mode 100644 index 00000000000..90deba6ce7c --- /dev/null +++ b/data-canary/monster/reptiles/lizard_zaogun.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Lizard Zaogun") +local monster = {} + +monster.description = "a lizard zaogun" +monster.experience = 1700 +monster.outfit = { + lookType = 343, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 616 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Zzaion, Zao Palace, Muggy Plains, Zao Orc Land (in fort), Razzachai, Temple of Equilibrium.", +} + +monster.health = 2955 +monster.maxHealth = 2955 +monster.race = "blood" +monster.corpse = 10367 +monster.speed = 138 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hissss!", yell = false }, + { text = "Cowardzz!", yell = false }, + { text = "Softzzkinzz from zze zzouzz!", yell = false }, + { text = "Zztand and fight!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 31500, maxCount = 100 }, + { name = "gold coin", chance = 31500, maxCount = 100 }, + { name = "gold coin", chance = 31000, maxCount = 68 }, + { name = "small emerald", chance = 4830, maxCount = 5 }, + { name = "platinum coin", chance = 48900, maxCount = 2 }, + { name = "tower shield", chance = 1000 }, + { name = "lizard leather", chance = 14360 }, + { name = "lizard scale", chance = 12520 }, + { name = "strong health potion", chance = 1900 }, + { name = "great health potion", chance = 7000, maxCount = 3 }, + { name = "red lantern", chance = 2170 }, + { name = "zaoan armor", chance = 530 }, + { name = "zaoan shoes", chance = 1000 }, + { name = "zaoan legs", chance = 1001 }, + { name = "zaogun flag", chance = 8280 }, + { name = "zaogun shoulderplates", chance = 14980 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -349 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -220, maxDamage = -375, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, +} + +monster.defenses = { + defense = 40, + armor = 42, + mitigation = 1.37, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 175, maxDamage = 275, effect = CONST_ME_MAGIC_GREEN, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 45 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/mantosaurus.lua b/data-canary/monster/reptiles/mantosaurus.lua new file mode 100644 index 00000000000..96a24cbaf06 --- /dev/null +++ b/data-canary/monster/reptiles/mantosaurus.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Mantosaurus") +local monster = {} + +monster.description = "a mantosaurus" +monster.experience = 11569 +monster.outfit = { + lookType = 1556, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2274 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 5000, + FirstUnlock = 200, + SecondUnlock = 2000, + CharmsPoints = 100, + Stars = 5, + Occurrence = 0, + Locations = "Crystal Enigma", +} + +monster.health = 19400 +monster.maxHealth = 19400 +monster.race = "blood" +monster.corpse = 39315 +monster.speed = 205 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Klkkk... Klkkk...", yell = false }, +} + +monster.loot = { + { name = "Crystal Coin", chance = 25640, minCount = 1, maxCount = 2 }, + { name = "Mantosaurus Jaw", chance = 19120 }, + { name = "Ultimate Mana Potion", chance = 9660, minCount = 1, maxCount = 3 }, + { name = "Silver Brooch", chance = 3920 }, + { name = "Red Crystal Fragment", chance = 3570 }, + { name = "Cyan Crystal Fragment", chance = 3010 }, + { name = "Green Crystal Shard", chance = 3010 }, + { name = "Coral Brooch", chance = 2420 }, + { id = 3007, chance = 1430 }, -- Crystal Ring + { name = "Gold Ring", chance = 1370 }, + { name = "Amulet of Loss", chance = 170 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1000 }, + { name = "combat", interval = 3500, chance = 47, type = COMBAT_PHYSICALDAMAGE, minDamage = -750, maxDamage = -1100, radius = 4, effect = CONST_ME_YELLOWSMOKE, target = false }, + { name = "combat", interval = 2500, chance = 31, type = COMBAT_EARTHDAMAGE, minDamage = -550, maxDamage = -800, radius = 4, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "mantosaurus ring", interval = 4000, chance = 25, minDamage = -500, maxDamage = -700, range = 4, target = true }, +} + +monster.defenses = { + defense = 110, + armor = 65, + mitigation = 1.79, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 5 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -15 }, + { type = COMBAT_HOLYDAMAGE, percent = -15 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) + +RegisterPrimalPackBeast(monster) diff --git a/data-canary/monster/reptiles/mercurial_menace.lua b/data-canary/monster/reptiles/mercurial_menace.lua new file mode 100644 index 00000000000..53c3d516a9f --- /dev/null +++ b/data-canary/monster/reptiles/mercurial_menace.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Mercurial Menace") +local monster = {} + +monster.description = "a mercurial menace" +monster.experience = 12095 +monster.outfit = { + lookType = 1561, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2279 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 5000, + FirstUnlock = 200, + SecondUnlock = 2000, + CharmsPoints = 100, + Stars = 5, + Occurrence = 0, + Locations = "Crystal Enigma", +} + +monster.health = 18500 +monster.maxHealth = 18500 +monster.race = "blood" +monster.corpse = 39335 +monster.speed = 190 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 3, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Shwooo...", yell = false }, +} + +monster.loot = { + { name = "Crystal Coin", chance = 24890, minCount = 1, maxCount = 2 }, + { name = "Mercurial Wing", chance = 21500 }, + { name = "Terra Boots", chance = 4250 }, + { name = "Silver Brooch", chance = 2700 }, + { name = "Terra Rod", chance = 1660 }, + { name = "Wand of Defiance", chance = 1230 }, + { name = "Dream Blossom Staff", chance = 1090 }, + { name = "Coral Brooch", chance = 1030 }, + { name = "Lightning Boots", chance = 1000 }, + { name = "Wand of Cosmic Energy", chance = 860 }, + { name = "Gemmed Figurine", chance = 830 }, + { name = "Butterfly Ring", chance = 800 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -900 }, + { name = "combat", interval = 2000, chance = 75, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -750, range = 4, shootEffect = CONST_ANI_SMALLSTONE, target = true }, + { name = "combat", interval = 3000, chance = 40, type = COMBAT_ENERGYDAMAGE, minDamage = -800, maxDamage = -1500, range = 3, effect = CONST_ME_BLUE_ENERGY_SPARK, target = true }, + { name = "mercurial menace ring", interval = 4500, chance = 37, minDamage = -500, maxDamage = -700 }, +} + +monster.defenses = { + defense = 110, + armor = 91, + mitigation = 2.54, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = -20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/naga_archer.lua b/data-canary/monster/reptiles/naga_archer.lua new file mode 100644 index 00000000000..e8665ed210a --- /dev/null +++ b/data-canary/monster/reptiles/naga_archer.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Naga Archer") +local monster = {} + +monster.description = "a naga archer" +monster.experience = 5150 +monster.outfit = { + lookType = 1537, + lookHead = 55, + lookBody = 6, + lookLegs = 0, + lookFeet = 78, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2260 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_AMPHIBIC, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Temple of the Moon Goddess.", +} + +monster.health = 4640 +monster.maxHealth = 4640 +monster.race = "blood" +monster.corpse = 39225 +monster.speed = 182 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 3, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Intruder! Don't violate this sanctuary!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 17 }, + { name = "naga archer scales", chance = 15050, maxCount = 3 }, + { name = "naga earring", chance = 12850, maxCount = 3 }, + { name = "naga armring", chance = 5960, maxCount = 3 }, + { id = 3007, chance = 5330 }, -- crystal ring + { name = "hunting spear", chance = 3760 }, + { name = "crossbow", chance = 3130 }, + { name = "blue crystal shard", chance = 1880 }, + { name = "bow", chance = 1570 }, + { name = "elvish bow", chance = 750 }, + { name = "ornate crossbow", chance = 630 }, + { name = "crystal crossbow", chance = 420 }, + { id = 7441, chance = 630 }, -- ice cube + { name = "emerald bangle", chance = 930 }, + { name = "silver brooch", chance = 310 }, +} + +monster.attacks = { + { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = -95, maxDamage = -390, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_PURPLEENERGY, range = 6, target = true }, -- basic_attack + { name = "nagadeathattack", interval = 2500, chance = 20, minDamage = -430, maxDamage = -505, range = 6, target = true }, -- death_strike + { name = "nagadeath", interval = 3000, chance = 20, minDamage = -380, maxDamage = -470, target = false }, -- short_death_wave + { name = "death chain", interval = 3500, chance = 20, minDamage = -460, maxDamage = -520, range = 6, target = true }, -- death_chain + { name = "combat", interval = 4000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -85, maxDamage = -190, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_PURPLEENERGY, range = 6, target = true }, -- explosion_strike +} + +monster.defenses = { + defense = 110, + armor = 63, + mitigation = 1.74, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = -15 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = -20 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/naga_warrior.lua b/data-canary/monster/reptiles/naga_warrior.lua new file mode 100644 index 00000000000..485e345c74d --- /dev/null +++ b/data-canary/monster/reptiles/naga_warrior.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Naga Warrior") +local monster = {} + +monster.description = "a naga warrior" +monster.experience = 5890 +monster.outfit = { + lookType = 1539, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2261 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_AMPHIBIC, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Temple of the Moon Goddess.", +} + +monster.health = 5530 +monster.maxHealth = 5530 +monster.race = "blood" +monster.corpse = 39225 +monster.speed = 180 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Fear the wrath of the wronged!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 20 }, + { name = "dagger", chance = 38810 }, + { name = "strong health potion", chance = 14930, maxCount = 2 }, + { name = "naga warrior scales", chance = 10600, maxCount = 3 }, + { name = "naga earring", chance = 6420, maxCount = 3 }, + { id = 3307, chance = 5520 }, -- scimitar + { name = "naga armring", chance = 3730 }, + { name = "plate armor", chance = 2990 }, + { name = "spiky club", chance = 2090 }, + { name = "serpent sword", chance = 1940 }, + { name = "violet crystal shard", chance = 2640 }, + { name = "katana", chance = 1490 }, + { name = "relic sword", chance = 600 }, + { name = "knight armor", chance = 1100 }, + { id = 7441, chance = 300 }, -- ice cube +} + +monster.attacks = { + { name = "combat", interval = 2000, chance = 100, type = COMBAT_PHYSICALDAMAGE, minDamage = -120, maxDamage = -340, target = true }, -- basic_attack + { name = "combat", interval = 2500, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -320, maxDamage = -430, effect = CONST_ME_YELLOWSMOKE, range = 3, target = true }, -- eruption_strike + { name = "nagadeathattack", interval = 3000, chance = 35, minDamage = -360, maxDamage = -415, target = true }, -- death_strike + { name = "combat", interval = 3500, chance = 35, type = COMBAT_LIFEDRAIN, minDamage = -360, maxDamage = -386, radius = 4, effect = CONST_ME_DRAWBLOOD, target = false }, -- great_blood_ball +} + +monster.defenses = { + defense = 110, + armor = 78, + mitigation = 2.19, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = -5 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = -20 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/noxious_ripptor.lua b/data-canary/monster/reptiles/noxious_ripptor.lua new file mode 100644 index 00000000000..2a7031598b5 --- /dev/null +++ b/data-canary/monster/reptiles/noxious_ripptor.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Noxious Ripptor") +local monster = {} + +monster.description = "a noxious ripptor" +monster.experience = 13190 +monster.outfit = { + lookType = 1558, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2276 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 5000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 100, + Stars = 5, + Occurrence = 1, + Locations = "Crystal Enigma", +} + +monster.health = 22700 +monster.maxHealth = 22700 +monster.race = "blood" +monster.corpse = 39323 +monster.speed = 180 +monster.manaCost = 0 +monster.maxSummons = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Krccchht!", yell = false }, +} + +monster.loot = { + { name = "Crystal Coin", chance = 26770, minCount = 1, maxCount = 2 }, + { name = "Ripptor Scales", chance = 12850 }, + { name = "Ultimate Health Potion", chance = 10570, minCount = 1, maxCount = 2 }, + { name = "Ripptor Claw", chance = 8280, minCount = 1, maxCount = 2 }, + { name = "Serpent Sword", chance = 1440 }, + { name = "Sacred Tree Amulet", chance = 1360 }, + { name = "Muck Rod", chance = 1290 }, + { name = "Terra Legs", chance = 750 }, + { name = "Wooden Spellbook", chance = 450 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1350 }, + { name = "combat", interval = 2500, chance = 40, type = COMBAT_EARTHDAMAGE, minDamage = -1100, maxDamage = -1700, range = 1, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, + { name = "noxious ripptor wave", interval = 4500, chance = 30, minDamage = -450, maxDamage = -750 }, +} + +monster.defenses = { + defense = 110, + armor = 82, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) + +RegisterPrimalPackBeast(monster) diff --git a/data-canary/monster/reptiles/rhindeer.lua b/data-canary/monster/reptiles/rhindeer.lua new file mode 100644 index 00000000000..4cd428e94f1 --- /dev/null +++ b/data-canary/monster/reptiles/rhindeer.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Rhindeer") +local monster = {} + +monster.description = "a rhindeer" +monster.experience = 5600 +monster.outfit = { + lookType = 1606, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2342 +monster.Bestiary = { + class = "Humanoid", + race = BESTY_RACE_HUMANOID, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Ingol", +} + +monster.health = 8650 +monster.maxHealth = 8650 +monster.race = "blood" +monster.corpse = 42230 +monster.speed = 160 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 200, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Harrumph!!", yell = false }, + { text = "Destroy!", yell = false }, + { text = "Snort!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 72260, maxCount = 30 }, + { name = "brown crystal splinter", chance = 11550, maxCount = 4 }, + { name = "rhindeer antlers", chance = 6020 }, + { name = "rainbow quartz", chance = 4940, maxCount = 2 }, + { name = "great mana potion", chance = 2670, maxCount = 4 }, + { name = "titan axe", chance = 2470 }, + { name = "yellow gem", chance = 1880 }, + { name = "knight armor", chance = 1380 }, + { name = "violet gem", chance = 1200 }, + { id = 23543, chance = 890 }, -- collar of green plasma + { name = "heavy mace", chance = 300 }, + { name = "mastermind shield", chance = 400 }, + { id = 3053, chance = 690 }, -- time ring +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -471 }, + { name = "combat", interval = 2000, chance = 20, minDamage = -265, maxDamage = -415, range = 3, radius = 4, effect = CONST_ME_EXPLOSIONHIT, target = true }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -325, maxDamage = -400, range = 7, shootEffect = CONST_ANI_POISONARROW, target = true }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -265, maxDamage = -411, range = 1, radius = 4, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -300, range = 2, effect = CONST_ME_GROUNDSHAKER, target = true }, +} + +monster.defenses = { + defense = 50, + armor = 68, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/rogue_naga.lua b/data-canary/monster/reptiles/rogue_naga.lua new file mode 100644 index 00000000000..e3e7e662fc3 --- /dev/null +++ b/data-canary/monster/reptiles/rogue_naga.lua @@ -0,0 +1,104 @@ +local mType = Game.createMonsterType("Rogue Naga") +local monster = {} + +monster.description = "a rogue naga" +monster.experience = 4510 +monster.outfit = { + lookType = 1543, + lookHead = 75, + lookBody = 13, + lookLegs = 95, + lookFeet = 109, + lookAddons = 3, + lookMount = 0, +} + +monster.health = 6200 +monster.maxHealth = 6200 +monster.race = "blood" +monster.corpse = 39221 +monster.speed = 182 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "The Moon Goddess has forsaken us!", yell = false }, + { text = "You underestimated us!", yell = false }, + { text = "Death is too good for them.", yell = false }, + { text = "Die, you fools!", yell = false }, +} + +monster.loot = { + { name = "rogue naga scales", chance = 15450 }, +} + +monster.attacks = { + { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = -95, maxDamage = -390, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_PURPLEENERGY, range = 6, target = true }, -- basic_attack + { name = "nagadeathattack", interval = 2500, chance = 20, minDamage = -430, maxDamage = -505, range = 6, target = true }, -- death_strike + { name = "nagadeath", interval = 3000, chance = 20, minDamage = -380, maxDamage = -470, target = false }, -- short_death_wave + { name = "death chain", interval = 3500, chance = 20, minDamage = -460, maxDamage = -520, range = 6, target = true }, -- death_chain + { name = "combat", interval = 4000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -85, maxDamage = -190, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_PURPLEENERGY, range = 6, target = true }, -- explosion_strike +} + +monster.defenses = { + defense = 110, + armor = 0, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/sea_serpent.lua b/data-canary/monster/reptiles/sea_serpent.lua new file mode 100644 index 00000000000..688bb978ca9 --- /dev/null +++ b/data-canary/monster/reptiles/sea_serpent.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Sea Serpent") +local monster = {} + +monster.description = "a sea serpent" +monster.experience = 2300 +monster.outfit = { + lookType = 275, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 438 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Sea Serpent Area and Seacrest Grounds.", +} + +monster.health = 1950 +monster.maxHealth = 1950 +monster.race = "blood" +monster.corpse = 949 +monster.speed = 240 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "CHHHRRRR", yell = true }, + { text = "HISSSS", yell = true }, +} + +monster.loot = { + { name = "small sapphire", chance = 5600, maxCount = 3 }, + { name = "gold coin", chance = 38000, maxCount = 100 }, + { name = "gold coin", chance = 30000, maxCount = 100 }, + { name = "gold coin", chance = 30000, maxCount = 36 }, + { name = "platinum coin", chance = 25000, maxCount = 3 }, + { id = 3049, chance = 400 }, -- stealth ring + { id = 3098, chance = 1100 }, -- ring of healing + { name = "serpent sword", chance = 4200 }, + { name = "plate legs", chance = 7150 }, + { name = "dragon ham", chance = 60000, maxCount = 2 }, + { name = "strong health potion", chance = 5500 }, + { name = "strong mana potion", chance = 3850 }, + { name = "great mana potion", chance = 920 }, + { name = "glacier amulet", chance = 880 }, + { name = "glacier kilt", chance = 430 }, + { name = "spirit cloak", chance = 2900 }, + { name = "focus cape", chance = 370 }, + { name = "crystalline armor", chance = 90 }, + { name = "northwind rod", chance = 930 }, + { name = "sea serpent scale", chance = 10200 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -300, length = 7, spread = 2, effect = CONST_ME_SMALLPLANTS, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -101, maxDamage = -300, length = 7, spread = 2, effect = CONST_ME_ICEATTACK, target = false }, + { name = "sea serpent drown", interval = 2000, chance = 15, range = 5, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 25, + mitigation = 1.04, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 70, maxDamage = 273, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/seacrest_serpent.lua b/data-canary/monster/reptiles/seacrest_serpent.lua new file mode 100644 index 00000000000..04b7dba7416 --- /dev/null +++ b/data-canary/monster/reptiles/seacrest_serpent.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Seacrest Serpent") +local monster = {} + +monster.description = "a seacrest serpent" +monster.experience = 2900 +monster.outfit = { + lookType = 675, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1096 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 2, + Locations = "Seacrest Grounds when Quara Renegades are not spawning.", +} + +monster.health = 3000 +monster.maxHealth = 3000 +monster.race = "venom" +monster.corpse = 21893 +monster.speed = 250 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 9, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 3, + color = 212, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "LEAVE THESE GROUNDS...", yell = true }, + { text = "THE DARK TIDE WILL SWALLOW YOU...", yell = true }, +} + +monster.loot = { + { id = 3583, chance = 13040 }, -- dragon ham + { id = 21801, chance = 12040 }, -- seacrest hair + { id = 762, chance = 7020, maxCount = 17 }, -- shiver arrow + { id = 829, chance = 2680 }, -- glacier mask + { id = 21892, chance = 400 }, -- crest of the deep seas + { id = 3035, chance = 100000, maxCount = 5 }, -- platinum coin + { id = 236, chance = 7020, maxCount = 2 }, -- strong health potion + { id = 237, chance = 10370, maxCount = 2 }, -- strong mana potion + { id = 21747, chance = 10030 }, -- seacrest pearl + { id = 3026, chance = 3680, maxCount = 2 }, -- white pearl + { id = 3027, chance = 2340, maxCount = 3 }, -- black pearl + { id = 281, chance = 1000 }, -- giant shimmering pearl (green) + { id = 5944, chance = 3340 }, -- soul orb + { id = 3028, chance = 5020, maxCount = 3 }, -- small diamond + { id = 21800, chance = 17390 }, -- seacrest scale + { id = 815, chance = 670 }, -- glacier amulet + { id = 823, chance = 3680 }, -- glacier kilt + { id = 819, chance = 3010 }, -- glacier shoes + { id = 16096, chance = 670 }, -- wand of defiance + { id = 8093, chance = 670 }, -- wand of draconia +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 120, attack = 82 }, + { name = "combat", interval = 2000, chance = 7, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -260, range = 7, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_SOUND_RED, target = true }, + { name = "combat", interval = 2000, chance = 11, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -285, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "seacrest serpent wave", interval = 2000, chance = 30, minDamage = 0, maxDamage = -284, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -300, length = 4, spread = 3, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.defenses = { + defense = 31, + armor = 51, + mitigation = 1.21, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 145, maxDamage = 200, effect = CONST_ME_SOUND_BLUE, target = false }, + { name = "melee", interval = 2000, chance = 10, minDamage = 0, maxDamage = 0 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/serpent_spawn.lua b/data-canary/monster/reptiles/serpent_spawn.lua new file mode 100644 index 00000000000..7eb8782e8bd --- /dev/null +++ b/data-canary/monster/reptiles/serpent_spawn.lua @@ -0,0 +1,144 @@ +local mType = Game.createMonsterType("Serpent Spawn") +local monster = {} + +monster.description = "a serpent spawn" +monster.experience = 3050 +monster.outfit = { + lookType = 220, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 220 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Deeper Banuta, Forbidden Islands: Talahu (Medusa Cave) and Kharos (at level -1), Razzachai, \z + Deep below the Crystal Lakes in Foreigner Quarter, Cult's cave in the Magician Quarter, Medusa Tower.", +} + +monster.health = 3000 +monster.maxHealth = 3000 +monster.race = "venom" +monster.corpse = 6061 +monster.speed = 117 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 30, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 275, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "HISSSS", yell = true }, + { text = "I bring you deathhhh, mortalssss", yell = false }, + { text = "Sssssouls for the one", yell = false }, + { text = "Tsssse one will risssse again", yell = false }, +} + +monster.loot = { + { name = "golden mug", chance = 2870 }, + { name = "small sapphire", chance = 12000 }, + { name = "gold coin", chance = 97250, maxCount = 239 }, + { id = 3051, chance = 590 }, -- energy ring + { id = 3052, chance = 6250 }, -- life ring + { name = "life crystal", chance = 800 }, + { name = "snakebite rod", chance = 930 }, + { name = "warrior helmet", chance = 560 }, + { name = "strange helmet", chance = 670 }, + { name = "crown armor", chance = 510 }, + { id = 4831, chance = 550 }, -- old parchment + { name = "royal helmet", chance = 140 }, + { name = "tower shield", chance = 920 }, + { name = "power bolt", chance = 6200 }, + { name = "green mushroom", chance = 18200 }, + { name = "charmer's tiara", chance = 180 }, + { name = "mercenary sword", chance = 2070 }, + { name = "noble axe", chance = 750 }, + { name = "great mana potion", chance = 2000 }, + { name = "swamplair armor", chance = 90 }, + { name = "spellbook of mind control", chance = 90 }, + { name = "snake skin", chance = 14800 }, + { name = "winged tail", chance = 960 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -252 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -80, maxDamage = -300, range = 7, shootEffect = CONST_ANI_POISON, target = false }, + { name = "outfit", interval = 2000, chance = 1, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 3000, outfitMonster = "clay guardian" }, + { name = "speed", interval = 2000, chance = 25, speedChange = -850, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = true, duration = 12000 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_SOUND_RED, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, +} + +monster.defenses = { + defense = 35, + armor = 35, + mitigation = 1.04, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 250, maxDamage = 500, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 340, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/snake.lua b/data-canary/monster/reptiles/snake.lua index d82fdf67a34..cbf09a45a6c 100644 --- a/data-canary/monster/reptiles/snake.lua +++ b/data-canary/monster/reptiles/snake.lua @@ -46,7 +46,7 @@ monster.flags = { summonable = true, attackable = true, hostile = true, - convinceable = true, + convinceable = false, pushable = true, rewardBoss = false, illusionable = true, @@ -59,7 +59,8 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, + isPreyExclusive = true, } monster.light = { @@ -81,13 +82,14 @@ monster.attacks = { monster.defenses = { defense = 5, - armor = 5, + armor = 0, + mitigation = 0.03, } monster.elements = { { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, { type = COMBAT_ENERGYDAMAGE, percent = 20 }, - { type = COMBAT_EARTHDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, { type = COMBAT_FIREDAMAGE, percent = -10 }, { type = COMBAT_LIFEDRAIN, percent = 0 }, { type = COMBAT_MANADRAIN, percent = 0 }, diff --git a/data-canary/monster/reptiles/stampor.lua b/data-canary/monster/reptiles/stampor.lua new file mode 100644 index 00000000000..d916022b97d --- /dev/null +++ b/data-canary/monster/reptiles/stampor.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Stampor") +local monster = {} + +monster.description = "a stampor" +monster.experience = 780 +monster.outfit = { + lookType = 381, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 694 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Stampor Cave on the Muggy Plains, Chyllfroest.", +} + +monster.health = 1200 +monster.maxHealth = 1200 +monster.race = "blood" +monster.corpse = 12325 +monster.speed = 220 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "KRRRRRNG", yell = true }, +} + +monster.loot = { + { name = "gold coin", chance = 30000, maxCount = 242 }, + { name = "platinum coin", chance = 9920, maxCount = 2 }, + { name = "war hammer", chance = 1010 }, + { name = "knight armor", chance = 870 }, + { name = "spiked squelcher", chance = 160 }, + { name = "strong health potion", chance = 5000, maxCount = 2 }, + { name = "strong mana potion", chance = 5000, maxCount = 2 }, + { name = "small topaz", chance = 7940, maxCount = 2 }, + { name = "stampor horn", chance = 4920 }, + { name = "stampor talons", chance = 9950, maxCount = 2 }, + { name = "hollow stampor hoof", chance = 3020 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -280, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -75, maxDamage = -100, shootEffect = CONST_ANI_SMALLSTONE, target = true }, + { name = "stampor skill reducer", interval = 2000, chance = 10, range = 5, target = false }, +} + +monster.defenses = { + defense = 0, + armor = 60, + mitigation = 0.91, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 90, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/stonerefiner.lua b/data-canary/monster/reptiles/stonerefiner.lua new file mode 100644 index 00000000000..eeeb58e800a --- /dev/null +++ b/data-canary/monster/reptiles/stonerefiner.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Stonerefiner") +local monster = {} + +monster.description = "a stonerefiner" +monster.experience = 500 +monster.outfit = { + lookType = 1032, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1525 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Corym Mines.", +} + +monster.health = 800 +monster.maxHealth = 800 +monster.race = "blood" +monster.corpse = 27536 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "knak knak knak", yell = false }, + { text = "nomnomnom", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 50930, maxCount = 4 }, + { name = "rare earth", chance = 39750, maxCount = 2 }, + { id = 12600, chance = 27980, maxCount = 5 }, -- coal + { name = "glob of acid slime", chance = 23680 }, + { name = "stonerefiner's skull", chance = 20110 }, + { name = "poisonous slime", chance = 20040, maxCount = 3 }, + { name = "half-digested stones", chance = 15210, maxCount = 5 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, + { name = "berserk", interval = 2000, chance = 15, minDamage = 0, maxDamage = -70, target = false }, + { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -40, maxDamage = -80, range = 7, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 20, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -20 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/thornback_tortoise.lua b/data-canary/monster/reptiles/thornback_tortoise.lua new file mode 100644 index 00000000000..dbc34a5028b --- /dev/null +++ b/data-canary/monster/reptiles/thornback_tortoise.lua @@ -0,0 +1,119 @@ +local mType = Game.createMonsterType("Thornback Tortoise") +local monster = {} + +monster.description = "a thornback tortoise" +monster.experience = 150 +monster.outfit = { + lookType = 198, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 259 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Laguna Islands, Meriana Gargoyle Cave and one on Nargor.", +} + +monster.health = 300 +monster.maxHealth = 300 +monster.race = "blood" +monster.corpse = 6073 +monster.speed = 75 +monster.manaCost = 490 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "white pearl", chance = 1600 }, + { name = "black pearl", chance = 800 }, + { name = "gold coin", chance = 89500, maxCount = 48 }, + { name = "war hammer", chance = 260 }, + { id = 3578, chance = 10800, maxCount = 2 }, -- fish + { name = "white mushroom", chance = 1200 }, + { name = "brown mushroom", chance = 700 }, + { name = "tortoise egg", chance = 790, maxCount = 3 }, + { id = 5899, chance = 800 }, -- turtle shell + { name = "health potion", chance = 1600 }, + { name = "thorn", chance = 15980 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110, condition = { type = CONDITION_POISON, totalDamage = 40, interval = 4000 } }, +} + +monster.defenses = { + defense = 40, + armor = 24, + mitigation = 0.70, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 30 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/tortoise.lua b/data-canary/monster/reptiles/tortoise.lua index cc5afa7752c..b7b21dcb92d 100644 --- a/data-canary/monster/reptiles/tortoise.lua +++ b/data-canary/monster/reptiles/tortoise.lua @@ -23,8 +23,7 @@ monster.Bestiary = { CharmsPoints = 15, Stars = 2, Occurrence = 0, - Locations = "Laguna Islands, Fenrock, Port Hope and also can be found behind a wall below the \z - center of Liberty Bay. These cannot be reached.", + Locations = "Laguna Islands, Fenrock, Port Hope and also can be found behind a wall below the center of Liberty Bay. These cannot be reached.", } monster.health = 185 @@ -44,14 +43,14 @@ monster.strategiesTarget = { } monster.flags = { - summonable = true, + summonable = false, attackable = true, hostile = true, convinceable = true, - pushable = true, + pushable = false, rewardBoss = false, - illusionable = false, - canPushItems = true, + illusionable = true, + canPushItems = false, canPushCreatures = false, staticAttackChance = 90, targetDistance = 1, @@ -74,13 +73,13 @@ monster.voices = { } monster.loot = { - { id = 3031, chance = 59000, maxCount = 30 }, -- gold coin - { id = 3305, chance = 730 }, -- battle hammer - { id = 3410, chance = 2850 }, -- plate shield + { name = "gold coin", chance = 59000, maxCount = 30 }, + { name = "battle hammer", chance = 730 }, + { name = "plate shield", chance = 2850 }, { id = 3578, chance = 4600 }, -- fish - { id = 5678, chance = 770, maxCount = 2 }, -- tortoise egg + { name = "tortoise egg", chance = 770, maxCount = 2 }, { id = 5899, chance = 1300 }, -- turtle shell - { id = 6131, chance = 200 }, -- tortoise shield + { name = "tortoise shield", chance = 200 }, } monster.attacks = { @@ -89,11 +88,12 @@ monster.attacks = { monster.defenses = { defense = 30, - armor = 30, + armor = 22, + mitigation = 0.51, } monster.elements = { - { type = COMBAT_PHYSICALDAMAGE, percent = 35 }, + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, { type = COMBAT_ENERGYDAMAGE, percent = 0 }, { type = COMBAT_EARTHDAMAGE, percent = 20 }, { type = COMBAT_FIREDAMAGE, percent = -10 }, diff --git a/data-canary/monster/reptiles/two-headed_turtle.lua b/data-canary/monster/reptiles/two-headed_turtle.lua new file mode 100644 index 00000000000..50b49aa8cc5 --- /dev/null +++ b/data-canary/monster/reptiles/two-headed_turtle.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Two-Headed Turtle") +local monster = {} + +monster.description = "a two-headed turtle" +monster.experience = 2930 +monster.outfit = { + lookType = 1535, +} + +monster.raceId = 2258 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Great Pearl Fan Reef", +} + +monster.health = 5010 +monster.maxHealth = 5010 +monster.race = "blood" +monster.corpse = 39212 +monster.speed = 170 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 0, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Krk! Krk!", yell = false }, + { text = "BONK!", yell = true }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 8 }, + { name = "great health potion", chance = 15701 }, + { name = "two-headed turtle heads", chance = 8700 }, + { name = "strong mana potion", chance = 13373 }, + { name = "hydrophytes", chance = 11000 }, + { id = 3115, chance = 6388 }, -- bone + { name = "glacier shoes", chance = 4650 }, + { id = 281, chance = 3582 }, -- giant shimmering pearl (green) + { name = "small tropical fish", chance = 3582 }, + { name = "coral brooch", chance = 2600 }, + { name = "silver brooch", chance = 2507 }, + { name = "lightning headband", chance = 2110 }, + { name = "knight legs", chance = 2000 }, + { name = "gemmed figurine", chance = 2090 }, + { name = "emerald bangle", chance = 1373 }, + { name = "terra amulet", chance = 1373 }, + { id = 3040, chance = 1313 }, -- "gold nugget" + { name = "spellbook of enlightenment", chance = 1300 }, + { id = 3565, chance = 1015 }, -- "cape" + { id = 10422, chance = 657 }, -- "clay lump" + { name = "white gem", chance = 418 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -300 }, + { name = "combat", interval = 2500, chance = 35, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -300, radius = 4, target = false, effect = CONST_ME_ENERGYHIT }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -300, radius = 3, target = true, effect = CONST_ME_GHOSTLY_BITE }, + { name = "combat", interval = 3000, chance = 45, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -300, range = 1, radius = 1, target = true, effect = CONST_ME_EXPLOSIONAREA }, +} + +monster.defenses = { + defense = 72, + armor = 72, + mitigation = 2.02, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = -20 }, + { type = COMBAT_FIREDAMAGE, percent = 50 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 50 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/wyvern.lua b/data-canary/monster/reptiles/wyvern.lua new file mode 100644 index 00000000000..3536ca9dd7c --- /dev/null +++ b/data-canary/monster/reptiles/wyvern.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Wyvern") +local monster = {} + +monster.description = "a wyvern" +monster.experience = 515 +monster.outfit = { + lookType = 239, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 290 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Beregar, Black Knight's Villa, Chor, Ghostlands, Chyllfroest, Crystal Gardens, \z + Crystal Grounds, Dragon Lair (Edron), Drillworm Cave, Folda, Hero Fortress, Kazordoon, \z + Green Djinn Tower, Mushroom Fields,Paradox Tower, Plains of Havoc, Plague Spike, \z + Poachers' Camp (Ferngrims Gate), Stonehome, Tiquanda, Truffels Garden, \z + Vandura Mountain, Vega, Venore, Wyvern Cave (Ferngrims Gate), Wyvern Hill and Wyvern Ulderek's Rock Cave.", +} + +monster.health = 795 +monster.maxHealth = 795 +monster.race = "blood" +monster.corpse = 6301 +monster.speed = 93 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 300, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Shriiiek", yell = false }, +} + +monster.loot = { + { name = "emerald bangle", chance = 540 }, + { name = "small sapphire", chance = 5000 }, + { name = "gold coin", chance = 100000, maxCount = 90 }, + { name = "wand of inferno", chance = 810 }, + { name = "power bolt", chance = 3400, maxCount = 2 }, + { name = "dragon ham", chance = 60500, maxCount = 3 }, + { name = "wyvern fang", chance = 410 }, + { name = "strong health potion", chance = 2500 }, + { name = "wyvern talisman", chance = 12300 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120, condition = { type = CONDITION_POISON, totalDamage = 480, interval = 4000 } }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -240, maxDamage = -240, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, + { name = "drunk", interval = 2000, chance = 10, length = 3, spread = 2, effect = CONST_ME_SOUND_RED, target = false, duration = 5000 }, +} + +monster.defenses = { + defense = 25, + armor = 19, + mitigation = 1.21, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 45, maxDamage = 65, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/young_goanna.lua b/data-canary/monster/reptiles/young_goanna.lua new file mode 100644 index 00000000000..ad4b0c01128 --- /dev/null +++ b/data-canary/monster/reptiles/young_goanna.lua @@ -0,0 +1,140 @@ +local mType = Game.createMonsterType("Young Goanna") +local monster = {} + +monster.description = "a young goanna" +monster.experience = 6100 +monster.outfit = { + lookType = 1196, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1817 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Kilmaresh Central Steppe, Kilmaresh Southern Steppe, Green Belt.", +} + +monster.health = 6200 +monster.maxHealth = 6200 +monster.race = "blood" +monster.corpse = 31409 +monster.speed = 190 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 10, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 3 }, + { name = "envenomed arrow", chance = 70400, maxCount = 35 }, + { name = "snakebite rod", chance = 10620 }, + { name = "goanna meat", chance = 10030 }, + { name = "blue crystal shard", chance = 9110 }, + { name = "terra rod", chance = 8940 }, + { name = "blue goanna scale", chance = 8260 }, + { name = "small enchanted emerald", chance = 4890 }, + { name = "leaf star", chance = 4550, maxCount = 3 }, + { name = "rainbow quartz", chance = 4050, maxCount = 3 }, + { name = "onyx chip", chance = 4050 }, + { name = "goanna claw", chance = 3880 }, + { name = "violet gem", chance = 3540 }, + { name = "serpent sword", chance = 3370 }, + { name = "springsprout rod", chance = 3370 }, + { name = "green crystal shard", chance = 2950 }, + { name = "scared frog", chance = 2610 }, + { name = "yellow gem", chance = 2530 }, + { name = "silver amulet", chance = 2280 }, + { name = "terra amulet", chance = 1430 }, + { name = "blue gem", chance = 1180 }, + { name = "terra hood", chance = 1100 }, + { name = "blue crystal splinter", chance = 1010 }, + { name = "sacred tree amulet", chance = 840 }, + { name = "small tortoise", chance = 670 }, + { name = "lizard heart", chance = 590 }, + { name = "wooden spellbook", chance = 170 }, + { name = "fur armor", chance = 80 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500, condition = { type = CONDITION_POISON, totalDamage = 200, interval = 4000 } }, + { name = "combat", interval = 2500, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -490, range = 3, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 3000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -500, radius = 1, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 3500, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -490, lenght = 8, spread = 0, effect = CONST_ME_GREEN_RINGS, target = false }, +} + +monster.defenses = { + defense = 78, + armor = 78, + mitigation = 2.16, + { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -20 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/reptiles/young_sea_serpent.lua b/data-canary/monster/reptiles/young_sea_serpent.lua new file mode 100644 index 00000000000..98e8744b7b1 --- /dev/null +++ b/data-canary/monster/reptiles/young_sea_serpent.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Young Sea Serpent") +local monster = {} + +monster.description = "a young sea serpent" +monster.experience = 1000 +monster.outfit = { + lookType = 317, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 439 +monster.Bestiary = { + class = "Reptile", + race = BESTY_RACE_REPTILE, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Sea Serpent Area.", +} + +monster.health = 1050 +monster.maxHealth = 1050 +monster.race = "blood" +monster.corpse = 8965 +monster.speed = 240 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 85, + targetDistance = 1, + runHealth = 400, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "HISSSS", yell = true }, + { text = "CHHHRRRR", yell = true }, +} + +monster.loot = { + { name = "small sapphire", chance = 1900, maxCount = 2 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 48000, maxCount = 74 }, + { id = 3049, chance = 1000 }, -- stealth ring + { name = "life crystal", chance = 300 }, + { name = "battle axe", chance = 8000 }, + { name = "morning star", chance = 40000 }, + { name = "battle hammer", chance = 5000 }, + { name = "strong health potion", chance = 5000 }, + { name = "strong mana potion", chance = 4000 }, + { id = 8894, chance = 7940 }, -- heavily rusted armor + { id = 8895, chance = 7940 }, -- rusted armor + { name = "sea serpent scale", chance = 5000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -10, maxDamage = -250, length = 7, spread = 2, effect = CONST_ME_SMALLPLANTS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -80, maxDamage = -250, length = 7, spread = 2, effect = CONST_ME_ICEATTACK, target = false }, + { name = "young sea serpent drown", interval = 2000, chance = 15, range = 5, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 20, + mitigation = 0.78, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 25, maxDamage = 175, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -20 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = -5 }, + { type = COMBAT_FIREDAMAGE, percent = 30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/slimes/acid_blob.lua b/data-canary/monster/slimes/acid_blob.lua new file mode 100644 index 00000000000..644258f7111 --- /dev/null +++ b/data-canary/monster/slimes/acid_blob.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Acid Blob") +local monster = {} + +monster.description = "an acid blob" +monster.experience = 250 +monster.outfit = { + lookType = 314, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 513 +monster.Bestiary = { + class = "Slime", + race = BESTY_RACE_SLIME, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Alchemist Quarter, Deeper Banuta.", +} + +monster.health = 250 +monster.maxHealth = 250 +monster.race = "venom" +monster.corpse = 9049 +monster.speed = 60 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 85, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 3, + summons = { + { name = "Acid Blob", chance = 10, interval = 2000, count = 3 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Kzzchhhh", yell = false }, +} + +monster.loot = { + { name = "glob of acid slime", chance = 18520 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -10, maxDamage = -20, radius = 4, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -60, length = 5, spread = 3, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, range = 7, shootEffect = CONST_ANI_POISON, target = true }, +} + +monster.defenses = { + defense = 1, + armor = 3, + mitigation = 0.25, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/slimes/death_blob.lua b/data-canary/monster/slimes/death_blob.lua new file mode 100644 index 00000000000..8ff4cbd4859 --- /dev/null +++ b/data-canary/monster/slimes/death_blob.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Death Blob") +local monster = {} + +monster.description = "a death blob" +monster.experience = 300 +monster.outfit = { + lookType = 315, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 514 +monster.Bestiary = { + class = "Slime", + race = BESTY_RACE_SLIME, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Alchemist Quarter, Drefia, Razzachai, Souleater Mountains, \z + Northern Zao Plantations and Raging Mage tower.", +} + +monster.health = 320 +monster.maxHealth = 320 +monster.race = "undead" +monster.corpse = 11317 +monster.speed = 80 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 85, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 3, + summons = { + { name = "Death Blob", chance = 10, interval = 2000, count = 3 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Shlorz", yell = false }, +} + +monster.loot = { + { name = "glob of tar", chance = 18470 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -35, maxDamage = -60, range = 3, radius = 4, effect = CONST_ME_POFF, target = false }, + { name = "death blob curse", interval = 2000, chance = 5, range = 5, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 15, + mitigation = 0.46, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 20, maxDamage = 30, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 20 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/slimes/defiler.lua b/data-canary/monster/slimes/defiler.lua index ac71528076b..e93b1c3ce84 100644 --- a/data-canary/monster/slimes/defiler.lua +++ b/data-canary/monster/slimes/defiler.lua @@ -23,7 +23,7 @@ monster.Bestiary = { CharmsPoints = 50, Stars = 4, Occurrence = 0, - Locations = "Pits of Inferno, The Vats - Edron.", + Locations = "Pits of Inferno, The Inquisition Quest (The Vats) and Grounds of Plague.", } monster.health = 3650 @@ -52,7 +52,7 @@ monster.flags = { convinceable = false, pushable = false, rewardBoss = false, - illusionable = true, + illusionable = false, canPushItems = true, canPushCreatures = true, staticAttackChance = 80, @@ -66,8 +66,8 @@ monster.flags = { } monster.light = { - level = 0, - color = 0, + level = 3, + color = 30, } monster.voices = { @@ -78,23 +78,23 @@ monster.voices = { } monster.loot = { - { id = 3028, chance = 2439, maxCount = 2 }, -- small diamond - { id = 3030, chance = 3000, maxCount = 2 }, -- small ruby - { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin - { id = 3031, chance = 100000, maxCount = 100 }, -- gold coin - { id = 3031, chance = 100000, maxCount = 72 }, -- gold coin - { id = 3032, chance = 5366, maxCount = 3 }, -- small emerald - { id = 3034, chance = 5710 }, -- talon - { id = 3035, chance = 95000, maxCount = 6 }, -- platinum coin - { id = 3037, chance = 1219 }, -- yellow gem - { id = 3038, chance = 613 }, -- green gem + { name = "small diamond", chance = 2439, maxCount = 2 }, + { name = "small ruby", chance = 3000, maxCount = 2 }, + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "gold coin", chance = 100000, maxCount = 72 }, + { name = "small emerald", chance = 5366, maxCount = 3 }, + { name = "talon", chance = 5710 }, + { name = "platinum coin", chance = 95000, maxCount = 6 }, + { name = "yellow gem", chance = 1219 }, + { name = "green gem", chance = 613 }, { id = 3039, chance = 1538 }, -- red gem - { id = 3041, chance = 300 }, -- blue gem - { id = 5944, chance = 20000 }, -- soul orb + { name = "blue gem", chance = 300 }, + { name = "soul orb", chance = 20000 }, { id = 6299, chance = 3030 }, -- death ring - { id = 6499, chance = 20320 }, -- demonic essence - { id = 9054, chance = 14210 }, -- glob of acid slime - { id = 9055, chance = 12000 }, -- glob of tar + { name = "demonic essence", chance = 20320 }, + { name = "glob of acid slime", chance = 14210 }, + { name = "glob of tar", chance = 12000 }, } monster.attacks = { @@ -110,7 +110,8 @@ monster.attacks = { monster.defenses = { defense = 20, - armor = 20, + armor = 60, + mitigation = 1.32, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 280, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false }, } diff --git a/data-canary/monster/slimes/devourer.lua b/data-canary/monster/slimes/devourer.lua new file mode 100644 index 00000000000..dace9504b1c --- /dev/null +++ b/data-canary/monster/slimes/devourer.lua @@ -0,0 +1,142 @@ +local mType = Game.createMonsterType("Devourer") +local monster = {} + +monster.description = "a devourer" +monster.experience = 1755 +monster.outfit = { + lookType = 617, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1056 +monster.Bestiary = { + class = "Slime", + race = BESTY_RACE_SLIME, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Rathleton Sewers, Lower Rathleton, Oramond/Western Plains, \z + Underground Glooth Factory, Jaccus Maxxen's Dungeon.", +} + +monster.health = 1900 +monster.maxHealth = 1900 +monster.race = "venom" +monster.corpse = 21113 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 60000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 4, + color = 139, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "*gulp*", yell = false }, + { text = "*Bruaarrr!*", yell = false }, + { text = "*omnnommm nomm*", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 165 }, -- gold coin + { id = 3035, chance = 9100, maxCount = 2 }, -- platinum coin + { id = 21182, chance = 1670 }, -- glob of glooth + { id = 3034, chance = 940 }, -- talon + { id = 3029, chance = 1170, maxCount = 3 }, -- small sapphire + { id = 3033, chance = 1030, maxCount = 3 }, -- small amethyst + { id = 9057, chance = 1030, maxCount = 3 }, -- small topaz + { id = 3032, chance = 1170, maxCount = 3 }, -- small emerald + { id = 3030, chance = 1190, maxCount = 3 }, -- small ruby + { id = 3028, chance = 1050, maxCount = 3 }, -- small diamond + { id = 3037, chance = 1090 }, -- yellow gem + { id = 3038, chance = 100 }, -- green gem + { id = 21164, chance = 210 }, -- glooth cape + { id = 21183, chance = 130 }, -- glooth amulet + { id = 21179, chance = 350 }, -- glooth blade + { id = 21178, chance = 510 }, -- glooth club + { id = 21180, chance = 390 }, -- glooth axe + { id = 21158, chance = 370 }, -- glooth spear + { id = 8084, chance = 250 }, -- springsprout rod + { id = 3065, chance = 260 }, -- terra rod +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 62, attack = 50, condition = { type = CONDITION_POISON, totalDamage = 360, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -40, maxDamage = -125, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_MAGIC_RED, target = true }, + { name = "combat", interval = 2000, chance = 8, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -160, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = true }, + { name = "devourer wave", interval = 2000, chance = 5, minDamage = -50, maxDamage = -150, target = false }, + { name = "devourer paralyze", interval = 2000, chance = 9, target = false }, + { name = "combat", interval = 2000, chance = 11, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -150, length = 1, spread = 0, effect = CONST_ME_SMOKE, target = false }, + { name = "combat", interval = 2000, chance = 7, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -135, radius = 4, effect = CONST_ME_GREEN_RINGS, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 45, + mitigation = 1.46, + { name = "combat", interval = 2000, chance = 6, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_GREEN, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/slimes/glooth_blob.lua b/data-canary/monster/slimes/glooth_blob.lua new file mode 100644 index 00000000000..130f942b2f1 --- /dev/null +++ b/data-canary/monster/slimes/glooth_blob.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Glooth Blob") +local monster = {} + +monster.description = "a glooth blob" +monster.experience = 700 +monster.outfit = { + lookType = 614, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1054 +monster.Bestiary = { + class = "Slime", + race = BESTY_RACE_SLIME, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Oramond/Western Plains, Lower Rathleton, Glooth Factory, Underground Glooth Factory, Rathleton Sewers.", +} + +monster.health = 750 +monster.maxHealth = 750 +monster.race = "venom" +monster.corpse = 21108 +monster.speed = 80 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "Glooth Blob", chance = 6, interval = 2000, count = 2 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 70 }, -- gold coin + { id = 21182, chance = 15410 }, -- glob of glooth + { id = 3029, chance = 3310, maxCount = 2 }, -- small sapphire + { id = 9057, chance = 3420, maxCount = 2 }, -- small topaz + { id = 21183, chance = 400 }, -- glooth amulet + { id = 21179, chance = 510 }, -- glooth blade + { id = 21178, chance = 580 }, -- glooth club + { id = 21180, chance = 560 }, -- glooth axe +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 45, attack = 40, condition = { type = CONDITION_POISON, totalDamage = 280, interval = 4000 } }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 13, minDamage = -400, maxDamage = -480, radius = 4, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 11, type = COMBAT_EARTHDAMAGE, minDamage = -85, maxDamage = -180, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_GREEN_RINGS, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -105, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, +} + +monster.defenses = { + defense = 10, + armor = 30, + mitigation = 1.04, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/slimes/ink_blob.lua b/data-canary/monster/slimes/ink_blob.lua new file mode 100644 index 00000000000..e61bb3e1cb4 --- /dev/null +++ b/data-canary/monster/slimes/ink_blob.lua @@ -0,0 +1,131 @@ +local mType = Game.createMonsterType("Ink Blob") +local monster = {} + +monster.description = "an ink blob" +monster.experience = 14450 +monster.outfit = { + lookType = 1064, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1658 +monster.Bestiary = { + class = "Slime", + race = BESTY_RACE_SLIME, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Secret Library (earth, fire and ice sections)", +} + +monster.health = 9500 +monster.maxHealth = 9500 +monster.race = "ink" +monster.corpse = 28601 +monster.speed = 190 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 85, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 120000, maxCount = 4 }, + { name = "envenomed arrow", chance = 1200, maxCount = 14 }, + { id = 28568, chance = 1200, maxCount = 4 }, -- inkwell + { name = "poisonous slime", chance = 1200, maxCount = 4 }, + { name = "small diamond", chance = 1200, maxCount = 4 }, + { name = "small topaz", chance = 1200, maxCount = 4 }, + { id = 282, chance = 900, maxCount = 4 }, -- giant shimmering pearl (brown) + { name = "blue gem", chance = 950, maxCount = 4 }, + { name = "terra boots", chance = 850, maxCount = 4 }, + { name = "terra hood", chance = 980, maxCount = 4 }, + { name = "protection amulet", chance = 1200, maxCount = 4 }, + { name = "sacred tree amulet", chance = 1200, maxCount = 4 }, + { name = "springsprout rod", chance = 790, maxCount = 4 }, + { name = "stone skin amulet", chance = 1200, maxCount = 4 }, + { name = "terra legs", chance = 650, maxCount = 4 }, + { name = "terra mantle", chance = 550, maxCount = 4 }, + { name = "clay lump", chance = 1200, maxCount = 4 }, + { name = "terra amulet", chance = 1200, maxCount = 4 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 45, attack = 40, condition = { type = CONDITION_POISON, totalDamage = 280, interval = 4000 } }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 13, minDamage = -400, maxDamage = -580, radius = 4, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 11, type = COMBAT_EARTHDAMAGE, minDamage = -285, maxDamage = -480, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_GREEN_RINGS, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -260, maxDamage = -505, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, +} + +monster.defenses = { + defense = 15, + armor = 70, + mitigation = 2.02, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 20, maxDamage = 30, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -8 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/slimes/mercury_blob.lua b/data-canary/monster/slimes/mercury_blob.lua new file mode 100644 index 00000000000..49c9b3c0fad --- /dev/null +++ b/data-canary/monster/slimes/mercury_blob.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Mercury Blob") +local monster = {} + +monster.description = "a mercury blob" +monster.experience = 180 +monster.outfit = { + lookType = 316, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 515 +monster.Bestiary = { + class = "Slime", + race = BESTY_RACE_SLIME, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Alchemist Quarter.", +} + +monster.health = 150 +monster.maxHealth = 150 +monster.race = "undead" +monster.corpse = 9048 +monster.speed = 75 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 85, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 3, + summons = { + { name = "Mercury Blob", chance = 10, interval = 2000, count = 3 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Crackle", yell = false }, +} + +monster.loot = { + { name = "glob of mercury", chance = 18750 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -75 }, + { name = "drunk", interval = 2000, chance = 10, range = 7, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_STUN, target = true, duration = 3000 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -10, maxDamage = -30, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, +} + +monster.defenses = { + defense = 1, + armor = 3, + mitigation = 0.25, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 20, maxDamage = 30, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 65 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 80 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = 65 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/slimes/midnight_spawn.lua b/data-canary/monster/slimes/midnight_spawn.lua new file mode 100644 index 00000000000..0cff4de727c --- /dev/null +++ b/data-canary/monster/slimes/midnight_spawn.lua @@ -0,0 +1,113 @@ +local mType = Game.createMonsterType("Midnight Spawn") +local monster = {} + +monster.description = "a midnight spawn" +monster.experience = 900 +monster.outfit = { + lookType = 315, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 584 +monster.Bestiary = { + class = "Slime", + race = BESTY_RACE_SLIME, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Forbidden Lands around the Lightbringers basin.", +} + +monster.health = 2000 +monster.maxHealth = 2000 +monster.race = "undead" +monster.corpse = 11317 +monster.speed = 170 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 85, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "midnight shard", chance = 8333 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, +} + +monster.defenses = { + defense = 10, + armor = 40, + mitigation = 1.18, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 80 }, + { type = COMBAT_FIREDAMAGE, percent = 30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 30 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/slimes/slime.lua b/data-canary/monster/slimes/slime.lua index df5afc349d2..2a4312836d5 100644 --- a/data-canary/monster/slimes/slime.lua +++ b/data-canary/monster/slimes/slime.lua @@ -37,7 +37,6 @@ monster.race = "venom" monster.corpse = 2127 monster.speed = 60 monster.manaCost = 0 -monster.maxSummons = 3 monster.changeTarget = { interval = 4000, @@ -66,6 +65,7 @@ monster.flags = { canWalkOnEnergy = false, canWalkOnFire = false, canWalkOnPoison = true, + isPreyExclusive = true, } monster.light = { @@ -74,9 +74,9 @@ monster.light = { } monster.summon = { - maxSummons = 1, + maxSummons = 3, summons = { - { name = "Slime", chance = 10, interval = 2000 }, + { name = "Slime", chance = 10, interval = 2000, count = 3 }, }, } @@ -94,7 +94,8 @@ monster.attacks = { monster.defenses = { defense = 15, - armor = 15, + armor = 3, + mitigation = 0.25, } monster.elements = { diff --git a/data-canary/monster/slimes/son_of_verminor.lua b/data-canary/monster/slimes/son_of_verminor.lua new file mode 100644 index 00000000000..ed5fa25c182 --- /dev/null +++ b/data-canary/monster/slimes/son_of_verminor.lua @@ -0,0 +1,120 @@ +local mType = Game.createMonsterType("Son of Verminor") +local monster = {} + +monster.description = "a son of verminor" +monster.experience = 5900 +monster.outfit = { + lookType = 19, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 265 +monster.Bestiary = { + class = "Slime", + race = BESTY_RACE_SLIME, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Deep in the Pits of Inferno, in Verminor's throne room. Also in the Demon Forge (The Vats and The Hive).", +} + +monster.health = 8500 +monster.maxHealth = 8500 +monster.race = "venom" +monster.corpse = 105 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Blubb.", yell = false }, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -473, condition = { type = CONDITION_POISON, totalDamage = 450, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -200, range = 7, shootEffect = CONST_ANI_POISON, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -350, maxDamage = -390, radius = 3, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -220, maxDamage = -270, radius = 3, effect = CONST_ME_SMALLCLOUDS, target = false }, +} + +monster.defenses = { + defense = 0, + armor = 48, + mitigation = 1.32, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 250, maxDamage = 350, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "outfit", interval = 5000, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "rat" }, + { name = "outfit", interval = 5000, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "larva" }, + { name = "outfit", interval = 5000, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "scorpion" }, + { name = "outfit", interval = 5000, chance = 10, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 6000, outfitMonster = "slime" }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/slimes/squidgy_slime.lua b/data-canary/monster/slimes/squidgy_slime.lua new file mode 100644 index 00000000000..882793e04cd --- /dev/null +++ b/data-canary/monster/slimes/squidgy_slime.lua @@ -0,0 +1,119 @@ +local mType = Game.createMonsterType("Squidgy Slime") +local monster = {} + +monster.description = "a squidgy slime" +monster.experience = 55 +monster.outfit = { + lookType = 19, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 20 +monster.Bestiary = { + class = "Slime", + race = BESTY_RACE_SLIME, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 2, + Locations = "Horestis Tomb during one of the states of The Mummys Curse World Change.", +} + +monster.health = 150 +monster.maxHealth = 150 +monster.race = "venom" +monster.corpse = 2127 +monster.speed = 60 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 3, + summons = { + { name = "Squidgy Slime", chance = 10, interval = 2000, count = 3 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Blubb", yell = false }, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 45, attack = 40 }, +} + +monster.defenses = { + defense = 15, + armor = 3, + mitigation = 0.25, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/traps/deathslicer.lua b/data-canary/monster/traps/deathslicer.lua new file mode 100644 index 00000000000..5b6346e15cc --- /dev/null +++ b/data-canary/monster/traps/deathslicer.lua @@ -0,0 +1,95 @@ +local mType = Game.createMonsterType("Deathslicer") +local monster = {} + +monster.description = "a deathslicer" +monster.experience = 0 +monster.outfit = { + lookType = 102, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 8200 +monster.maxHealth = 8200 +monster.race = "undead" +monster.corpse = 3138 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, radius = 2, effect = CONST_ME_BLOCKHIT, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 15, + mitigation = 2.30, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/traps/deaththrower.lua b/data-canary/monster/traps/deaththrower.lua new file mode 100644 index 00000000000..96d506b0278 --- /dev/null +++ b/data-canary/monster/traps/deaththrower.lua @@ -0,0 +1,87 @@ +local mType = Game.createMonsterType("Deaththrower") +local monster = {} + +monster.description = "a deaththrower" +monster.experience = 0 +monster.outfit = { + lookTypeEx = 2190, +} + +monster.health = 100 +monster.maxHealth = 100 +monster.race = "undead" +monster.corpse = 0 +monster.speed = 0 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 16, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = true, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "dark torturer skill reducer", interval = 2000, chance = 15, range = 6, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_POFF, target = false }, +} + +monster.defenses = { + defense = 1, + armor = 1, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/traps/demon_summoner.lua b/data-canary/monster/traps/demon_summoner.lua new file mode 100644 index 00000000000..0eb3c8c7409 --- /dev/null +++ b/data-canary/monster/traps/demon_summoner.lua @@ -0,0 +1,93 @@ +local mType = Game.createMonsterType("Demon Summoner") +local monster = {} + +monster.description = "bones" +monster.experience = 0 +monster.outfit = { + lookTypeEx = 470, +} + +monster.health = 100 +monster.maxHealth = 100 +monster.race = "undead" +monster.corpse = 0 +monster.speed = 0 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = true, + staticAttackChance = 100, + targetDistance = 1, + runHealth = 0, + healthHidden = true, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 1, + summons = { + { name = "Demon", chance = 100, interval = 1000, count = 1 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = {} + +monster.defenses = { + defense = 0, + armor = 0, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, effect = CONST_ME_MORTAREA, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/traps/floor_blob.lua b/data-canary/monster/traps/floor_blob.lua new file mode 100644 index 00000000000..24db98d5fc3 --- /dev/null +++ b/data-canary/monster/traps/floor_blob.lua @@ -0,0 +1,99 @@ +local mType = Game.createMonsterType("Floor Blob") +local monster = {} + +monster.description = "a floor blob" +monster.experience = 0 +monster.outfit = { + lookType = 459, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 1 +monster.maxHealth = 1 +monster.race = "venom" +monster.corpse = 0 +monster.speed = 0 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 4, + color = 186, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Goumph!", yell = false }, + { text = "Oump!", yell = false }, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = 0 }, +} + +monster.defenses = { + defense = 11, + armor = 5, + mitigation = 0.00, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/traps/hell_hole.lua b/data-canary/monster/traps/hell_hole.lua new file mode 100644 index 00000000000..38e3798fd2f --- /dev/null +++ b/data-canary/monster/traps/hell_hole.lua @@ -0,0 +1,90 @@ +local mType = Game.createMonsterType("Hell Hole") +local monster = {} + +monster.description = "a hell hole" +monster.experience = 0 +monster.outfit = { + lookTypeEx = 391, +} + +monster.health = 100 +monster.maxHealth = 100 +monster.race = "undead" +monster.corpse = 0 +monster.speed = 0 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = true, + staticAttackChance = 100, + targetDistance = 1, + runHealth = 0, + healthHidden = true, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 1, + summons = { + { name = "Deathspawn", chance = 25, interval = 2000, count = 1 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.defenses = { + defense = 5, + armor = 10, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/traps/hive_pore.lua b/data-canary/monster/traps/hive_pore.lua new file mode 100644 index 00000000000..20b8350dd65 --- /dev/null +++ b/data-canary/monster/traps/hive_pore.lua @@ -0,0 +1,94 @@ +local mType = Game.createMonsterType("Hive Pore") +local monster = {} + +monster.description = "a hive pore" +monster.experience = 0 +monster.outfit = { + lookTypeEx = 14064, +} + +monster.health = 1 +monster.maxHealth = 1 +monster.race = "venom" +monster.corpse = 0 +monster.speed = 0 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 3, + summons = { + { name = "Lesser Swarmer", chance = 100, interval = 30000, count = 3 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = {} + +monster.defenses = { + defense = 0, + armor = 0, + mitigation = 0.00, + { name = "effect", interval = 30000, chance = 100, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/traps/lavahole.lua b/data-canary/monster/traps/lavahole.lua new file mode 100644 index 00000000000..cbb0388953f --- /dev/null +++ b/data-canary/monster/traps/lavahole.lua @@ -0,0 +1,88 @@ +local mType = Game.createMonsterType("Lavahole") +local monster = {} + +monster.description = "a lavahole" +monster.experience = 0 +monster.outfit = { + lookTypeEx = 391, +} + +monster.health = 1 +monster.maxHealth = 1 +monster.race = "undead" +monster.corpse = 0 +monster.speed = 0 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = true, + staticAttackChance = 100, + targetDistance = 1, + runHealth = 0, + healthHidden = true, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "combat", interval = 2000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = false }, +} + +monster.defenses = { + defense = 5, + armor = 10, + mitigation = 0.00, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/traps/magic_pillar.lua b/data-canary/monster/traps/magic_pillar.lua new file mode 100644 index 00000000000..6160751dffb --- /dev/null +++ b/data-canary/monster/traps/magic_pillar.lua @@ -0,0 +1,91 @@ +local mType = Game.createMonsterType("Magic Pillar") +local monster = {} + +monster.description = "a magic pillar" +monster.experience = 0 +monster.outfit = { + lookTypeEx = 2190, +} + +monster.health = 1 +monster.maxHealth = 1 +monster.race = "undead" +monster.corpse = 0 +monster.speed = 0 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 100, + healthHidden = true, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "Demon", chance = 7, interval = 2000, count = 2 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.defenses = { + defense = 1, + armor = 1, + mitigation = 0.00, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = true }, +} + +mType:register(monster) diff --git a/data-canary/monster/traps/magicthrower.lua b/data-canary/monster/traps/magicthrower.lua new file mode 100644 index 00000000000..28e3cbe3075 --- /dev/null +++ b/data-canary/monster/traps/magicthrower.lua @@ -0,0 +1,88 @@ +local mType = Game.createMonsterType("Magicthrower") +local monster = {} + +monster.description = "a magicthrower" +monster.experience = 18 +monster.outfit = { + lookTypeEx = 2190, +} + +monster.health = 100 +monster.maxHealth = 100 +monster.race = "undead" +monster.corpse = 0 +monster.speed = 0 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 100, + healthHidden = true, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "combat", interval = 2000, chance = 100, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISON, target = false }, +} + +monster.defenses = { + defense = 5, + armor = 1, + mitigation = 0.41, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 100 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = true }, +} + +mType:register(monster) diff --git a/data-canary/monster/traps/mechanical_fighter.lua b/data-canary/monster/traps/mechanical_fighter.lua new file mode 100644 index 00000000000..9b16acd9845 --- /dev/null +++ b/data-canary/monster/traps/mechanical_fighter.lua @@ -0,0 +1,99 @@ +local mType = Game.createMonsterType("Mechanical Fighter") +local monster = {} + +monster.description = "a mechanical fighter" +monster.experience = 255 +monster.outfit = { + lookType = 102, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 420 +monster.maxHealth = 420 +monster.race = "undead" +monster.corpse = 3138 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 4849, chance = 87460 }, -- wooden trash +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, +} + +monster.defenses = { + defense = 199, + armor = 199, + mitigation = 0.55, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 50 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/traps/mimic.lua b/data-canary/monster/traps/mimic.lua new file mode 100644 index 00000000000..d48b5e1001d --- /dev/null +++ b/data-canary/monster/traps/mimic.lua @@ -0,0 +1,89 @@ +local mType = Game.createMonsterType("Mimic") +local monster = {} + +monster.description = "a mimic" +monster.experience = 0 +monster.outfit = { + lookType = 92, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 1200 +monster.maxHealth = 1200 +monster.race = "blood" +monster.corpse = 2472 +monster.speed = 85 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 0, + targetDistance = 5, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} +monster.defenses = { + defense = 3, + armor = 2, + mitigation = 0.00, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/traps/pillar.lua b/data-canary/monster/traps/pillar.lua new file mode 100644 index 00000000000..985bd0d6145 --- /dev/null +++ b/data-canary/monster/traps/pillar.lua @@ -0,0 +1,84 @@ +local mType = Game.createMonsterType("Pillar") +local monster = {} + +monster.description = "a pillar" +monster.experience = 0 +monster.outfit = { + lookTypeEx = 2190, +} + +monster.health = 100 +monster.maxHealth = 100 +monster.race = "undead" +monster.corpse = 0 +monster.speed = 0 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 0, + healthHidden = true, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.defenses = { + defense = 1, + armor = 1, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/traps/plaguethrower.lua b/data-canary/monster/traps/plaguethrower.lua new file mode 100644 index 00000000000..83620729763 --- /dev/null +++ b/data-canary/monster/traps/plaguethrower.lua @@ -0,0 +1,88 @@ +local mType = Game.createMonsterType("Plaguethrower") +local monster = {} + +monster.description = "a plaguethrower" +monster.experience = 18 +monster.outfit = { + lookTypeEx = 2190, +} + +monster.health = 100 +monster.maxHealth = 100 +monster.race = "undead" +monster.corpse = 0 +monster.speed = 0 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 100, + healthHidden = true, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "combat", interval = 2000, chance = 100, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISON, target = false }, +} + +monster.defenses = { + defense = 5, + armor = 1, + mitigation = 0.41, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/ahau.lua b/data-canary/monster/undeads/ahau.lua new file mode 100644 index 00000000000..ce5704769a9 --- /dev/null +++ b/data-canary/monster/undeads/ahau.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Ahau") +local monster = {} + +monster.description = "Ahau" +monster.experience = 17500 +monster.outfit = { + lookType = 1591, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.bosstiary = { + bossRaceId = 2346, + bossRace = RARITY_ARCHFOE, +} + +monster.health = 9000 +monster.maxHealth = 9000 +monster.race = "blood" +monster.corpse = 42069 +monster.speed = 350 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = true, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "WAAAHNGH!!!", yell = true }, + { text = "Awrrrgh!", yell = false }, + { text = "IKSPUTUTU!!", yell = true }, + { text = "Hwaaarrrh!!!", yell = false }, + { text = "Wraaahgh?!", yell = false }, + { text = "AAAAAH!!", yell = true }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "the living idol of tukh", chance = 100000 }, + { name = "rotten feather", chance = 50000 }, + { name = "great health potion", chance = 40000, maxCount = 5 }, + { name = "great spirit potion", chance = 25530, maxCount = 1 }, + { name = "great mana potion", chance = 34040, maxCount = 5 }, + { name = "ritual tooth", chance = 32980 }, + { name = "diamond", chance = 5320, maxCount = 8 }, + { name = "amber with a bug", chance = 3190 }, + { name = "amber", chance = 5320 }, + { id = 23533, chance = 3500 }, --ring of red plasma + { id = 23531, chance = 3500 }, --ring of green plasma + { id = 23529, chance = 3500 }, --ring of blue plasma + { id = 23544, chance = 3500 }, --collar of red plasma + { id = 23542, chance = 3500 }, --collar of blue plasma + { id = 23543, chance = 3500 }, --collar of green plasma + { name = "broken iks headpiece", chance = 1000 }, + { name = "broken macuahuitl", chance = 1000 }, + { name = "broken iks faulds", chance = 1000 }, + { name = "broken iks cuirass", chance = 1000 }, +} + +monster.attacks = { + { name = "melee", interval = 1700, chance = 100, minDamage = 0, maxDamage = -456, effect = 244 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -350, maxDamage = -422, range = 1, radius = 0, effect = CONST_ME_GREENSMOKE, target = true }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -500, length = 5, spread = 0, effect = 216, target = false }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -415, maxDamage = -570, radius = 2, effect = CONST_ME_STONE_STORM, target = false }, + { name = "boulder ring", interval = 2000, chance = 20, minDamage = -460, maxDamage = -500 }, +} + +monster.defenses = { + defense = 64, + armor = 0, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/bane_of_light.lua b/data-canary/monster/undeads/bane_of_light.lua new file mode 100644 index 00000000000..4db9083fb2d --- /dev/null +++ b/data-canary/monster/undeads/bane_of_light.lua @@ -0,0 +1,115 @@ +local mType = Game.createMonsterType("Bane of Light") +local monster = {} + +monster.description = "a bane of light" +monster.experience = 750 +monster.outfit = { + lookType = 68, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 580 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Svargrond around the Lightbringers basin.", +} + +monster.health = 1100 +monster.maxHealth = 1100 +monster.race = "blood" +monster.corpse = 6006 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 30, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "midnight shard", chance = 6930 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -366 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -250, range = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, + { name = "speed", interval = 2000, chance = 15, speedChange = -400, range = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 60000 }, +} + +monster.defenses = { + defense = 38, + armor = 38, + mitigation = 1.46, + { name = "outfit", interval = 4000, chance = 10, effect = CONST_ME_GROUNDSHAKER, target = false, duration = 5000, outfitMonster = "bat" }, + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 15, maxDamage = 25, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -20 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/banshee.lua b/data-canary/monster/undeads/banshee.lua new file mode 100644 index 00000000000..712d0f71788 --- /dev/null +++ b/data-canary/monster/undeads/banshee.lua @@ -0,0 +1,146 @@ +local mType = Game.createMonsterType("Banshee") +local monster = {} + +monster.description = "a banshee" +monster.experience = 900 +monster.outfit = { + lookType = 78, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 78 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Single one under the White Flower Temple in Thais (respawn takes about 20-25 minutes), \z + Banshee Quest area in Ghostlands (also accesible by Isle of the Kings), Demon Quest Room, Drefia, \z + Ancient Ruins Tomb, Desert Dungeon (unreachable), Pits of Inferno in Tafariel's Throne room, \z + Cemetery Quarter in Yalahar, Vengoth Castle, one in Robson Isle.", +} + +monster.health = 1000 +monster.maxHealth = 1000 +monster.race = "undead" +monster.corpse = 6019 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + health = 10, + damage = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 500, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Dance for me your dance of death!", yell = false }, + { text = "Let the music play!", yell = false }, + { text = "I will mourn your death!", yell = false }, + { text = "Are you ready to rock?", yell = false }, + { text = "Feel my gentle kiss of death.", yell = false }, + { text = "That's what I call easy listening!", yell = false }, + { text = "IIIIEEEeeeeeehhhHHHH!", yell = false }, +} + +monster.loot = { + { name = "candlestick", chance = 70000 }, + { name = "wedding ring", chance = 460 }, + { id = 3007, chance = 60 }, -- crystal ring + { name = "silver brooch", chance = 1250 }, + { name = "white pearl", chance = 1010 }, + { name = "black pearl", chance = 2030 }, + { name = "gold coin", chance = 30000, maxCount = 80 }, + { name = "silver amulet", chance = 8700 }, + { id = 3059, chance = 520 }, -- spellbook + { name = "life crystal", chance = 70 }, + { name = "stone skin amulet", chance = 820 }, + { id = 3098, chance = 730 }, -- ring of healing + { id = 2949, chance = 910 }, -- lyre + { name = "poison dagger", chance = 1350 }, + { name = "red robe", chance = 150 }, + { name = "blue robe", chance = 700 }, + { name = "simple dress", chance = 6050 }, + { name = "strong mana potion", chance = 680 }, + { name = "terra mantle", chance = 340 }, + { name = "petrified scream", chance = 4150 }, + { name = "hair of a banshee", chance = 4810 }, + { name = "sweet smelling bait", chance = 40 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, condition = { type = CONDITION_POISON, totalDamage = 3, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -200, radius = 4, effect = CONST_ME_SOUND_RED, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -55, maxDamage = -350, range = 1, radius = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, + { name = "speed", interval = 2000, chance = 10, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, +} + +monster.defenses = { + defense = 25, + armor = 25, + mitigation = 1.74, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 120, maxDamage = 190, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/betrayed_wraith.lua b/data-canary/monster/undeads/betrayed_wraith.lua new file mode 100644 index 00000000000..201887a7712 --- /dev/null +++ b/data-canary/monster/undeads/betrayed_wraith.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Betrayed Wraith") +local monster = {} + +monster.description = "a betrayed wraith" +monster.experience = 3500 +monster.outfit = { + lookType = 233, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 284 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Pits of Inferno, Helheim, The Inquisition Quest, Roshamuul Prison, Oramond Fury Dungeon", +} + +monster.health = 4200 +monster.maxHealth = 4200 +monster.race = "undead" +monster.corpse = 6315 +monster.speed = 173 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 15, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 300, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Rrrah!", yell = false }, + { text = "Gnarr!", yell = false }, + { text = "Tcharrr!", yell = false }, +} + +monster.loot = { + { name = "small diamond", chance = 11800, maxCount = 4 }, + { name = "gold coin", chance = 100000, maxCount = 200 }, + { name = "platinum coin", chance = 100000, maxCount = 8 }, + { name = "power bolt", chance = 50000, maxCount = 5 }, + { name = "orichalcum pearl", chance = 8000, maxCount = 2 }, + { name = "skull helmet", chance = 390 }, + { name = "golden figurine", chance = 160 }, + { name = "soul orb", chance = 10000 }, + { id = 6299, chance = 390 }, -- death ring + { name = "demonic essence", chance = 19430 }, + { name = "flask of demonic blood", chance = 65250 }, + { name = "assassin star", chance = 10780, maxCount = 5 }, + { name = "mercenary sword", chance = 1890 }, + { name = "bloody edge", chance = 80 }, + { name = "great mana potion", chance = 15000, maxCount = 3 }, + { name = "ultimate health potion", chance = 15410 }, + { name = "unholy bone", chance = 18410 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "betrayed wraith skill reducer", interval = 2000, chance = 10, target = false }, + { name = "speed", interval = 2000, chance = 20, speedChange = -600, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = true, duration = 3000 }, +} + +monster.defenses = { + defense = 55, + armor = 42, + mitigation = 1.46, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 350, maxDamage = 600, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "invisible", interval = 2000, chance = 10 }, + { name = "speed", interval = 2000, chance = 15, speedChange = 460, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 50 }, + { type = COMBAT_HOLYDAMAGE, percent = -20 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/blightwalker.lua b/data-canary/monster/undeads/blightwalker.lua new file mode 100644 index 00000000000..d900484b19f --- /dev/null +++ b/data-canary/monster/undeads/blightwalker.lua @@ -0,0 +1,141 @@ +local mType = Game.createMonsterType("Blightwalker") +local monster = {} + +monster.description = "a blightwalker" +monster.experience = 6400 +monster.outfit = { + lookType = 246, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 298 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Pits of Inferno, Edron (In the Vats during The Inquisition Quest), Roshamuul Prison, Grounds of Undeath.", +} + +monster.health = 8100 +monster.maxHealth = 8100 +monster.race = "undead" +monster.corpse = 6353 +monster.speed = 175 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + health = 10, + damage = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 800, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "I can see you decaying!", yell = false }, + { text = "Let me taste your mortality!", yell = false }, + { text = "Your lifeforce is waning!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 197 }, + { name = "platinum coin", chance = 100000, maxCount = 5 }, + { name = "amulet of loss", chance = 120 }, + { name = "gold ring", chance = 1870 }, + { name = "hailstorm rod", chance = 10000 }, + { name = "garlic necklace", chance = 2050 }, + { name = "blank rune", chance = 26250, maxCount = 2 }, + { name = "golden sickle", chance = 350 }, + { name = "skull staff", chance = 1520 }, + { name = "scythe", chance = 3000 }, + { name = "bunch of wheat", chance = 50000 }, + { name = "soul orb", chance = 23720 }, + { id = 6299, chance = 1410 }, -- death ring + { name = "demonic essence", chance = 28000 }, + { name = "assassin star", chance = 5900, maxCount = 10 }, + { name = "great mana potion", chance = 31360, maxCount = 3 }, + { id = 281, chance = 4450 }, -- giant shimmering pearl (green) + { id = 282, chance = 4450 }, -- giant shimmering pearl (brown) + { name = "seeds", chance = 4300 }, + { name = "terra mantle", chance = 1050 }, + { name = "terra legs", chance = 2500 }, + { name = "ultimate health potion", chance = 14720, maxCount = 2 }, + { name = "gold ingot", chance = 5270 }, + { name = "bundle of cursed straw", chance = 15000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -490 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -220, maxDamage = -405, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -65, maxDamage = -135, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false }, + { name = "blightwalker curse", interval = 2000, chance = 15, target = false }, + { name = "speed", interval = 2000, chance = 10, speedChange = -300, range = 7, shootEffect = CONST_ANI_POISON, target = true, duration = 15000 }, +} + +monster.defenses = { + defense = 50, + armor = 63, + mitigation = 1.18, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 50 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = -30 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/blood_beast.lua b/data-canary/monster/undeads/blood_beast.lua new file mode 100644 index 00000000000..85af4da4b8f --- /dev/null +++ b/data-canary/monster/undeads/blood_beast.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Blood Beast") +local monster = {} + +monster.description = "a blood beast" +monster.experience = 1000 +monster.outfit = { + lookType = 602, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1040 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Oramond/Southern Plains, Lower Rathleton, Oramond/Western Plains, \z + Underground Glooth Factory, Jaccus Maxxen's Dungeon.", +} + +monster.health = 1600 +monster.maxHealth = 1600 +monster.race = "venom" +monster.corpse = 20980 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 4, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Roarr!", yell = false }, +} + +monster.loot = { + { id = 21178, chance = 2010 }, -- glooth club + { id = 9640, chance = 3080 }, -- poisonous slime + { id = 21146, chance = 2720 }, -- glooth steak + { id = 3031, chance = 100000, maxCount = 139 }, -- gold coin + { id = 21194, chance = 1040 }, -- slime heart + { id = 236, chance = 7710 }, -- strong health potion + { id = 7366, chance = 1290, maxCount = 5 }, -- viper star + { id = 21183, chance = 250 }, -- glooth amulet + { id = 21179, chance = 210 }, -- glooth blade + { id = 21178, chance = 210 }, -- glooth club + { id = 21180, chance = 250 }, -- glooth axe + { id = 21158, chance = 280 }, -- glooth spear +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 82, attack = 50, condition = { type = CONDITION_POISON, totalDamage = 260, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -65, maxDamage = -105, range = 5, shootEffect = CONST_ANI_GREENSTAR, effect = CONST_ME_POISONAREA, target = true }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 17, minDamage = -300, maxDamage = -400, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false }, +} + +monster.defenses = { + defense = 36, + armor = 32, + mitigation = 1.18, + { name = "speed", interval = 2000, chance = 8, speedChange = 314, effect = CONST_ME_MAGIC_RED, target = false, duration = 6000 }, + { name = "combat", interval = 2000, chance = 7, type = COMBAT_HEALING, minDamage = 80, maxDamage = 120, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/bonebeast.lua b/data-canary/monster/undeads/bonebeast.lua new file mode 100644 index 00000000000..f97d29cdb03 --- /dev/null +++ b/data-canary/monster/undeads/bonebeast.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Bonebeast") +local monster = {} + +monster.description = "a bonebeast" +monster.experience = 580 +monster.outfit = { + lookType = 101, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 101 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Old Fortress, Ankrahmun Tombs, Helheim, Ramoa, Lich Hell, beneath Fenrock, Deeper Banuta, \z + Vengoth Castle, Vandura Mountain, Robson's Isle, Middle Spike, Lion's Rock, Mother of Scarabs Lair, Caverna Exanima.", +} + +monster.health = 515 +monster.maxHealth = 515 +monster.race = "undead" +monster.corpse = 6030 +monster.speed = 109 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Knooorrrrr!", yell = false }, + { text = "Cccchhhhhhhhh!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 90 }, + { id = 3114, chance = 20000 }, -- skull + { id = 3115, chance = 47750 }, -- bone + { name = "bone club", chance = 4950 }, + { name = "plate armor", chance = 8000 }, + { name = "bone shield", chance = 2000 }, + { name = "green mushroom", chance = 1350 }, + { name = "hardened bone", chance = 960 }, + { name = "health potion", chance = 540 }, + { name = "bonebeast trophy", chance = 120 }, + { name = "bony tail", chance = 9780 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200, condition = { type = CONDITION_POISON, totalDamage = 100, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -90, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -25, maxDamage = -47, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -50, maxDamage = -60, radius = 3, effect = CONST_ME_POISONAREA, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -70, maxDamage = -80, length = 6, spread = 0, effect = CONST_ME_POISONAREA, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -600, target = true, duration = 13000 }, +} + +monster.defenses = { + defense = 30, + armor = 40, + mitigation = 1.15, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 50, maxDamage = 60, effect = CONST_ME_HITBYPOISON, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/burster_spectre.lua b/data-canary/monster/undeads/burster_spectre.lua new file mode 100644 index 00000000000..82636edfa0c --- /dev/null +++ b/data-canary/monster/undeads/burster_spectre.lua @@ -0,0 +1,143 @@ +local mType = Game.createMonsterType("Burster Spectre") +local monster = {} + +monster.description = "a burster spectre" +monster.experience = 6000 +monster.outfit = { + lookType = 1122, + lookHead = 9, + lookBody = 10, + lookLegs = 86, + lookFeet = 79, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1726 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Haunted Tomb west of Darashia, Buried Cathedral.", +} + +monster.health = 6500 +monster.maxHealth = 6500 +monster.race = "blood" +monster.corpse = 30163 +monster.speed = 200 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "We came tooo thiiiiss wooorld to... get youuu!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 7 }, + { name = "great spirit potion", chance = 100000, maxCount = 3 }, + { name = "protection amulet", chance = 15000 }, + { name = "life crystal", chance = 12050 }, + { name = "silver amulet", chance = 15000 }, + { name = "wand of voodoo", chance = 11050 }, + { name = "wand of cosmic energy", chance = 11800 }, + { name = "dragon necklace", chance = 16600 }, + { name = "stone skin amulet", chance = 8860 }, + { id = 30082, chance = 15600 }, -- blue ectoplasm + { name = "glacier amulet", chance = 16890 }, + { name = "orb", chance = 18980 }, + { name = "hailstorm rod", chance = 17550 }, + { name = "elven amulet", chance = 1800 }, + { name = "garlic necklace", chance = 2640 }, + { name = "platinum amulet", chance = 2600 }, + { name = "mind stone", chance = 1800 }, + { name = "glacial rod", chance = 520 }, + { name = "shockwave amulet", chance = 620 }, + { name = "strange symbol", chance = 720 }, + { name = "hexagonal ruby", chance = 480 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2700, chance = 25, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -400, radius = 1, range = 5, effect = CONST_ME_ICEAREA, target = true }, --ice box + { name = "combat", interval = 3500, chance = 25, type = COMBAT_ICEDAMAGE, minDamage = -300, maxDamage = -400, radius = 5, range = 5, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEAREA, target = true }, --ava + { name = "combat", interval = 3900, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -300, maxDamage = -400, range = 5, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true }, -- icicle + { name = "combat", interval = 4400, chance = 27, type = COMBAT_ICEDAMAGE, minDamage = -300, maxDamage = -450, length = 4, spread = 2, effect = CONST_ME_ICEATTACK, target = false }, -- wave + { name = "combat", interval = 5500, chance = 47, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -400, radius = 3, effect = CONST_ME_BLUE_ENERGY_SPARK, target = false }, -- life drain bomb +} + +monster.defenses = { + defense = 70, + armor = 70, + mitigation = 2.11, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.reflects = { + { type = COMBAT_ICEDAMAGE, percent = 133 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 70 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/crypt_shambler.lua b/data-canary/monster/undeads/crypt_shambler.lua new file mode 100644 index 00000000000..3e682b43444 --- /dev/null +++ b/data-canary/monster/undeads/crypt_shambler.lua @@ -0,0 +1,126 @@ +local mType = Game.createMonsterType("Crypt Shambler") +local monster = {} + +monster.description = "a crypt shambler" +monster.experience = 195 +monster.outfit = { + lookType = 100, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 100 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Ankrahmun Tombs, Trapwood, Ramoa, Hellgate, Helheim, Mount Sternum Undead Cave, Deeper Catacombs, \z + Cemetery Quarter, Treasure Island, Upper Spike, Lion's Rock.", +} + +monster.health = 330 +monster.maxHealth = 330 +monster.race = "undead" +monster.corpse = 6029 +monster.speed = 70 +monster.manaCost = 580 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Aaaaahhhh!", yell = false }, + { text = "Hoooohhh!", yell = false }, + { text = "Uhhhhhhh!", yell = false }, + { text = "Chhhhhhh!", yell = false }, +} + +monster.loot = { + { name = "small diamond", chance = 510 }, + { name = "gold coin", chance = 57000, maxCount = 55 }, + { name = "rotten meat", chance = 1850 }, + { id = 3115, chance = 5000 }, -- bone + { name = "throwing star", chance = 910, maxCount = 3 }, + { name = "bone sword", chance = 1000 }, + { name = "iron helmet", chance = 2130 }, + { name = "iron helmet", chance = 2000 }, + { name = "bone shield", chance = 1000 }, + { name = "worm", chance = 9000, maxCount = 10 }, + { name = "half-digested piece of meat", chance = 5000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -140 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -28, maxDamage = -55, range = 1, target = true }, +} + +monster.defenses = { + defense = 25, + armor = 30, + mitigation = 0.64, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/crypt_warrior.lua b/data-canary/monster/undeads/crypt_warrior.lua new file mode 100644 index 00000000000..dad0cbe7529 --- /dev/null +++ b/data-canary/monster/undeads/crypt_warrior.lua @@ -0,0 +1,117 @@ +local mType = Game.createMonsterType("Crypt Warrior") +local monster = {} + +monster.description = "a crypt warrior" +monster.experience = 6050 +monster.outfit = { + lookType = 298, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.Bestiary = { + class = "Undead", + + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Bounac.", +} + +monster.health = 7800 +monster.maxHealth = 7800 +monster.race = "undead" +monster.corpse = 5972 +monster.speed = 155 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 43500, maxCount = 15 }, + { id = 3115, chance = 50000 }, -- bone + { name = "white mushroom", chance = 24000, maxCount = 3 }, + { name = "soul orb", chance = 43500, maxCount = 5 }, + { id = 3264, chance = 2630, maxCount = 1 }, -- sword + { name = "pelvis bone", chance = 2630, maxCount = 10 }, + { name = "unholy bone", chance = 2630, maxCount = 5 }, + { name = "ruthless axe", chance = 150 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -700 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -480, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 1500, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -380, maxDamage = -520, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 70, + mitigation = 2.02, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 5 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/cursed_ape.lua b/data-canary/monster/undeads/cursed_ape.lua new file mode 100644 index 00000000000..9e14582ef8f --- /dev/null +++ b/data-canary/monster/undeads/cursed_ape.lua @@ -0,0 +1,119 @@ +local mType = Game.createMonsterType("Cursed Ape") +local monster = {} + +monster.description = "a cursed ape" +monster.experience = 1860 +monster.outfit = { + lookType = 1592, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2347 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Iksupan", +} + +monster.health = 1700 +monster.maxHealth = 1700 +monster.race = "blood" +monster.corpse = 42073 +monster.speed = 108 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 96120, maxCount = 257 }, + { name = "gold coin", chance = 38670, maxCount = 11 }, + { name = "kongra's shoulderpad", chance = 13890 }, + { name = "small amethyst", chance = 8140, maxCount = 1 }, + { name = "protection amulet", chance = 2750 }, + { name = "plate armor", chance = 1630 }, + { name = "ape fur", chance = 1250 }, + { name = "health potion", chance = 500, maxCount = 1 }, + { id = 3050, chance = 380 }, -- power ring + { id = 3093, chance = 250 }, -- club ring +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -498 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -210, maxDamage = -225, radius = 2, effect = CONST_ME_MORTAREA, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 38, + mitigation = 1.37, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 40 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/cursed_prospector.lua b/data-canary/monster/undeads/cursed_prospector.lua new file mode 100644 index 00000000000..d9cca0090f5 --- /dev/null +++ b/data-canary/monster/undeads/cursed_prospector.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Cursed Prospector") +local monster = {} + +monster.description = "a cursed prospector" +monster.experience = 5250 +monster.outfit = { + lookType = 1268, + lookHead = 0, + lookBody = 19, + lookLegs = 0, + lookFeet = 38, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1880 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Barren Drift.", +} + +monster.health = 3900 +monster.maxHealth = 3900 +monster.race = "undead" +monster.corpse = 32610 +monster.speed = 210 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 3, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 5 }, + { name = "flash arrow", chance = 17700, maxCount = 10 }, + { name = "great spirit potion", chance = 15190, maxCount = 2 }, + { name = "spectral silver nugget", chance = 11520 }, + { name = "spectral gold nugget", chance = 5680 }, + { name = "emerald bangle", chance = 1340 }, + { name = "lightning boots", chance = 1340 }, + { name = "diamond", chance = 1000 }, + { name = "lightning robe", chance = 1000 }, + { name = "elven amulet", chance = 1000 }, + { name = "lightning legs", chance = 830 }, + { name = "shockwave amulet", chance = 500 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, + { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 1700, chance = 35, type = COMBAT_HOLYDAMAGE, minDamage = -250, maxDamage = -550, radius = 3, effect = CONST_ME_HOLYAREA, target = false }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -550, range = 4, radius = 4, effect = CONST_ME_ENERGYAREA, target = true }, +} + +monster.defenses = { + defense = 40, + armor = 85, + mitigation = 2.40, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 60 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 50 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/death_priest.lua b/data-canary/monster/undeads/death_priest.lua new file mode 100644 index 00000000000..4db69727008 --- /dev/null +++ b/data-canary/monster/undeads/death_priest.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Death Priest") +local monster = {} + +monster.description = "a death priest" +monster.experience = 750 +monster.outfit = { + lookType = 99, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 710 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Horestis Tomb.", +} + +monster.health = 800 +monster.maxHealth = 800 +monster.race = "undead" +monster.corpse = 12840 +monster.speed = 102 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + health = 10, + damage = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "white pearl", chance = 3000 }, + { name = "gold coin", chance = 70000, maxCount = 144 }, + { name = "scarab coin", chance = 10000, maxCount = 3 }, + { id = 3059, chance = 6800 }, -- spellbook + { id = 3098, chance = 1000 }, -- ring of healing + { name = "orichalcum pearl", chance = 6000, maxCount = 4 }, + { name = "health potion", chance = 15000 }, + { name = "mana potion", chance = 15000 }, + { id = 12482, chance = 27000 }, -- hieroglyph banner +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -250, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, +} + +monster.defenses = { + defense = 20, + armor = 38, + mitigation = 1.29, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 80, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 80 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -20 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/demon_skeleton.lua b/data-canary/monster/undeads/demon_skeleton.lua new file mode 100644 index 00000000000..c40806e299b --- /dev/null +++ b/data-canary/monster/undeads/demon_skeleton.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Demon Skeleton") +local monster = {} + +monster.description = "a demon skeleton" +monster.experience = 240 +monster.outfit = { + lookType = 37, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "UpperSpikeDeath", +} + +monster.raceId = 37 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Triangle Tower, Hellgate, Draconia, Plains of Havoc, Pits of Inferno, Thais Ancient Temple, \z + Fibula Dungeon, Mintwallin, Mount Sternum hidden cave, Drefia, Ghost Ship, Edron Hero Cave, Shadowthorn, \z + Elvenbane, Ghostlands, Femor Hills, White Flower Temple, Isle of the Kings, Dark Cathedral, Ankrahmun Tombs, \z + Ramoa, Helheim, Vengoth, Upper Spike, Lion's Rock.", +} + +monster.health = 400 +monster.maxHealth = 400 +monster.race = "undead" +monster.corpse = 5963 +monster.speed = 90 +monster.manaCost = 620 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 2920, chance = 5270 }, -- torch + { name = "black pearl", chance = 2900 }, + { name = "small ruby", chance = 1400 }, + { name = "gold coin", chance = 97000, maxCount = 75 }, + { name = "mind stone", chance = 520 }, + { name = "mysterious fetish", chance = 690 }, + { name = "throwing star", chance = 10000, maxCount = 3 }, + { name = "battle hammer", chance = 4000 }, + { name = "iron helmet", chance = 3450 }, + { name = "battle shield", chance = 5000 }, + { name = "guardian shield", chance = 100 }, + { name = "health potion", chance = 10120, maxCount = 2 }, + { name = "health potion", chance = 10000, maxCount = 2 }, + { name = "mana potion", chance = 5300 }, + { name = "demonic skeletal hand", chance = 12600 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -185 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -50, range = 1, radius = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, +} + +monster.defenses = { + defense = 30, + armor = 25, + mitigation = 0.91, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/elder_mummy.lua b/data-canary/monster/undeads/elder_mummy.lua new file mode 100644 index 00000000000..14aed7ecc21 --- /dev/null +++ b/data-canary/monster/undeads/elder_mummy.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Elder Mummy") +local monster = {} + +monster.description = "an elder mummy" +monster.experience = 560 +monster.outfit = { + lookType = 65, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 711 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Horestis Tomb.", +} + +monster.health = 850 +monster.maxHealth = 850 +monster.race = "undead" +monster.corpse = 6004 +monster.speed = 85 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + health = 10, + damage = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { id = 3007, chance = 1650 }, -- crystal ring + { name = "silver brooch", chance = 4000 }, + { name = "black pearl", chance = 1340 }, + { name = "gold coin", chance = 87000, maxCount = 160 }, + { name = "scarab coin", chance = 10000, maxCount = 3 }, + { name = "strange talisman", chance = 4500 }, + { id = 3046, chance = 6000 }, -- magic light wand + { name = "poison dagger", chance = 380 }, + { name = "worm", chance = 20000, maxCount = 3 }, + { name = "gauze bandage", chance = 10000 }, + { name = "flask of embalming fluid", chance = 12600 }, + { id = 12483, chance = 2400 }, -- pharaoh banner +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120, condition = { type = CONDITION_POISON, totalDamage = 3, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -130, range = 1, effect = CONST_ME_MORTAREA, target = true }, + { name = "speed", interval = 2000, chance = 15, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, +} + +monster.defenses = { + defense = 30, + armor = 35, + mitigation = 0.67, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/evil_prospector.lua b/data-canary/monster/undeads/evil_prospector.lua new file mode 100644 index 00000000000..5b12a767672 --- /dev/null +++ b/data-canary/monster/undeads/evil_prospector.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Evil Prospector") +local monster = {} + +monster.description = "an evil prospector" +monster.experience = 9000 +monster.outfit = { + lookType = 1268, + lookHead = 0, + lookBody = 14, + lookLegs = 0, + lookFeet = 34, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1885 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Barren Drift", +} + +monster.health = 8500 +monster.maxHealth = 8500 +monster.race = "undead" +monster.corpse = 32610 +monster.speed = 220 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 3, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 5 }, + { name = "spectral silver nugget", chance = 17110, maxCount = 2 }, + { name = "wand of starstorm", chance = 13160, maxCount = 10 }, + { name = "lightning pendant", chance = 9210 }, + { name = "emerald bangle", chance = 3950 }, + { name = "strange talisman", chance = 2630 }, + { name = "wand of defiance", chance = 2630 }, + { name = "lightning headband", chance = 1320 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, + { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -550, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 1700, chance = 35, type = COMBAT_HOLYDAMAGE, minDamage = -250, maxDamage = -400, radius = 3, effect = CONST_ME_HOLYAREA, target = false }, + { name = "combat", interval = 1700, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -450, range = 4, radius = 4, effect = CONST_ME_ENERGYAREA, target = true }, +} + +monster.defenses = { + defense = 40, + armor = 100, + mitigation = 2.81, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 65 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 35 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/falcon_knight.lua b/data-canary/monster/undeads/falcon_knight.lua new file mode 100644 index 00000000000..2e2ac28a1fe --- /dev/null +++ b/data-canary/monster/undeads/falcon_knight.lua @@ -0,0 +1,137 @@ +local mType = Game.createMonsterType("Falcon Knight") +local monster = {} + +monster.description = "a falcon knight" +monster.experience = 6300 +monster.outfit = { + lookType = 1071, + lookHead = 57, + lookBody = 96, + lookLegs = 38, + lookFeet = 105, + lookAddons = 1, + lookMount = 0, +} + +monster.raceId = 1646 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Falcon Bastion.", +} + +monster.health = 9000 +monster.maxHealth = 9000 +monster.race = "blood" +monster.corpse = 28621 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Mmmhaarrrgh!", yell = false }, +} + +monster.loot = { + { id = 3582, chance = 70080, maxCount = 8 }, -- ham + { name = "soul orb", chance = 35000 }, + { name = "great mana potion", chance = 33000, maxCount = 3 }, + { name = "great health potion", chance = 33000, maxCount = 3 }, + { name = "flask of demonic blood", chance = 30000, maxCount = 4 }, + { name = "small amethyst", chance = 24950, maxCount = 3 }, + { name = "assassin star", chance = 24670, maxCount = 10 }, + { name = "small diamond", chance = 15700, maxCount = 3 }, + { name = "small ruby", chance = 15333, maxCount = 3 }, + { name = "small emerald", chance = 15110, maxCount = 3 }, + { name = "onyx arrow", chance = 14480, maxCount = 15 }, + { name = "small topaz", chance = 4580, maxCount = 3 }, + { name = "titan axe", chance = 3000 }, + { id = 282, chance = 3000 }, -- giant shimmering pearl (brown) + { name = "spiked squelcher", chance = 2200 }, + { name = "knight armor", chance = 1980 }, + { name = "falcon crest", chance = 1250 }, + { name = "war axe", chance = 1230 }, + { name = "violet gem", chance = 1060 }, + { name = "damaged armor plates", chance = 990 }, + { name = "green gem", chance = 880 }, + { name = "golden armor", chance = 840 }, + { name = "mastermind shield", chance = 620 }, + { name = "heavy mace", chance = 460 }, + { id = 3481, chance = 370 }, -- closed trap + { id = 3019, chance = 100 }, -- demonbone amulet +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2000, chance = 18, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -500, radius = 2, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -290, maxDamage = -360, length = 5, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, +} + +monster.defenses = { + defense = 86, + armor = 86, + mitigation = 2.37, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 30 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/falcon_paladin.lua b/data-canary/monster/undeads/falcon_paladin.lua new file mode 100644 index 00000000000..cc6a41571e4 --- /dev/null +++ b/data-canary/monster/undeads/falcon_paladin.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Falcon Paladin") +local monster = {} + +monster.description = "a falcon paladin" +monster.experience = 6900 +monster.outfit = { + lookType = 1071, + lookHead = 57, + lookBody = 96, + lookLegs = 38, + lookFeet = 105, + lookAddons = 2, + lookMount = 0, +} + +monster.raceId = 1647 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Falcon Bastion.", +} + +monster.health = 8500 +monster.maxHealth = 8500 +monster.race = "blood" +monster.corpse = 28861 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Uuunngh!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 90000, maxCount = 5 }, + { name = "small diamond", chance = 41000, maxCount = 2 }, + { name = "great spirit potion", chance = 41000, maxCount = 2 }, + { name = "small emerald", chance = 40000, maxCount = 2 }, + { name = "small amethyst", chance = 40000, maxCount = 3 }, + { name = "assassin star", chance = 25700, maxCount = 10 }, + { name = "small ruby", chance = 20700, maxCount = 2 }, + { name = "small topaz", chance = 20100, maxCount = 2 }, + { name = "onyx arrow", chance = 14000, maxCount = 15 }, + { id = 3039, chance = 7500, maxCount = 3 }, -- red gem + { name = "green gem", chance = 4880 }, + { name = "violet gem", chance = 4180 }, + { id = 282, chance = 2260 }, -- giant shimmering pearl (brown) + { name = "damaged armor plates", chance = 1120 }, + { name = "falcon crest", chance = 730 }, + { name = "golden armor", chance = 310 }, + { name = "mastermind shield", chance = 310 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -550, range = 5, shootEffect = CONST_ANI_ROYALSPEAR, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = 500, range = 5, shootEffect = CONST_ANI_BOLT, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -450, range = 7, radius = 2, shootEffect = CONST_ANI_POWERBOLT, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -350, length = 5, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, +} + +monster.defenses = { + defense = 50, + armor = 82, + mitigation = 2.31, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/flimsy_lost_soul.lua b/data-canary/monster/undeads/flimsy_lost_soul.lua new file mode 100644 index 00000000000..7ff4d5bc65f --- /dev/null +++ b/data-canary/monster/undeads/flimsy_lost_soul.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Flimsy Lost Soul") +local monster = {} + +monster.description = "a flimsy lost soul" +monster.experience = 4500 +monster.outfit = { + lookType = 1268, + lookHead = 0, + lookBody = 6, + lookLegs = 0, + lookFeet = 116, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1864 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Brain Grounds, Netherworld, Zarganash.", +} + +monster.health = 4000 +monster.maxHealth = 4000 +monster.race = "undead" +monster.corpse = 32610 +monster.speed = 240 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 2 }, + { name = "lost soul", chance = 30300 }, + { name = "wand of cosmic energy", chance = 5220 }, + { name = "springsprout rod", chance = 3830 }, + { name = "death toll", chance = 3540 }, + { name = "terra rod", chance = 3030 }, + { name = "hailstorm rod", chance = 2830 }, + { name = "ensouled essence", chance = 2260 }, + { name = "necklace of the deep", chance = 1760 }, + { name = "cursed bone", chance = 1570 }, + { name = "wand of starstorm", chance = 1520 }, + { name = "glacial rod", chance = 960 }, + { name = "wand of voodoo", chance = 330 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, + { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 79, + mitigation = 2.22, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 50 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -20 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/freakish_lost_soul.lua b/data-canary/monster/undeads/freakish_lost_soul.lua new file mode 100644 index 00000000000..ec039b48d86 --- /dev/null +++ b/data-canary/monster/undeads/freakish_lost_soul.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Freakish Lost Soul") +local monster = {} + +monster.description = "a freakish lost soul" +monster.experience = 7020 +monster.outfit = { + lookType = 1268, + lookHead = 0, + lookBody = 74, + lookLegs = 0, + lookFeet = 83, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1866 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Brain Grounds, Netherworld, Zarganash.", +} + +monster.health = 7000 +monster.maxHealth = 7000 +monster.race = "undead" +monster.corpse = 32610 +monster.speed = 260 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 10000, maxCount = 3 }, + { name = "lost soul", chance = 45240 }, + { name = "death toll", chance = 6250 }, + { name = "emerald bangle", chance = 5980 }, + { name = "gemmed figurine", chance = 3800 }, + { name = "ensouled essence", chance = 2720 }, + { id = 23529, chance = 1220 }, -- ring of blue plasma + { name = "silver hand mirror", chance = 1090 }, + { name = "ornate crossbow", chance = 1090 }, + { name = "crystal crossbow", chance = 270 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, + { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -550, radius = 4, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 1700, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, radius = 4, effect = CONST_ME_ENERGYAREA, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 85, + mitigation = 2.60, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 60 }, + { type = COMBAT_ENERGYDAMAGE, percent = 35 }, + { type = COMBAT_EARTHDAMAGE, percent = 70 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -40 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/gazer_spectre.lua b/data-canary/monster/undeads/gazer_spectre.lua new file mode 100644 index 00000000000..771af290b31 --- /dev/null +++ b/data-canary/monster/undeads/gazer_spectre.lua @@ -0,0 +1,138 @@ +local mType = Game.createMonsterType("Gazer Spectre") +local monster = {} + +monster.description = "a gazer spectre" +monster.experience = 4200 +monster.outfit = { + lookType = 1122, + lookHead = 94, + lookBody = 21, + lookLegs = 77, + lookFeet = 78, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1725 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Haunted Temple, Buried Cathedral", +} + +monster.health = 4500 +monster.maxHealth = 4500 +monster.race = "blood" +monster.corpse = 30167 +monster.speed = 195 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Deathhh... is... a.... doooor!!", yell = false }, + { text = "Tiiimeee... is... a... windowww!", yell = false }, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 5 }, + { name = "brown crystal splinter", chance = 900 }, + { name = "red crystal fragment", chance = 8500 }, + { name = "small enchanted ruby", chance = 7500 }, + { name = "small diamond", chance = 6000 }, + { name = "small sapphire", chance = 5000 }, + { id = 3039, chance = 4000 }, -- red gem + { name = "yellow gem", chance = 3000 }, + { id = 29299, chance = 1100 }, -- golden idol of tukh + { name = "wand of draconia", chance = 3500 }, + { name = "wand of inferno", chance = 1100 }, + { id = 30084, chance = 700 }, -- red ectoplasm + { name = "magma coat", chance = 900 }, + { name = "prismatic quartz", chance = 1500 }, + { name = "small enchanted emerald", chance = 800 }, + { name = "onyx chip", chance = 770 }, + { name = "hexagonal ruby", chance = 500 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 2500, chance = 35, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 3000, chance = 35, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -450, radius = 5, range = 5, effect = CONST_ME_FIREATTACK, target = true }, + { name = "combat", interval = 3700, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -400, range = 7, effect = CONST_ME_YELLOWENERGY, shootEffect = CONST_ANI_ENERGYBALL, target = true }, +} + +monster.defenses = { + defense = 78, + armor = 68, + mitigation = 2.02, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.reflects = { + { type = COMBAT_FIREDAMAGE, percent = 133 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 85 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 70 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -30 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/ghost.lua b/data-canary/monster/undeads/ghost.lua new file mode 100644 index 00000000000..d876992c9ed --- /dev/null +++ b/data-canary/monster/undeads/ghost.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Ghost") +local monster = {} + +monster.description = "a ghost" +monster.experience = 120 +monster.outfit = { + lookType = 48, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 48 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Ghost Ship, Drefia, Ankrahmun Tombs, Mount Sternum Undead Cave between Thais and Kazordoon, \z + Dark Cathedral, under Treasure Island, Isle of the Kings, Grothmok tunnels (in Dwarven Mines), Goroma, \z + Ramoa, Lich Hell, Upper Spike.", +} + +monster.health = 150 +monster.maxHealth = 150 +monster.race = "undead" +monster.corpse = 5993 +monster.speed = 80 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Huh!", yell = false }, + { text = "Shhhhhh", yell = false }, + { text = "Buuuuuh", yell = false }, +} + +monster.loot = { + { id = 2828, chance = 1310 }, -- book + { id = 3049, chance = 180 }, -- stealth ring + { name = "morning star", chance = 10610 }, + { name = "combat knife", chance = 7002 }, + { name = "ancient shield", chance = 860 }, + { name = "cape", chance = 8800 }, + { name = "shadow herb", chance = 14400 }, + { name = "white piece of cloth", chance = 1940 }, + { name = "ghostly tissue", chance = 1870 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -45, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, +} + +monster.defenses = { + defense = 5, + armor = 10, + mitigation = 0.51, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/ghoul.lua b/data-canary/monster/undeads/ghoul.lua index 2e12419d11b..daa8681f524 100644 --- a/data-canary/monster/undeads/ghoul.lua +++ b/data-canary/monster/undeads/ghoul.lua @@ -81,16 +81,16 @@ monster.voices = { monster.loot = { { id = 2920, chance = 5000 }, -- torch - { id = 3031, chance = 68000, maxCount = 30 }, -- gold coin + { name = "gold coin", chance = 68000, maxCount = 30 }, { id = 3052, chance = 180 }, -- life ring { id = 3114, chance = 240 }, -- skull - { id = 3367, chance = 990 }, -- viking helmet - { id = 3377, chance = 1000 }, -- scale armor - { id = 3492, chance = 9600, maxCount = 2 }, -- worm - { id = 5913, chance = 1000 }, -- brown piece of cloth - { id = 10291, chance = 14470 }, -- rotten piece of cloth - { id = 11467, chance = 5130 }, -- ghoul snack - { id = 11484, chance = 950 }, -- pile of grave earth + { name = "viking helmet", chance = 990 }, + { name = "scale armor", chance = 1000 }, + { name = "worm", chance = 9600, maxCount = 2 }, + { name = "brown piece of cloth", chance = 1000 }, + { name = "rotten piece of cloth", chance = 14470 }, + { name = "ghoul snack", chance = 5130 }, + { name = "pile of grave earth", chance = 950 }, { id = 23986, chance = 1000 }, -- heavy old tome } @@ -101,7 +101,8 @@ monster.attacks = { monster.defenses = { defense = 15, - armor = 15, + armor = 8, + mitigation = 0.43, { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 9, maxDamage = 15, effect = CONST_ME_MAGIC_BLUE, target = false }, } diff --git a/data-canary/monster/undeads/grave_guard.lua b/data-canary/monster/undeads/grave_guard.lua new file mode 100644 index 00000000000..3ddffeb2044 --- /dev/null +++ b/data-canary/monster/undeads/grave_guard.lua @@ -0,0 +1,121 @@ +local mType = Game.createMonsterType("Grave Guard") +local monster = {} + +monster.description = "a grave guard" +monster.experience = 485 +monster.outfit = { + lookType = 234, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 707 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Horestis Tomb.", +} + +monster.health = 720 +monster.maxHealth = 720 +monster.race = "undead" +monster.corpse = 12840 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 30 }, + { name = "scarab coin", chance = 4166 }, + { name = "daramian waraxe", chance = 1170 }, + { name = "grave flower", chance = 70000 }, + { id = 6299, chance = 1754 }, -- death ring + { name = "health potion", chance = 20000 }, + { name = "mana potion", chance = 20000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -147 }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, radius = 1, effect = CONST_ME_SOUND_BLUE, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 35, + mitigation = 1.24, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = 90 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/gravedigger.lua b/data-canary/monster/undeads/gravedigger.lua new file mode 100644 index 00000000000..f884645d0ec --- /dev/null +++ b/data-canary/monster/undeads/gravedigger.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Gravedigger") +local monster = {} + +monster.description = "a gravedigger" +monster.experience = 950 +monster.outfit = { + lookType = 558, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 975 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Around the higher level areas of Drefia, \z + including the Drefia Grim Reaper Dungeons and the Drefia Vampire Crypt.", +} + +monster.health = 1500 +monster.maxHealth = 1500 +monster.race = "blood" +monster.corpse = 18962 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 200, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "High Five!", yell = false }, + { text = "scrabble", yell = false }, + { text = "Put it there!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 137 }, + { name = "platinum coin", chance = 24470 }, + { name = "yellow gem", chance = 800 }, + { name = "wand of inferno", chance = 5590 }, + { name = "sudden death rune", chance = 7300 }, + { name = "skull staff", chance = 130 }, + { name = "mysterious voodoo skull", chance = 100 }, + { id = 6299, chance = 800 }, -- death ring + { name = "strong health potion", chance = 2260, maxCount = 2 }, + { name = "strong mana potion", chance = 3600, maxCount = 2 }, + { name = "unholy bone", chance = 9570 }, + { name = "pile of grave earth", chance = 6650 }, + { name = "safety pin", chance = 6000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -320, condition = { type = CONDITION_POISON, totalDamage = 180, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -40, maxDamage = -250, range = 1, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -175, maxDamage = -300, range = 1, shootEffect = CONST_ANI_DEATH, target = false }, + { name = "drunk", interval = 2000, chance = 10, radius = 5, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 4000 }, +} + +monster.defenses = { + defense = 20, + armor = 58, + mitigation = 1.68, + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_RED }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 420, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = -5 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/grim_reaper.lua b/data-canary/monster/undeads/grim_reaper.lua new file mode 100644 index 00000000000..b43c7cc64fb --- /dev/null +++ b/data-canary/monster/undeads/grim_reaper.lua @@ -0,0 +1,138 @@ +local mType = Game.createMonsterType("Grim Reaper") +local monster = {} + +monster.description = "a grim reaper" +monster.experience = 5500 +monster.outfit = { + lookType = 300, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 465 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Drefia Grim Reaper Dungeons, deep in Drefia Wyrm Lair (after the Medusa Shield Quest), \z + Edron (Hero Cave), Yalahar (Cemetery Quarter), Oramond Dungeon, \z + Abandoned Sewers and optionally in the Demon Oak Quest.", +} + +monster.health = 3900 +monster.maxHealth = 3900 +monster.race = "undead" +monster.corpse = 8127 +monster.speed = 160 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 80, + health = 10, + damage = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Death!", yell = false }, + { text = "Come a little closer!", yell = false }, + { text = "The end is near!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 99000, maxCount = 263 }, + { name = "platinum coin", chance = 5200, maxCount = 4 }, + { id = 3046, chance = 4850 }, -- magic light wand + { name = "dark shield", chance = 3000 }, + { name = "scythe", chance = 9000 }, + { name = "orichalcum pearl", chance = 1400, maxCount = 4 }, + { id = 6299, chance = 330 }, -- death ring + { name = "demonic essence", chance = 10600 }, + { name = "flask of demonic blood", chance = 35000 }, + { name = "nightmare blade", chance = 880 }, + { name = "great mana potion", chance = 10000 }, + { name = "glacier kilt", chance = 330 }, + { name = "ultimate health potion", chance = 9600 }, + { name = "skullcracker armor", chance = 270 }, + { name = "underworld rod", chance = 910 }, + { id = 8896, chance = 2500 }, -- slightly rusted armor + { name = "mystical hourglass", chance = 5300 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -320 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -165, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -720, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, effect = CONST_ME_MORTAREA, target = false }, +} + +monster.defenses = { + defense = 35, + armor = 30, + mitigation = 0.64, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 130, maxDamage = 205, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 25 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 40 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 65 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 80 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/hand_of_cursed_fate.lua b/data-canary/monster/undeads/hand_of_cursed_fate.lua new file mode 100644 index 00000000000..527d0708730 --- /dev/null +++ b/data-canary/monster/undeads/hand_of_cursed_fate.lua @@ -0,0 +1,145 @@ +local mType = Game.createMonsterType("Hand of Cursed Fate") +local monster = {} + +monster.description = "a hand of cursed fate" +monster.experience = 5000 +monster.outfit = { + lookType = 230, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 281 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Pits of Inferno, The Battlefield, The Arcanum, The Blood Halls and The Crystal Caves.", +} + +monster.health = 6600 +monster.maxHealth = 6600 +monster.race = "blood" +monster.corpse = 6311 +monster.speed = 130 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 20, + targetDistance = 1, + runHealth = 3500, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "emerald bangle", chance = 3500 }, + { name = "small sapphire", chance = 11000, maxCount = 4 }, + { name = "gold coin", chance = 60000, maxCount = 100 }, + { name = "gold coin", chance = 60000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 67 }, + { name = "platinum coin", chance = 100000, maxCount = 7 }, + { name = "violet gem", chance = 700 }, + { name = "yellow gem", chance = 5940 }, + { id = 3051, chance = 3150 }, -- energy ring + { name = "platinum amulet", chance = 1005 }, + { name = "mind stone", chance = 9090 }, + { name = "wand of inferno", chance = 5590 }, + { name = "boots of haste", chance = 540 }, + { name = "protection amulet", chance = 8740 }, + { name = "sudden death rune", chance = 4200, maxCount = 8 }, + { name = "skull staff", chance = 700 }, + { name = "knight armor", chance = 4550 }, + { name = "crown armor", chance = 1400 }, + { name = "mysterious voodoo skull", chance = 247 }, + { name = "soul orb", chance = 31111 }, + { id = 6299, chance = 1750 }, -- death ring + { name = "demonic essence", chance = 12000 }, + { name = "flask of demonic blood", chance = 30000, maxCount = 4 }, + { name = "assassin star", chance = 7692, maxCount = 5 }, + { name = "abyss hammer", chance = 495 }, + { name = "great mana potion", chance = 19990, maxCount = 2 }, + { name = "ultimate health potion", chance = 18000 }, + { name = "gold ingot", chance = 700 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -520, condition = { type = CONDITION_POISON, totalDamage = 380, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -620, range = 1, target = false }, + { name = "drunk", interval = 2000, chance = 10, radius = 4, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 3000 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -220, maxDamage = -880, range = 1, effect = CONST_ME_SMALLCLOUDS, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 53, + mitigation = 1.88, + { name = "speed", interval = 2000, chance = 15, speedChange = 1000, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_MAGIC_BLUE }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/hazardous_phantom.lua b/data-canary/monster/undeads/hazardous_phantom.lua new file mode 100644 index 00000000000..1cd1eb7d38c --- /dev/null +++ b/data-canary/monster/undeads/hazardous_phantom.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Hazardous Phantom") +local monster = {} + +monster.description = "a hazardous phantom" +monster.experience = 66000 +monster.outfit = { + lookType = 1298, + lookHead = 114, + lookBody = 80, + lookLegs = 94, + lookFeet = 78, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 70000 +monster.maxHealth = 70000 +monster.race = "undead" +monster.corpse = 34125 +monster.speed = 100 +monster.manaCost = 0 + +monster.events = { + "HazardousPhantomDeath", +} + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "crystal coin", chance = 97640, maxCount = 4 }, + { name = "ultimate health potion", chance = 77950, maxCount = 5 }, + { name = "gold ingot", chance = 23620 }, + { name = "hailstorm rod", chance = 10240 }, + { name = "green gem", chance = 7090 }, + { name = "violet gem", chance = 5510 }, + { name = "gemmed figurine", chance = 4720 }, + { name = "hazardous robe", chance = 4720 }, + { name = "hazardous heart", chance = 3940 }, + { name = "blue gem", chance = 3150 }, + { name = "northwind rod", chance = 2360 }, + { name = "glacier robe", chance = 2360 }, + { id = 282, chance = 1570 }, -- giant shimmering pearl + { name = "wand of everblazing", chance = 790 }, + { id = 23542, chance = 790 }, -- collar of blue plasma + { name = "bag you desire", chance = 15 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1100 }, + { name = "combat", interval = 3000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -1050, maxDamage = -1400, range = 7, radius = 3, shootEffect = CONST_ANI_POISONARROW, effect = CONST_ME_GREEN_RINGS, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -900, maxDamage = -1250, length = 6, spread = 4, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "combat", interval = 3000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -1050, maxDamage = -1100, radius = 3, effect = CONST_ME_ICETORNADO, target = false }, + { name = "combat", interval = 3000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -1050, maxDamage = -1300, range = 7, radius = 4, effect = CONST_ME_ICEATTACK, target = true }, + { name = "ice chain", interval = 2000, chance = 15, minDamage = -1300, maxDamage = -1500, range = 7 }, + { name = "soulwars fear", interval = 2000, chance = 2, target = true }, +} + +monster.defenses = { + defense = 100, + armor = 100, + mitigation = 4.45, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/honour_guard.lua b/data-canary/monster/undeads/honour_guard.lua new file mode 100644 index 00000000000..08d216e0856 --- /dev/null +++ b/data-canary/monster/undeads/honour_guard.lua @@ -0,0 +1,120 @@ +local mType = Game.createMonsterType("Honour Guard") +local monster = {} + +monster.description = "a honour guard" +monster.experience = 55 +monster.outfit = { + lookType = 298, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 712 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 2, + Locations = "Desert north of Ankrahmun.", +} + +monster.health = 85 +monster.maxHealth = 85 +monster.race = "undead" +monster.corpse = 4024 +monster.speed = 77 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Horestis curse upon you!", yell = false }, + { text = "Vengeance!", yell = false }, + { text = "Thy punishment is at hand!", yell = false }, + { text = "For the pharao!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 15 }, + { name = "scarab coin", chance = 2600 }, + { name = "mace", chance = 3760 }, + { id = 3307, chance = 1640 }, -- scimitar + { name = "brown mushroom", chance = 6120, maxCount = 2 }, + { name = "pelvis bone", chance = 8700 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -5, maxDamage = -13, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 4, + mitigation = 0.20, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/iks_ahpututu.lua b/data-canary/monster/undeads/iks_ahpututu.lua new file mode 100644 index 00000000000..d1f44cd61d3 --- /dev/null +++ b/data-canary/monster/undeads/iks_ahpututu.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Iks Ahpututu") +local monster = {} + +monster.description = "an iks ahpututu" +monster.experience = 1700 +monster.outfit = { + lookType = 1590, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2349 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 5, + FirstUnlock = 1, + SecondUnlock = 2, + CharmsPoints = 50, + Stars = 3, + Occurrence = 0, + Locations = "Iksupan", +} + +monster.health = 1630 +monster.maxHealth = 1630 +monster.race = "blood" +monster.corpse = 42065 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 1000000, maxCount = 477 }, + { id = 281, chance = 7100 }, -- giant shimmering pearl (green) + { name = "tiger Eye", chance = 7100 }, + { name = "strong mana potion", chance = 6380, maxCount = 4 }, + { name = "small sapphire", chance = 4370, maxCount = 5 }, + { name = "daedal chisel", chance = 2910 }, + { name = "opal", chance = 1640, maxCount = 2 }, + { name = "ritual tooth", chance = 1460 }, + { name = "spellbook of enlightenment", chance = 1090 }, + { name = "gold ingot", chance = 730 }, + { name = "rotten feather", chance = 730 }, + { name = "broken iks faulds", chance = 360 }, + { name = "gold-brocaded cloth", chance = 360 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -235 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -120, maxDamage = -250, range = 7, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = false }, +} + +monster.defenses = { + defense = 35, + armor = 34, + mitigation = 1.26, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 25 }, + { type = COMBAT_FIREDAMAGE, percent = 5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/iks_aucar.lua b/data-canary/monster/undeads/iks_aucar.lua new file mode 100644 index 00000000000..efd711a01bd --- /dev/null +++ b/data-canary/monster/undeads/iks_aucar.lua @@ -0,0 +1,129 @@ +local mType = Game.createMonsterType("Iks Aucar") +local monster = {} + +monster.description = "an iks aucar" +monster.experience = 1150 +monster.outfit = { + lookType = 1587, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2344 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "Iksupan", +} + +monster.health = 1520 +monster.maxHealth = 1520 +monster.race = "blood" +monster.corpse = 42053 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Chaahrrr!", yell = false }, + { text = "Hrmmmh!", yell = false }, + { text = "Cathach!!", yell = false }, + { text = "Chaahrrr!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 475 }, + { name = "brown crystal splinter", chance = 15500 }, + { name = "green crystal splinter", chance = 15060 }, + { name = "small enchanted sapphire", chance = 10100 }, + { name = "plate shield", chance = 8720 }, + { name = "onyx chip", chance = 8060, maxCount = 2 }, + { name = "opal", chance = 7260 }, + { name = "small emerald", chance = 6820 }, + { name = "war hammer", chance = 5620 }, + { name = "strong health potion", chance = 5180, maxCount = 2 }, + { name = "small ruby", chance = 4300, maxCount = 2 }, + { name = "rotten feather", chance = 2170 }, + { name = "ritual tooth", chance = 1330 }, + { name = "gold-brocaded cloth", chance = 890 }, + { name = "broken iks sandals", chance = 40 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250, effect = CONST_ME_PURPLEENERGY }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -75, maxDamage = -100, length = 7, spread = 0, effect = 216, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -160, range = 1, radius = 0, effect = CONST_ME_EXPLOSIONHIT, target = true }, +} + +monster.defenses = { + defense = 25, + armor = 36, + mitigation = 1.32, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/iks_chuka.lua b/data-canary/monster/undeads/iks_chuka.lua new file mode 100644 index 00000000000..514011c9bd8 --- /dev/null +++ b/data-canary/monster/undeads/iks_chuka.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Iks Chuka") +local monster = {} + +monster.description = "an iks chuka" +monster.experience = 1050 +monster.outfit = { + lookType = 1588, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2345 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "Iksupan", +} + +monster.health = 1240 +monster.maxHealth = 1240 +monster.race = "blood" +monster.corpse = 42057 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 3, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Pucataaan!", yell = false }, + { text = "Mahrrrca!", yell = false }, + { text = "Puccahtaaan!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 382 }, + { name = "violet crystal shard", chance = 15870 }, + { name = "green crystal splinter", chance = 12350 }, + { name = "small sapphire", chance = 9940 }, + { name = "royal spear", chance = 3960, maxCount = 1 }, + { id = 3007, chance = 1760 }, -- crystal ring + { name = "rotten feather", chance = 1710 }, + { name = "ritual tooth", chance = 1340 }, + { name = "gold-brocaded cloth", chance = 960 }, + { name = "broken iks spear", chance = 110 }, + { name = "broken iks headpiece", chance = 50 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -175 }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -130, range = 4, shootEffect = CONST_ANI_ENCHANTEDSPEAR, target = true }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -110, maxDamage = -175, radius = 2, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -98, maxDamage = -114, range = 5, radius = 1, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, +} + +monster.defenses = { + defense = 30, + armor = 29, + mitigation = 0.99, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/iks_churrascan.lua b/data-canary/monster/undeads/iks_churrascan.lua new file mode 100644 index 00000000000..fd44b36f620 --- /dev/null +++ b/data-canary/monster/undeads/iks_churrascan.lua @@ -0,0 +1,119 @@ +local mType = Game.createMonsterType("Iks Churrascan") +local monster = {} + +monster.description = "an iks churrascan" +monster.experience = 0 +monster.outfit = { + lookType = 1587, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2350 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Iksupan", +} + +monster.health = 1520 +monster.maxHealth = 1520 +monster.race = "blood" +monster.corpse = 42061 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Gnahrgh!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 249 }, + { name = "brown crystal splinter", chance = 7080 }, + { name = "small enchanted sapphire", chance = 6990 }, + { name = "green crystal splinter", chance = 6220 }, + { name = "small emerald", chance = 4230 }, + { name = "onyx chip", chance = 3890 }, + { name = "small ruby", chance = 3540 }, + { name = "opal", chance = 3370 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250, effect = CONST_ME_PURPLEENERGY }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -75, maxDamage = -100, length = 7, spread = 0, effect = 216, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -160, range = 1, radius = 0, effect = CONST_ME_EXPLOSIONHIT, target = true }, +} + +monster.defenses = { + defense = 25, + armor = 36, + mitigation = 1.32, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/iks_pututu.lua b/data-canary/monster/undeads/iks_pututu.lua new file mode 100644 index 00000000000..bbf16a43d16 --- /dev/null +++ b/data-canary/monster/undeads/iks_pututu.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Iks Pututu") +local monster = {} + +monster.description = "an iks pututu" +monster.experience = 980 +monster.outfit = { + lookType = 1589, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2343 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "Iksupan", +} + +monster.health = 1310 +monster.maxHealth = 1310 +monster.race = "blood" +monster.corpse = 42061 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Attahch!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 389 }, + { id = 281, chance = 7100 }, -- giant shimmering pearl (green) + { name = "tiger eye", chance = 6910 }, + { name = "strong mana potion", chance = 6360, maxCount = 2 }, + { name = "small sapphire", chance = 5810, maxCount = 3 }, + { name = "spellbook of enlightenment", chance = 1920 }, + { name = "opal", chance = 1850 }, + { name = "gold-brocaded cloth", chance = 1780 }, + { name = "gold ingot", chance = 960 }, + { name = "broken iks headpiece", chance = 70 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -90, radius = 2, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -75, maxDamage = -95, length = 8, spread = 0, effect = CONST_ME_STONE_STORM, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -98, maxDamage = -114, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, +} + +monster.defenses = { + defense = 25, + armor = 32, + mitigation = 1.18, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 51, maxDamage = 71, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 25 }, + { type = COMBAT_FIREDAMAGE, percent = 5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/lich.lua b/data-canary/monster/undeads/lich.lua new file mode 100644 index 00000000000..f6caeb4ae96 --- /dev/null +++ b/data-canary/monster/undeads/lich.lua @@ -0,0 +1,151 @@ +local mType = Game.createMonsterType("Lich") +local monster = {} + +monster.description = "a lich" +monster.experience = 900 +monster.outfit = { + lookType = 99, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 99 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Ankrahmun Library Tomb, Ancient Ruins Tomb, Oasis Tomb, Mountain Tomb, Drefia, Kharos, \z + Pits of Inferno, Lich Hell in Ramoa, Cemetery Quarter in Yalahar, underground of Fenrock (on the way to Beregar). \z + Can also be seen during an undead raid in Darashia or Carlin.", +} + +monster.health = 880 +monster.maxHealth = 880 +monster.race = "undead" +monster.corpse = 6028 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + health = 10, + damage = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 4, + summons = { + { name = "Bonebeast", chance = 10, interval = 2000, count = 4 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Doomed be the living!", yell = false }, + { text = "Death awaits all!", yell = false }, + { text = "Thy living flesh offends me!", yell = false }, + { text = "Death and Decay!", yell = false }, + { text = "You will endure agony beyond thy death!", yell = false }, + { text = "Pain sweet pain!", yell = false }, + { text = "Come to me my children!", yell = false }, +} + +monster.loot = { + { name = "white pearl", chance = 5000 }, + { name = "black pearl", chance = 5960, maxCount = 3 }, + { name = "gold coin", chance = 100000, maxCount = 139 }, + { name = "small emerald", chance = 2230, maxCount = 3 }, + { name = "platinum coin", chance = 19720 }, + { name = "yellow gem", chance = 690 }, + { name = "platinum amulet", chance = 450 }, + { id = 3059, chance = 10000 }, -- spellbook + { name = "mind stone", chance = 350 }, + { id = 3098, chance = 1540 }, -- ring of healing + { name = "skull staff", chance = 550 }, + { name = "strange helmet", chance = 740 }, + { name = "ancient shield", chance = 2422 }, + { name = "castle shield", chance = 350 }, + { name = "blue robe", chance = 150 }, + { name = "strong mana potion", chance = 7500 }, + { name = "lightning boots", chance = 200 }, + { name = "small topaz", chance = 2430, maxCount = 3 }, + { name = "maxilla maximus", chance = 100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -75 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -140, maxDamage = -190, length = 7, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -300, maxDamage = -400, length = 7, spread = 0, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -245, range = 1, effect = CONST_ME_MAGIC_RED, target = true }, + { name = "speed", interval = 2000, chance = 15, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 30000 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -130, maxDamage = -195, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 50, + mitigation = 1.60, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 80, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 80 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -20 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/lost_soul.lua b/data-canary/monster/undeads/lost_soul.lua new file mode 100644 index 00000000000..d00e9eb9d18 --- /dev/null +++ b/data-canary/monster/undeads/lost_soul.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Lost Soul") +local monster = {} + +monster.description = "a lost soul" +monster.experience = 4000 +monster.outfit = { + lookType = 232, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 283 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Pits of Inferno, Formorgar Mines, Helheim, Roshamuul Prison and in The Arcanum Part of the Inquisition quest, Oramond Fury Dungeon", +} + +monster.health = 5800 +monster.maxHealth = 5800 +monster.race = "undead" +monster.corpse = 6309 +monster.speed = 190 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 15, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 450, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Mouuuurn meeee!", yell = false }, + { text = "Forgive Meee!", yell = false }, + { text = "Help meee!", yell = false }, +} + +monster.loot = { + { name = "ruby necklace", chance = 1500 }, + { name = "white pearl", chance = 10000, maxCount = 3 }, + { name = "black pearl", chance = 12000, maxCount = 3 }, + { name = "gold coin", chance = 100000, maxCount = 198 }, + { name = "platinum coin", chance = 100000, maxCount = 7 }, + { id = 3039, chance = 15000 }, -- red gem + { name = "stone skin amulet", chance = 2780 }, + { name = "blank rune", chance = 35250, maxCount = 3 }, + { name = "skull staff", chance = 850 }, + { name = "tower shield", chance = 740 }, + { name = "skull helmet", chance = 170 }, + { id = 5806, chance = 4950 }, -- silver goblet + { name = "soul orb", chance = 15000 }, + { id = 6299, chance = 2170 }, -- death ring + { name = "demonic essence", chance = 7500 }, + { name = "skeleton decoration", chance = 1250 }, + { name = "haunted blade", chance = 740 }, + { name = "titan axe", chance = 1000 }, + { name = "great mana potion", chance = 14200, maxCount = 2 }, + { name = "great health potion", chance = 8800, maxCount = 2 }, + { id = 8896, chance = 3500 }, -- slightly rusted armor + { name = "unholy bone", chance = 33010 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -420 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -40, maxDamage = -210, length = 3, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "speed", interval = 2000, chance = 20, speedChange = -800, radius = 6, effect = CONST_ME_SMALLCLOUDS, target = false, duration = 4000 }, +} + +monster.defenses = { + defense = 30, + armor = 28, + mitigation = 1.60, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 50 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/mean_lost_soul.lua b/data-canary/monster/undeads/mean_lost_soul.lua new file mode 100644 index 00000000000..8c25b2c4f4f --- /dev/null +++ b/data-canary/monster/undeads/mean_lost_soul.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Mean Lost Soul") +local monster = {} + +monster.description = "a mean lost soul" +monster.experience = 5580 +monster.outfit = { + lookType = 1268, + lookHead = 0, + lookBody = 14, + lookLegs = 0, + lookFeet = 83, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1865 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Brain Grounds, Netherworld, Zarganash.", +} + +monster.health = 5000 +monster.maxHealth = 5000 +monster.race = "undead" +monster.corpse = 32610 +monster.speed = 250 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 56040 }, + { name = "lost soul", chance = 36220 }, + { name = "death toll", chance = 4890 }, + { name = "skull staff", chance = 4540 }, + { name = "machete", chance = 3520 }, + { name = "ensouled essence", chance = 2760 }, + { name = "fire axe", chance = 1400 }, + { name = "ivory comb", chance = 1200 }, + { name = "mercenary sword", chance = 1050 }, + { name = "haunted blade", chance = 960 }, + { name = "warrior's axe", chance = 730 }, + { name = "twiceslicer", chance = 310 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, + { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -550, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 80, + mitigation = 2.31, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 55 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -30 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/mummy.lua b/data-canary/monster/undeads/mummy.lua index c856a67cb64..8ec377fbc7a 100644 --- a/data-canary/monster/undeads/mummy.lua +++ b/data-canary/monster/undeads/mummy.lua @@ -81,19 +81,19 @@ monster.voices = { monster.loot = { { id = 3007, chance = 1500 }, -- crystal ring - { id = 3017, chance = 4000 }, -- silver brooch - { id = 3027, chance = 1000 }, -- black pearl - { id = 3031, chance = 38000, maxCount = 80 }, -- gold coin - { id = 3045, chance = 5000 }, -- strange talisman + { name = "silver brooch", chance = 4000 }, + { name = "black pearl", chance = 1000 }, + { name = "gold coin", chance = 38000, maxCount = 80 }, + { name = "strange talisman", chance = 5000 }, { id = 3046, chance = 5800 }, -- magic light wand - { id = 3054, chance = 100 }, -- silver amulet - { id = 3299, chance = 450 }, -- poison dagger - { id = 3429, chance = 170 }, -- black shield - { id = 3492, chance = 19000, maxCount = 3 }, -- worm - { id = 5914, chance = 900 }, -- yellow piece of cloth - { id = 9649, chance = 10000 }, -- gauze bandage - { id = 10290, chance = 10 }, -- mini mummy - { id = 11466, chance = 11690 }, -- flask of embalming fluid + { name = "silver amulet", chance = 100 }, + { name = "poison dagger", chance = 450 }, + { name = "black shield", chance = 170 }, + { name = "worm", chance = 19000, maxCount = 3 }, + { name = "yellow piece of cloth", chance = 900 }, + { name = "gauze bandage", chance = 10000 }, + { name = "mini mummy", chance = 10 }, + { name = "flask of embalming fluid", chance = 11690 }, } monster.attacks = { @@ -104,7 +104,8 @@ monster.attacks = { monster.defenses = { defense = 15, - armor = 15, + armor = 14, + mitigation = 0.59, } monster.elements = { diff --git a/data-canary/monster/undeads/pirate_ghost.lua b/data-canary/monster/undeads/pirate_ghost.lua new file mode 100644 index 00000000000..e7790ce4248 --- /dev/null +++ b/data-canary/monster/undeads/pirate_ghost.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Pirate Ghost") +local monster = {} + +monster.description = "a pirate ghost" +monster.experience = 250 +monster.outfit = { + lookType = 196, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 257 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Drefia, Goroma, Nargor Undead Cave, hidden caves under Treasure Island, \z + single spawn at Liberty Bay ruins, Chyllfroest (unreachable).", +} + +monster.health = 275 +monster.maxHealth = 275 +monster.race = "undead" +monster.corpse = 5565 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Yooh Ho Hooh Ho!", yell = false }, + { text = "Hell is waiting for You!", yell = false }, + { text = "It's alive!", yell = false }, + { text = "The curse! Aww the curse!", yell = false }, + { text = "You will not get my treasure.", yell = false }, +} + +monster.loot = { + { id = 2817, chance = 910 }, -- blank parchment + { name = "gold coin", chance = 48000, maxCount = 67 }, + { id = 3049, chance = 650 }, -- stealth ring + { name = "spike sword", chance = 130 }, + { name = "red robe", chance = 130 }, + { name = "tattered piece of robe", chance = 4300 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, condition = { type = CONDITION_POISON, totalDamage = 40, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -40, maxDamage = -80, radius = 1, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -65, range = 7, radius = 3, effect = CONST_ME_SOUND_RED, target = true }, +} + +monster.defenses = { + defense = 0, + armor = 30, + mitigation = 0.78, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 40, maxDamage = 70, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/pirate_skeleton.lua b/data-canary/monster/undeads/pirate_skeleton.lua new file mode 100644 index 00000000000..db93edd98de --- /dev/null +++ b/data-canary/monster/undeads/pirate_skeleton.lua @@ -0,0 +1,115 @@ +local mType = Game.createMonsterType("Pirate Skeleton") +local monster = {} + +monster.description = "a pirate skeleton" +monster.experience = 85 +monster.outfit = { + lookType = 195, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 256 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Nargor Undead Cave, Goroma, Treasure Island, Drefia, The Cave, Chyllfroest.", +} + +monster.health = 190 +monster.maxHealth = 190 +monster.race = "undead" +monster.corpse = 6070 +monster.speed = 88 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 20, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 48000, maxCount = 25 }, + { id = 3114, chance = 4460 }, -- skull + { id = 3115, chance = 4250 }, -- bone + { id = 3116, chance = 5140 }, -- big bone + { id = 3264, chance = 550 }, -- sword + { name = "short sword", chance = 1003 }, + { name = "bone club", chance = 960 }, + { name = "spooky blue eye", chance = 4730 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, +} + +monster.defenses = { + defense = 15, + armor = 15, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/putrid_mummy.lua b/data-canary/monster/undeads/putrid_mummy.lua new file mode 100644 index 00000000000..dd29eb90880 --- /dev/null +++ b/data-canary/monster/undeads/putrid_mummy.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Putrid Mummy") +local monster = {} + +monster.description = "a putrid mummy" +monster.experience = 900 +monster.outfit = { + lookType = 976, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1415 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Caverna Exanima.", +} + +monster.health = 1500 +monster.maxHealth = 1500 +monster.race = "undead" +monster.corpse = 6004 +monster.speed = 85 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "We will make you one of us!", yell = false }, + { text = "Come to mummy!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 60870, maxCount = 62 }, + { id = 12483, chance = 3840 }, -- pharaoh banner + { name = "black pearl", chance = 1280 }, + { name = "little bowl of myrrh", chance = 13550 }, + { name = "single human eye", chance = 8950 }, + { name = "green gem", chance = 3070 }, + { name = "green bandage", chance = 1100 }, + { name = "scarab coin", chance = 8180, maxCount = 3 }, + { name = "poison dagger", chance = 1530 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -150, range = 1, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_CARNIPHILA, target = true }, + { name = "speed", interval = 2000, chance = 15, speedChange = -226, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true, duration = 10000 }, +} + +monster.defenses = { + defense = 40, + armor = 40, + mitigation = 0.91, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 100, maxDamage = 150, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/ripper_spectre.lua b/data-canary/monster/undeads/ripper_spectre.lua new file mode 100644 index 00000000000..e8a2175a1f2 --- /dev/null +++ b/data-canary/monster/undeads/ripper_spectre.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Ripper Spectre") +local monster = {} + +monster.description = "a ripper spectre" +monster.experience = 3500 +monster.outfit = { + lookType = 1122, + lookHead = 81, + lookBody = 78, + lookLegs = 61, + lookFeet = 94, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1724 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Haunted Cellar, Buried Cathedral", +} + +monster.health = 3800 +monster.maxHealth = 3800 +monster.race = "blood" +monster.corpse = 30026 +monster.speed = 190 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000, maxCount = 5 }, + { name = "great spirit potion", chance = 30910, maxCount = 2 }, + { name = "two handed sword", chance = 16500 }, + { name = "terra rod", chance = 4780 }, + { name = "silver brooch", chance = 15190 }, + { name = "emerald bangle", chance = 14740 }, + { name = "twin hooks", chance = 1170 }, + { name = "springsprout rod", chance = 1210 }, + { id = 30083, chance = 1890 }, -- green ectoplasm + { name = "coral brooch", chance = 1330 }, + { name = "serpent sword", chance = 1950 }, + { name = "hexagonal ruby", chance = 800 }, + { name = "assassin dagger", chance = 970 }, + { name = "spike sword", chance = 530 }, + { name = "wyvern fang", chance = 120 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -370 }, + { name = "combat", interval = 2000, chance = 18, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -425, radius = 4, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "combat", interval = 2800, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -350, maxDamage = -450, radius = 3, effect = CONST_ME_DRAWBLOOD, target = false }, + { name = "combat", interval = 3500, chance = 37, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -375, length = 3, spread = 2, effect = CONST_ME_GROUNDSHAKER, target = false }, +} + +monster.defenses = { + defense = 69, + armor = 69, + mitigation = 1.91, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 150, maxDamage = 200, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.reflects = { + { type = COMBAT_EARTHDAMAGE, percent = 133 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 70 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = -20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/rot_elemental.lua b/data-canary/monster/undeads/rot_elemental.lua new file mode 100644 index 00000000000..2c414687093 --- /dev/null +++ b/data-canary/monster/undeads/rot_elemental.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Rot Elemental") +local monster = {} + +monster.description = "a rot elemental" +monster.experience = 750 +monster.outfit = { + lookType = 615, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1055 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Rathleton Sewers, Glooth Factory, Lower Rathleton, Oramond/Western Plains, Jaccus Maxxen's Dungeon.", +} + +monster.health = 850 +monster.maxHealth = 850 +monster.race = "venom" +monster.corpse = 21110 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 2, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 3, + color = 143, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "*splib*", yell = false }, + { text = "*glibb*", yell = false }, +} + +monster.loot = { + { id = 3031, chance = 100000, maxCount = 80 }, -- gold coin + { id = 3035, chance = 10390 }, -- platinum coin + { id = 236, chance = 10310 }, -- strong health potion + { id = 237, chance = 9990 }, -- strong mana potion + { id = 21182, chance = 4320 }, -- glob of glooth + { id = 3052, chance = 1630 }, -- life ring + { id = 3029, chance = 1110 }, -- small sapphire + { id = 9057, chance = 1140, maxCount = 2 }, -- small topaz + { id = 3032, chance = 940, maxCount = 2 }, -- small emerald + { id = 3038, chance = 80 }, -- green gem + { id = 21183, chance = 130 }, -- glooth amulet + { id = 21180, chance = 60 }, -- glooth axe + { id = 21158, chance = 460 }, -- glooth spear +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, skill = 58, attack = 50, condition = { type = CONDITION_POISON, totalDamage = 280, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -250, range = 7, radius = 3, shootEffect = CONST_ANI_GLOOTHSPEAR, effect = CONST_ME_POISONAREA, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -230, length = 6, spread = 0, effect = CONST_ME_POISONAREA, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -200, maxDamage = -300, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, + { name = "rot elemental paralyze", interval = 2000, chance = 11, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 41, + mitigation = 1.07, + { name = "combat", interval = 2000, chance = 7, type = COMBAT_HEALING, minDamage = 40, maxDamage = 60, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 9, speedChange = 470, effect = CONST_ME_SMOKE, target = false, duration = 7000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 30 }, + { type = COMBAT_HOLYDAMAGE, percent = 20 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/skeleton.lua b/data-canary/monster/undeads/skeleton.lua index 8dac97e6575..22b05bff44d 100644 --- a/data-canary/monster/undeads/skeleton.lua +++ b/data-canary/monster/undeads/skeleton.lua @@ -77,14 +77,14 @@ monster.voices = { monster.loot = { { id = 2920, chance = 10000 }, -- torch { id = 2920, chance = 9880 }, -- torch - { id = 3031, chance = 43900, maxCount = 10 }, -- gold coin + { name = "gold coin", chance = 43900, maxCount = 10 }, { id = 3115, chance = 49100 }, -- bone { id = 3264, chance = 1940 }, -- sword - { id = 3276, chance = 4850 }, -- hatchet - { id = 3286, chance = 4850 }, -- mace - { id = 3367, chance = 7520 }, -- viking helmet - { id = 3411, chance = 2090 }, -- brass shield - { id = 11481, chance = 9940 }, -- pelvis bone + { name = "hatchet", chance = 4850 }, + { name = "mace", chance = 4850 }, + { name = "viking helmet", chance = 7520 }, + { name = "brass shield", chance = 2090 }, + { name = "pelvis bone", chance = 9940 }, { id = 23986, chance = 1000 }, -- heavy old tome } @@ -95,7 +95,8 @@ monster.attacks = { monster.defenses = { defense = 10, - armor = 10, + armor = 2, + mitigation = 0.23, } monster.elements = { @@ -107,7 +108,7 @@ monster.elements = { { type = COMBAT_MANADRAIN, percent = 0 }, { type = COMBAT_DROWNDAMAGE, percent = 100 }, { type = COMBAT_ICEDAMAGE, percent = 0 }, - { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, { type = COMBAT_DEATHDAMAGE, percent = 100 }, } diff --git a/data-canary/monster/undeads/skeleton_elite_warrior.lua b/data-canary/monster/undeads/skeleton_elite_warrior.lua new file mode 100644 index 00000000000..25ebd9c1f6d --- /dev/null +++ b/data-canary/monster/undeads/skeleton_elite_warrior.lua @@ -0,0 +1,119 @@ +local mType = Game.createMonsterType("Skeleton Elite Warrior") +local monster = {} + +monster.description = "a skeleton elite warrior" +monster.experience = 4800 +monster.outfit = { + lookType = 298, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1674 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Deep Desert.", +} + +monster.health = 7800 +monster.maxHealth = 7800 +monster.race = "undead" +monster.corpse = 5972 +monster.speed = 155 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 43500, maxCount = 15 }, + { id = 3115, chance = 50000 }, -- bone + { name = "white mushroom", chance = 24000, maxCount = 3 }, + { name = "soul orb", chance = 43500, maxCount = 5 }, + { name = "knight axe", chance = 3250 }, + { name = "pelvis bone", chance = 2630, maxCount = 10 }, + { name = "unholy bone", chance = 2630, maxCount = 5 }, + { name = "skull helmet", chance = 350 }, + { name = "ruthless axe", chance = 150 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -700 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -480, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 1500, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -380, maxDamage = -520, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 75, + mitigation = 2.16, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 5 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/skeleton_warrior.lua b/data-canary/monster/undeads/skeleton_warrior.lua new file mode 100644 index 00000000000..b28d25ea0e4 --- /dev/null +++ b/data-canary/monster/undeads/skeleton_warrior.lua @@ -0,0 +1,116 @@ +local mType = Game.createMonsterType("Skeleton Warrior") +local monster = {} + +monster.description = "a skeleton warrior" +monster.experience = 45 +monster.outfit = { + lookType = 298, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 446 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Island of Destiny, Drefia, Ghostland and beneath Fenrock.", +} + +monster.health = 65 +monster.maxHealth = 65 +monster.race = "undead" +monster.corpse = 5972 +monster.speed = 77 +monster.manaCost = 350 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 43500, maxCount = 10 }, + { id = 3115, chance = 50000 }, -- bone + { id = 3264, chance = 1500 }, -- sword + { name = "mace", chance = 2000 }, + { name = "white mushroom", chance = 24000, maxCount = 3 }, + { name = "brown mushroom", chance = 1700 }, + { name = "pelvis bone", chance = 10630 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -7, maxDamage = -13, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 5, + mitigation = 0.25, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/souleater.lua b/data-canary/monster/undeads/souleater.lua new file mode 100644 index 00000000000..dd0912cfd7c --- /dev/null +++ b/data-canary/monster/undeads/souleater.lua @@ -0,0 +1,131 @@ +local mType = Game.createMonsterType("Souleater") +local monster = {} + +monster.description = "a souleater" +monster.experience = 1300 +monster.outfit = { + lookType = 355, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 675 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Razzachai, Northern Zao Plantations, Souleater Mountains, Deeper Banuta.", +} + +monster.health = 1100 +monster.maxHealth = 1100 +monster.race = "undead" +monster.corpse = 11675 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 3, + color = 137, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Life is such a fickle thing!", yell = false }, + { text = "I will devour your soul.", yell = false }, + { text = "Souuuls!", yell = false }, + { text = "I will feed on you.", yell = false }, + { text = "Aaaahh", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 33400, maxCount = 100 }, + { name = "gold coin", chance = 33400, maxCount = 100 }, + { name = "platinum coin", chance = 49610, maxCount = 6 }, + { name = "necrotic rod", chance = 980 }, + { name = "wand of cosmic energy", chance = 910 }, + { id = 5884, chance = 140 }, -- spirit container + { id = 6299, chance = 300 }, -- death ring + { name = "great mana potion", chance = 8000 }, + { name = "ultimate health potion", chance = 9400 }, + { name = "souleater trophy", chance = 20 }, + { name = "lizard essence", chance = 15250 }, + { name = "ectoplasmic sushi", chance = 2000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -210 }, + { name = "combat", interval = 2000, chance = 100, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -100, range = 7, shootEffect = CONST_ANI_SMALLICE, target = true }, + { name = "souleater drown", interval = 2000, chance = 10, target = false }, + { name = "souleater wave", interval = 2000, chance = 10, minDamage = -100, maxDamage = -200, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -30, maxDamage = -60, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 30, + mitigation = 0.51, + { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_BLUE }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 120, maxDamage = 125, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 60 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 50 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/spectre.lua b/data-canary/monster/undeads/spectre.lua new file mode 100644 index 00000000000..2e7120521cd --- /dev/null +++ b/data-canary/monster/undeads/spectre.lua @@ -0,0 +1,137 @@ +local mType = Game.createMonsterType("Spectre") +local monster = {} + +monster.description = "a spectre" +monster.experience = 2100 +monster.outfit = { + lookType = 235, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 286 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Pits of Inferno, The Crystal Caves and The Soul Well in The Inquisition Quest, \z + Drefia Grim Reaper Dungeons, as well in Vengoth.", +} + +monster.health = 1350 +monster.maxHealth = 1350 +monster.race = "undead" +monster.corpse = 6347 +monster.speed = 140 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Revenge ... is so ... sweet.", yell = false }, + { text = "Life...force! Feed me your... lifeforce", yell = false }, + { text = "Mor... tals!", yell = false }, + { text = "Buuuuuh", yell = false }, +} + +monster.loot = { + { id = 2949, chance = 9620 }, -- lyre + { name = "silver brooch", chance = 850 }, + { name = "silver brooch", chance = 110 }, + { id = 3019, chance = 110 }, -- demonbone amulet + { name = "gold coin", chance = 33000, maxCount = 100 }, + { name = "gold coin", chance = 33000, maxCount = 100 }, + { name = "gold coin", chance = 33000, maxCount = 97 }, + { name = "platinum coin", chance = 3850, maxCount = 7 }, + { id = 3049, chance = 190 }, -- stealth ring + { name = "wand of cosmic energy", chance = 9800 }, + { name = "blank rune", chance = 30310, maxCount = 2 }, + { name = "white piece of cloth", chance = 3800 }, + { name = "soul orb", chance = 6005 }, + { id = 6299, chance = 280 }, -- death ring + { name = "demonic essence", chance = 6270 }, + { name = "relic sword", chance = 700 }, + { name = "great mana potion", chance = 920 }, + { name = "shiny stone", chance = 1000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -308, condition = { type = CONDITION_POISON, totalDamage = 300, interval = 4000 } }, + { name = "drunk", interval = 2000, chance = 15, radius = 4, effect = CONST_ME_SOUND_PURPLE, target = false, duration = 6000 }, + { name = "spectre drown", interval = 2000, chance = 15, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -400, range = 7, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -550, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, +} + +monster.defenses = { + defense = 35, + armor = 40, + mitigation = 1.04, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_HEALING, minDamage = 100, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 290, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 90 }, + { type = COMBAT_ENERGYDAMAGE, percent = -8 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -8 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 1 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/tarnished_spirit.lua b/data-canary/monster/undeads/tarnished_spirit.lua new file mode 100644 index 00000000000..99bd5e94f89 --- /dev/null +++ b/data-canary/monster/undeads/tarnished_spirit.lua @@ -0,0 +1,120 @@ +local mType = Game.createMonsterType("Tarnished Spirit") +local monster = {} + +monster.description = "a tarnished spirit" +monster.experience = 120 +monster.outfit = { + lookType = 566, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 976 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Drefia.", +} + +monster.health = 150 +monster.maxHealth = 150 +monster.race = "undead" +monster.corpse = 19049 +monster.speed = 80 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Huh!", yell = false }, +} + +monster.loot = { + { id = 2828, chance = 1310 }, -- book + { id = 3049, chance = 180 }, -- stealth ring + { name = "morning star", chance = 10610 }, + { name = "combat knife", chance = 7002 }, + { name = "ancient shield", chance = 860 }, + { name = "cape", chance = 8800 }, + { name = "shadow herb", chance = 14400 }, + { name = "white piece of cloth", chance = 1940 }, + { name = "ghostly tissue", chance = 1870 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -20, maxDamage = -45, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, +} + +monster.defenses = { + defense = 5, + armor = 10, + mitigation = 0.51, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/tomb_servant.lua b/data-canary/monster/undeads/tomb_servant.lua new file mode 100644 index 00000000000..519b393cf49 --- /dev/null +++ b/data-canary/monster/undeads/tomb_servant.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Tomb Servant") +local monster = {} + +monster.description = "a tomb servant" +monster.experience = 215 +monster.outfit = { + lookType = 100, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 708 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Horestis Tomb", +} + +monster.health = 475 +monster.maxHealth = 475 +monster.race = "undead" +monster.corpse = 6029 +monster.speed = 78 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + health = 10, + damage = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Chaarr!!", yell = false }, + { text = "Ngl..Nglll...Gll", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 82350, maxCount = 108 }, + { name = "scarab coin", chance = 8210 }, + { name = "rotten meat", chance = 2000 }, + { id = 3115, chance = 49000 }, -- bone + { name = "longsword", chance = 6560 }, + { name = "bone shield", chance = 5300 }, + { name = "worm", chance = 25325, maxCount = 12 }, + { name = "half-digested piece of meat", chance = 1000 }, + { name = "fist on a stick", chance = 230 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -40, maxDamage = -55, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, +} + +monster.defenses = { + defense = 30, + armor = 22, + mitigation = 0.46, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/undead_cavebear.lua b/data-canary/monster/undeads/undead_cavebear.lua new file mode 100644 index 00000000000..7d39cb99f53 --- /dev/null +++ b/data-canary/monster/undeads/undead_cavebear.lua @@ -0,0 +1,115 @@ +local mType = Game.createMonsterType("Undead Cavebear") +local monster = {} + +monster.description = "an undead cavebear" +monster.experience = 600 +monster.outfit = { + lookType = 384, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 696 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Lich Hell.", +} + +monster.health = 450 +monster.maxHealth = 450 +monster.race = "undead" +monster.corpse = 12336 +monster.speed = 109 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Grrrrrrrrrrrr", yell = false }, + { text = "Groooowl", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 31820, maxCount = 80 }, + { name = "maxilla", chance = 13640 }, + { name = "cavebear skull", chance = 2600 }, + { name = "health potion", chance = 1300 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, +} + +monster.defenses = { + defense = 27, + armor = 28, + mitigation = 0.72, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/undead_dragon.lua b/data-canary/monster/undeads/undead_dragon.lua new file mode 100644 index 00000000000..b9039c5d914 --- /dev/null +++ b/data-canary/monster/undeads/undead_dragon.lua @@ -0,0 +1,148 @@ +local mType = Game.createMonsterType("Undead Dragon") +local monster = {} + +monster.description = "an undead dragon" +monster.experience = 7500 +monster.outfit = { + lookType = 231, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 282 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Helheim (single, isolated spawn), Pits of Inferno (Ashfalor's throneroom), \z + Demon Forge (The Shadow Nexus and The Arcanum), under Razachai (including the Inner Sanctum), \z + Chyllfroest, Oramond Fury Dungeon.", +} + +monster.health = 8350 +monster.maxHealth = 8350 +monster.race = "undead" +monster.corpse = 6305 +monster.speed = 165 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "FEEEED MY ETERNAL HUNGER!", yell = true }, + { text = "I SENSE LIFE", yell = true }, +} + +monster.loot = { + { name = "golden mug", chance = 6002 }, + { name = "black pearl", chance = 22780, maxCount = 2 }, + { name = "small sapphire", chance = 28370, maxCount = 2 }, + { name = "gold coin", chance = 35500, maxCount = 100 }, + { name = "gold coin", chance = 55500, maxCount = 98 }, + { name = "platinum coin", chance = 52000, maxCount = 5 }, + { name = "life crystal", chance = 2500 }, + { name = "war axe", chance = 1290 }, + { name = "golden armor", chance = 860 }, + { name = "knight armor", chance = 5500 }, + { name = "royal helmet", chance = 1720 }, + { name = "power bolt", chance = 15190, maxCount = 15 }, + { name = "hardened bone", chance = 14180 }, + { id = 6299, chance = 1150 }, -- death ring + { name = "demonic essence", chance = 12460 }, + { name = "assassin star", chance = 26650, maxCount = 5 }, + { name = "dragon slayer", chance = 860 }, + { name = "dragonbone staff", chance = 4000 }, + { name = "great mana potion", chance = 21490 }, + { name = "great health potion", chance = 21200 }, + { name = "divine plate", chance = 430 }, + { name = "skullcracker armor", chance = 290 }, + { name = "gold ingot", chance = 570 }, + { name = "unholy bone", chance = 33380 }, + { name = "spellweaver's robe", chance = 860 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -480 }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -400, range = 7, radius = 4, effect = CONST_ME_HITAREA, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -125, maxDamage = -600, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -390, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -690, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -200, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "undead dragon curse", interval = 2000, chance = 10, target = false }, +} + +monster.defenses = { + defense = 40, + armor = 40, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 250, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 90 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/undead_elite_gladiator.lua b/data-canary/monster/undeads/undead_elite_gladiator.lua new file mode 100644 index 00000000000..10d1d5b08bc --- /dev/null +++ b/data-canary/monster/undeads/undead_elite_gladiator.lua @@ -0,0 +1,129 @@ +local mType = Game.createMonsterType("Undead Elite Gladiator") +local monster = {} + +monster.description = "an undead elite gladiator" +monster.experience = 5090 +monster.outfit = { + lookType = 306, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1675 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Deep Desert.", +} + +monster.health = 8000 +monster.maxHealth = 8000 +monster.race = "undead" +monster.corpse = 8909 +monster.speed = 150 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 44000, maxCount = 40 }, + { name = "belted cape", chance = 500 }, + { name = "ultimate health potion", chance = 500, maxCount = 2 }, + { name = "throwing star", chance = 500, maxCount = 18 }, + { name = "knight axe", chance = 250 }, + { id = 3307, chance = 500 }, -- scimitar + { name = "protection amulet", chance = 250 }, + { name = "hunting spear", chance = 250 }, + { name = "broken gladiator shield", chance = 250 }, + { name = "dark helmet", chance = 250 }, + { name = "flask of warrior's sweat", chance = 250 }, + { name = "plate armor", chance = 250 }, + { name = "plate legs", chance = 250 }, + { name = "two handed sword", chance = 250 }, + { name = "great health potion", chance = 250, maxCount = 2 }, + { id = 3049, chance = 230 }, -- stealth ring + { name = "crusader helmet", chance = 150 }, + { name = "relic sword", chance = 150 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 100, maxDamage = 550 }, + { name = "combat", interval = 1500, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 300, maxDamage = 550, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = false }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 300, maxDamage = 500, range = 5, radius = 3, effect = CONST_ME_HITAREA, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 85, + mitigation = 2.40, + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 80 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/undead_gladiator.lua b/data-canary/monster/undeads/undead_gladiator.lua new file mode 100644 index 00000000000..1b22aa30d69 --- /dev/null +++ b/data-canary/monster/undeads/undead_gladiator.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Undead Gladiator") +local monster = {} + +monster.description = "an undead gladiator" +monster.experience = 800 +monster.outfit = { + lookType = 306, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 508 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Arena and Zoo Quarter, Krailos.", +} + +monster.health = 1000 +monster.maxHealth = 1000 +monster.race = "undead" +monster.corpse = 8909 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Let's battle it out in a duel!", yell = false }, + { text = "Bring it!", yell = false }, + { text = "I'll fight here in eternity and beyond.", yell = false }, + { text = "I will not give up!", yell = false }, + { text = "Another foolish adventurer who tries to beat me.", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 44000, maxCount = 100 }, + { name = "gold coin", chance = 50500, maxCount = 48 }, + { id = 3049, chance = 30 }, -- stealth ring + { name = "protection amulet", chance = 2200 }, + { name = "two handed sword", chance = 1900 }, + { name = "throwing star", chance = 15700, maxCount = 18 }, + { id = 3307, chance = 11280 }, -- scimitar + { name = "knight axe", chance = 280 }, + { name = "plate armor", chance = 1700 }, + { name = "brass armor", chance = 4700 }, + { name = "brass legs", chance = 5500 }, + { name = "dark helmet", chance = 1460 }, + { name = "crusader helmet", chance = 100 }, + { name = "plate legs", chance = 2444 }, + { name = "hunting spear", chance = 4200 }, + { name = "flask of warrior's sweat", chance = 210 }, + { name = "health potion", chance = 350 }, + { name = "belted cape", chance = 5000 }, + { name = "broken gladiator shield", chance = 5200 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -135, range = 7, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 35, + mitigation = 1.54, + { name = "invisible", interval = 2000, chance = 15, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 80 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/undead_mine_worker.lua b/data-canary/monster/undeads/undead_mine_worker.lua new file mode 100644 index 00000000000..9da17ffe662 --- /dev/null +++ b/data-canary/monster/undeads/undead_mine_worker.lua @@ -0,0 +1,119 @@ +local mType = Game.createMonsterType("Undead Mine Worker") +local monster = {} + +monster.description = "an undead mine worker" +monster.experience = 45 +monster.outfit = { + lookType = 33, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 594 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 1, + Locations = "West of Edron in the Lost Mines.", +} + +monster.health = 65 +monster.maxHealth = 65 +monster.race = "undead" +monster.corpse = 5972 +monster.speed = 77 +monster.manaCost = 435 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Ahrrr... uhmmm... hmm...", yell = false }, + { text = "Grrr...", yell = false }, + { text = "Urrrgh... gnarrr...", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 73000, maxCount = 10 }, + { id = 3115, chance = 42000 }, -- bone + { id = 3264, chance = 3850 }, -- sword + { name = "mace", chance = 26900 }, + { name = "white mushroom", chance = 15400, maxCount = 3 }, + { name = "brown mushroom", chance = 3850 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -30 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -7, maxDamage = -13, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 5, + mitigation = 0.25, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/undead_prospector.lua b/data-canary/monster/undeads/undead_prospector.lua new file mode 100644 index 00000000000..c3ea0100953 --- /dev/null +++ b/data-canary/monster/undeads/undead_prospector.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Undead Prospector") +local monster = {} + +monster.description = "an undead prospector" +monster.experience = 85 +monster.outfit = { + lookType = 18, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 595 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 1, + Locations = "West of Edron, in a some Lost Mines.", +} + +monster.health = 100 +monster.maxHealth = 100 +monster.race = "blood" +monster.corpse = 5976 +monster.speed = 72 +monster.manaCost = 440 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 80, + health = 10, + damage = 10, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Our mine... leave us alone.", yell = false }, + { text = "Turn back...", yell = false }, + { text = "These mine is ours... you shall not pass.", yell = false }, +} + +monster.loot = { + { id = 2920, chance = 46150 }, -- torch + { name = "gold coin", chance = 53850, maxCount = 30 }, + { id = 3052, chance = 200 }, -- life ring + { id = 3114, chance = 240 }, -- skull + { name = "knife", chance = 15380 }, + { name = "brass helmet", chance = 23000 }, + { name = "viking helmet", chance = 1000 }, + { name = "scale armor", chance = 1000 }, + { name = "worm", chance = 92310, maxCount = 6 }, + { name = "brown piece of cloth", chance = 1000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50 }, +} + +monster.defenses = { + defense = 0, + armor = 8, + mitigation = 0.43, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 5, maxDamage = 15, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 30 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/vampire.lua b/data-canary/monster/undeads/vampire.lua new file mode 100644 index 00000000000..ffa1b280b7e --- /dev/null +++ b/data-canary/monster/undeads/vampire.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Vampire") +local monster = {} + +monster.description = "a vampire" +monster.experience = 305 +monster.outfit = { + lookType = 68, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 68 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Drefia, Ghost Ship between Venore and Darashia, some Ankrahmun Tombs, Lich Hell, \z + Serpentine Tower (unreachable), Ghostlands (unreachable). House between Plains of Havoc and Dark Cathedral, \z + Hellgate (only during Zevelon Duskbringer raid), Edron Undead Cave, Vengoth Castle (and mountains before door), \z + Edron Vampire Crypt.", +} + +monster.health = 475 +monster.maxHealth = 475 +monster.race = "blood" +monster.corpse = 6006 +monster.speed = 119 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 30, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 30, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "BLOOD!", yell = true }, + { text = "Let me kiss your neck", yell = false }, + { text = "I smell warm blood!", yell = false }, + { text = "I call you, my bats! Come!", yell = false }, +} + +monster.loot = { + { name = "emerald bangle", chance = 230 }, + { name = "black pearl", chance = 1800 }, + { name = "gold coin", chance = 90230, maxCount = 60 }, + { name = "bronze amulet", chance = 220 }, + { id = 3114, chance = 1000 }, -- skull + { name = "spike sword", chance = 1000 }, + { name = "ice rapier", chance = 420 }, + { name = "katana", chance = 1560 }, + { name = "strange helmet", chance = 420 }, + { name = "vampire shield", chance = 230 }, + { name = "grave flower", chance = 1910 }, + { name = "strong health potion", chance = 1500 }, + { name = "vampire teeth", chance = 7600 }, + { name = "blood preservation", chance = 5100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -200, range = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, + { name = "speed", interval = 2000, chance = 15, speedChange = -400, range = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 60000 }, +} + +monster.defenses = { + defense = 30, + armor = 28, + mitigation = 1.04, + { name = "outfit", interval = 4000, chance = 10, effect = CONST_ME_GROUNDSHAKER, target = false, duration = 5000, outfitMonster = "bat" }, + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 15, maxDamage = 25, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 25 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/vampire_bride.lua b/data-canary/monster/undeads/vampire_bride.lua new file mode 100644 index 00000000000..191501f78b6 --- /dev/null +++ b/data-canary/monster/undeads/vampire_bride.lua @@ -0,0 +1,137 @@ +local mType = Game.createMonsterType("Vampire Bride") +local monster = {} + +monster.description = "a vampire bride" +monster.experience = 1050 +monster.outfit = { + lookType = 312, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 483 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Drefia and Vampire Castle on Vengoth, Edron Vampire Crypt.", +} + +monster.health = 1200 +monster.maxHealth = 1200 +monster.race = "blood" +monster.corpse = 8744 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + health = 10, + damage = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Kneel before your Mistress!", yell = false }, + { text = "Dead is the new alive.", yell = false }, + { text = "Come, let me kiss you, darling. Oh wait, I meant kill.", yell = false }, + { text = "Enjoy the pain - I know you love it.", yell = false }, + { text = "Are you suffering nicely enough?", yell = false }, + { text = "You won't regret you came to me, sweetheart.", yell = false }, +} + +monster.loot = { + { name = "emerald bangle", chance = 1100 }, + { name = "small diamond", chance = 1020, maxCount = 2 }, + { name = "gold coin", chance = 90000, maxCount = 149 }, + { name = "platinum coin", chance = 9910 }, + { name = "moonlight rod", chance = 5500 }, + { name = "boots of haste", chance = 220 }, + { name = "strong health potion", chance = 5000 }, + { name = "strong mana potion", chance = 10210 }, + { id = 649, chance = 200 }, -- flower bouquet + { name = "hibiscus dress", chance = 1030 }, + { name = "blood goblet", chance = 60 }, + { id = 8895, chance = 1010 }, -- rusted armor + { id = 8923, chance = 970 }, -- velvet tapestry + { name = "vampire teeth", chance = 10000 }, + { name = "blood preservation", chance = 4950 }, + { name = "leather whip", chance = 20 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -190 }, + { name = "combat", interval = 3000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -60, maxDamage = -130, range = 1, effect = CONST_ME_MAGIC_RED, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -60, maxDamage = -150, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, + { name = "combat", interval = 4000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -60, maxDamage = -150, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_HEARTS, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -60, maxDamage = -150, range = 7, shootEffect = CONST_ANI_ENERGY, target = true }, +} + +monster.defenses = { + defense = 20, + armor = 55, + mitigation = 1.18, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 40, maxDamage = 80, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 10 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/vampire_viscount.lua b/data-canary/monster/undeads/vampire_viscount.lua new file mode 100644 index 00000000000..eb84adcb65e --- /dev/null +++ b/data-canary/monster/undeads/vampire_viscount.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Vampire Viscount") +local monster = {} + +monster.description = "a vampire viscount" +monster.experience = 800 +monster.outfit = { + lookType = 555, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 958 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Drefia, Edron Vampire Crypt.", +} + +monster.health = 1200 +monster.maxHealth = 1200 +monster.race = "blood" +monster.corpse = 18961 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + health = 10, + damage = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Prepare to BLEED!", yell = false }, + { text = "Don't struggle. We don't want to waste a drop of blood now, do we?", yell = false }, + { text = "Ah, refreshments have arrived!", yell = false }, + { text = "Bloody good thing you came!", yell = false }, +} + +monster.loot = { + { name = "black pearl", chance = 2500 }, + { name = "small ruby", chance = 3040, maxCount = 2 }, + { name = "gold coin", chance = 83000, maxCount = 50 }, + { id = 3039, chance = 540 }, -- red gem + { name = "ice rapier", chance = 810 }, + { name = "vampire shield", chance = 200 }, + { name = "red piece of cloth", chance = 70 }, + { name = "strong health potion", chance = 7100 }, + { name = "strong mana potion", chance = 8180 }, + { name = "vampire teeth", chance = 7200 }, + { name = "blood preservation", chance = 2910 }, + { name = "tooth file", chance = 6560 }, + { name = "vampire's cape chain", chance = 4460 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -100, range = 6, radius = 3, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, + -- bleed + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 10, minDamage = -320, maxDamage = -560, radius = 6, effect = CONST_ME_BATS, target = false }, +} + +monster.defenses = { + defense = 35, + armor = 42, + mitigation = 1.18, + { name = "outfit", interval = 2000, chance = 10, target = false, duration = 4000, outfitMonster = "Vicious Manbat" }, + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = -25 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/vicious_manbat.lua b/data-canary/monster/undeads/vicious_manbat.lua new file mode 100644 index 00000000000..0d48d568f5c --- /dev/null +++ b/data-canary/monster/undeads/vicious_manbat.lua @@ -0,0 +1,116 @@ +local mType = Game.createMonsterType("Vicious Manbat") +local monster = {} + +monster.description = "a vicious manbat" +monster.experience = 1200 +monster.outfit = { + lookType = 554, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 959 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 5, + FirstUnlock = 2, + SecondUnlock = 3, + CharmsPoints = 50, + Stars = 3, + Occurrence = 3, + Locations = "Deep under Drefia.", +} + +monster.health = 1700 +monster.maxHealth = 1700 +monster.race = "blood" +monster.corpse = 18949 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + health = 10, + damage = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -215 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -250, radius = 3, effect = CONST_ME_HITAREA, target = false }, + { name = "speed", interval = 2000, chance = 15, radius = 1, effect = CONST_ME_BATS, target = true }, + -- bleed + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -400, maxDamage = -600, radius = 2, effect = CONST_ME_DRAWBLOOD, target = false }, +} + +monster.defenses = { + defense = 35, + armor = 44, + mitigation = 1.21, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/white_shade.lua b/data-canary/monster/undeads/white_shade.lua new file mode 100644 index 00000000000..e71f2c7314e --- /dev/null +++ b/data-canary/monster/undeads/white_shade.lua @@ -0,0 +1,116 @@ +local mType = Game.createMonsterType("White Shade") +local monster = {} + +monster.description = "a white shade" +monster.experience = 120 +monster.outfit = { + lookType = 560, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 962 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Drefia.", +} + +monster.health = 260 +monster.maxHealth = 260 +monster.race = "undead" +monster.corpse = 19059 +monster.speed = 80 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 30, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Leave this place... save yourself...", yell = false }, + { text = "The dark ones.. must be stopped... unholy, twisted, EVIL!", yell = false }, + { text = "No... don't go further stranger... danger lies in every step...", yell = false }, +} + +monster.loot = { + { name = "white piece of cloth", chance = 3370 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -4, maxDamage = -6, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_YALAHARIGHOST, target = false }, + { name = "speed", interval = 2000, chance = 5, speedChange = -400, radius = 4, effect = CONST_ME_HITAREA, target = false, duration = 3000 }, +} + +monster.defenses = { + defense = 15, + armor = 10, + mitigation = 0.51, + { name = "invisible", interval = 2000, chance = 5, effect = CONST_ME_MAGIC_BLUE }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 95 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/undeads/zombie.lua b/data-canary/monster/undeads/zombie.lua new file mode 100644 index 00000000000..36f33aa1a31 --- /dev/null +++ b/data-canary/monster/undeads/zombie.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Zombie") +local monster = {} + +monster.description = "a zombie" +monster.experience = 280 +monster.outfit = { + lookType = 311, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 512 +monster.Bestiary = { + class = "Undead", + race = BESTY_RACE_UNDEAD, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Cemetery Quarter, Drefia, Vampire Castle, Treasure Island, Isle of Evil, Upper Spike.", +} + +monster.health = 500 +monster.maxHealth = 500 +monster.race = "undead" +monster.corpse = 8961 +monster.speed = 90 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 80, + health = 10, + damage = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Mst.... klll....", yell = false }, + { text = "Whrrrr... ssss.... mmm.... grrrrl", yell = false }, + { text = "Dnnnt... cmmm... clsrrr....", yell = false }, + { text = "Httt.... hmnnsss...", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 82000, maxCount = 65 }, + { name = "halberd", chance = 3750 }, + { name = "mace", chance = 7250 }, + { name = "battle hammer", chance = 7000 }, + { name = "steel helmet", chance = 4600 }, + { name = "brass helmet", chance = 9400 }, + { name = "simple dress", chance = 560 }, + { name = "mana potion", chance = 740 }, + { id = 8894, chance = 5680 }, -- heavily rusted armor + { name = "half-eaten brain", chance = 10000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -14, maxDamage = -23, range = 1, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -24, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -49, range = 1, effect = CONST_ME_SMALLCLOUDS, target = true }, +} + +monster.defenses = { + defense = 15, + armor = 20, + mitigation = 0.83, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 50 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/afflicted_strider.lua b/data-canary/monster/vermins/afflicted_strider.lua new file mode 100644 index 00000000000..2d0f9b0e5df --- /dev/null +++ b/data-canary/monster/vermins/afflicted_strider.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Afflicted Strider") +local monster = {} + +monster.description = "an afflicted strider" +monster.experience = 5700 +monster.outfit = { + lookType = 1403, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2094 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Antrum of the Fallen.", +} + +monster.health = 10000 +monster.maxHealth = 10000 +monster.race = "blood" +monster.corpse = 36719 +monster.speed = 135 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 70000, maxCount = 16 }, + { name = "afflicted strider worms", chance = 10940, maxCount = 3 }, + { name = "guardian halberd", chance = 9410 }, + { name = "crystal sword", chance = 8940 }, + { name = "violet gem", chance = 6940, maxCount = 1 }, + { name = "violet crystal shard", chance = 5410 }, + { name = "doublet", chance = 5060 }, + { name = "green crystal shard", chance = 6820 }, + { name = "belted cape", chance = 3760 }, + { name = "afflicted strider head", chance = 4820 }, + { name = "knight armor", chance = 4590 }, + { name = "spirit cloak", chance = 3060 }, + { name = "magma coat", chance = 2470 }, + { name = "serpent sword", chance = 2240 }, + { name = "machete", chance = 3760 }, + { name = "broadsword", chance = 1060 }, + { name = "focus cape", chance = 2240 }, + { name = "ice rapier", chance = 2240 }, + { name = "titan axe", chance = 1880 }, + { name = "haunted blade", chance = 1410 }, + { name = "mercenary sword", chance = 1530 }, + { name = "knight axe", chance = 1290 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -600 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -550, maxDamage = -650, range = 3, shootEffect = CONST_ANI_POISON, target = true }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_DEATHDAMAGE, minDamage = -650, maxDamage = -800, radius = 5, effect = CONST_ME_GROUNDSHAKER, target = false }, +} + +monster.defenses = { + defense = 68, + armor = 68, + mitigation = 1.88, + { name = "speed", interval = 2000, chance = 25, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/ancient_scarab.lua b/data-canary/monster/vermins/ancient_scarab.lua new file mode 100644 index 00000000000..53d9c0e9a7b --- /dev/null +++ b/data-canary/monster/vermins/ancient_scarab.lua @@ -0,0 +1,137 @@ +local mType = Game.createMonsterType("Ancient Scarab") +local monster = {} + +monster.description = "an ancient scarab" +monster.experience = 720 +monster.outfit = { + lookType = 79, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 79 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Ankrahmun Library Tomb, Stone Tomb, Peninsula Tomb, Mother of Scarabs Lair, Kha'zeel Scarab Lair, \z + deep in Larva Caves (found beneath steps underground), Lion's Rock, Arena and Zoo Quarter and beneath Fenrock.", +} + +monster.health = 1000 +monster.maxHealth = 1000 +monster.race = "venom" +monster.corpse = 6021 +monster.speed = 109 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 20, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 3, + summons = { + { name = "Larva", chance = 10, interval = 2000, count = 3 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "scarab amulet", chance = 3410 }, + { id = 3025, chance = 2500 }, -- ancient amulet + { name = "gold coin", chance = 100000, maxCount = 187 }, + { name = "small emerald", chance = 6000, maxCount = 3 }, + { name = "small amethyst", chance = 6000, maxCount = 4 }, + { name = "scarab coin", chance = 8000, maxCount = 2 }, + { id = 3046, chance = 11480 }, -- magic light wand + { name = "daramian waraxe", chance = 300 }, + { name = "plate armor", chance = 5000 }, + { name = "scarab shield", chance = 480 }, + { name = "strong health potion", chance = 1500 }, + { name = "springsprout rod", chance = 1000 }, + { name = "terra hood", chance = 490 }, + { name = "scarab pincers", chance = 7000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -130, condition = { type = CONDITION_POISON, totalDamage = 56, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -15, maxDamage = -145, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -700, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false, duration = 25000 }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 30, minDamage = -440, maxDamage = -520, radius = 5, effect = CONST_ME_POISONAREA, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 36, + mitigation = 0.86, + { name = "speed", interval = 2000, chance = 15, speedChange = 380, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/blemished_spawn.lua b/data-canary/monster/vermins/blemished_spawn.lua new file mode 100644 index 00000000000..b646b60c288 --- /dev/null +++ b/data-canary/monster/vermins/blemished_spawn.lua @@ -0,0 +1,137 @@ +local mType = Game.createMonsterType("Blemished Spawn") +local monster = {} + +monster.description = "a blemished spawn" +monster.experience = 5300 +monster.outfit = { + lookType = 1401, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2093 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Antrum of the Fallen.", +} + +monster.health = 9000 +monster.maxHealth = 9000 +monster.race = "blood" +monster.corpse = 36701 +monster.speed = 140 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 15, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 80, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 3, + color = 66, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 70000, maxCount = 25 }, + { name = "terra rod", chance = 26530 }, + { name = "blemished spawn abdomen", chance = 9690, maxCount = 1 }, + { name = "cyan crystal fragment", chance = 8420, maxCount = 3 }, + { name = "violet crystal shard", chance = 7380, maxCount = 3 }, + { name = "hailstorm rod", chance = 5550 }, + { name = "blue crystal shard", chance = 6300, maxCount = 3 }, + { name = "knight axe", chance = 4750 }, + { name = "dragonbone staff", chance = 3950 }, + { name = "violet gem", chance = 4660 }, + { name = "yellow gem", chance = 4560 }, + { name = "wand of starstorm", chance = 4190 }, + { name = "northwind rod", chance = 5320 }, + { name = "blemished spawn head", chance = 4840 }, + { name = "sacred tree amulet", chance = 4000 }, + { name = "springsprout rod", chance = 4610 }, + { name = "diamond sceptre", chance = 3950 }, + { id = 281, chance = 3570 }, -- giant shimmering pearl (green) + { name = "ice rapier", chance = 3950 }, + { id = 3289, chance = 3760 }, -- staff + { name = "wand of cosmic energy", chance = 3620 }, + { name = "blemished spawn tail", chance = 3530 }, + { name = "fur armor", chance = 1360 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300, condition = { type = CONDITION_POISON, totalDamage = 340, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -510, maxDamage = -610, range = 7, radius = 3, shootEffect = CONST_ANI_POISON, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_EARTHDAMAGE, minDamage = -700, maxDamage = -750, radius = 4, effect = CONST_ME_HITBYPOISON, target = false }, +} + +monster.defenses = { + defense = 61, + armor = 61, + mitigation = 1.60, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 225, maxDamage = 380, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/brimstone_bug.lua b/data-canary/monster/vermins/brimstone_bug.lua new file mode 100644 index 00000000000..da8fbedb55b --- /dev/null +++ b/data-canary/monster/vermins/brimstone_bug.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Brimstone Bug") +local monster = {} + +monster.description = "a brimstone bug" +monster.experience = 900 +monster.outfit = { + lookType = 352, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 674 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Beneath Razachai, Northern Zao Plantations, Brimstone Bug Cave, Chyllfroest, Krailos Spider Lair", +} + +monster.health = 1300 +monster.maxHealth = 1300 +monster.race = "venom" +monster.corpse = 11571 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 2, + color = 66, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Chrrr!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 200 }, + { name = "small emerald", chance = 2702, maxCount = 4 }, + { id = 3049, chance = 892 }, -- stealth ring + { name = "platinum amulet", chance = 110 }, + { name = "magic sulphur", chance = 1639 }, + { name = "strong health potion", chance = 9003 }, + { name = "strong mana potion", chance = 9025 }, + { name = "poisonous slime", chance = 50000 }, + { name = "lump of earth", chance = 20000 }, + { name = "sulphurous stone", chance = 14970 }, + { name = "brimstone fangs", chance = 5710 }, + { name = "brimstone shell", chance = 10000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -213, condition = { type = CONDITION_POISON, totalDamage = 400, interval = 4000 } }, + { name = "speed", interval = 2000, chance = 20, speedChange = -600, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = false, duration = 10000 }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = -140, maxDamage = -310, radius = 6, effect = CONST_ME_SMALLPLANTS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -130, maxDamage = -200, length = 6, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "brimstone bug wave", interval = 2000, chance = 15, minDamage = -80, maxDamage = -120, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 38, + mitigation = 1.18, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/bug.lua b/data-canary/monster/vermins/bug.lua new file mode 100644 index 00000000000..d6e9cdfc86e --- /dev/null +++ b/data-canary/monster/vermins/bug.lua @@ -0,0 +1,110 @@ +local mType = Game.createMonsterType("Bug") +local monster = {} + +monster.description = "a bug" +monster.experience = 18 +monster.outfit = { + lookType = 45, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 45 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 250, + FirstUnlock = 10, + SecondUnlock = 100, + CharmsPoints = 5, + Stars = 1, + Occurrence = 0, + Locations = "In many parts around Tibia, including Rookgaard.", +} + +monster.health = 29 +monster.maxHealth = 29 +monster.race = "venom" +monster.corpse = 5990 +monster.speed = 80 +monster.manaCost = 250 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 51170, maxCount = 6 }, + { name = "cherry", chance = 2590, maxCount = 3 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -23 }, +} + +monster.defenses = { + defense = 5, + armor = 2, + mitigation = 0.07, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/burrowing_beetle.lua b/data-canary/monster/vermins/burrowing_beetle.lua new file mode 100644 index 00000000000..40e7241bd8a --- /dev/null +++ b/data-canary/monster/vermins/burrowing_beetle.lua @@ -0,0 +1,97 @@ +local mType = Game.createMonsterType("Burrowing Beetle") +local monster = {} + +monster.description = "a burrowing beetle" +monster.experience = 165 +monster.outfit = { + lookType = 83, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 450 +monster.maxHealth = 450 +monster.race = "venom" +monster.corpse = 6024 +monster.speed = 85 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 80, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -95 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -45, range = 1, shootEffect = CONST_ANI_POISON, target = false }, + { name = "poisonfield", interval = 2000, chance = 10, radius = 1, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 15, + -- mitigation = ???, + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/butterfly.lua b/data-canary/monster/vermins/butterfly.lua new file mode 100644 index 00000000000..9ea18cb070f --- /dev/null +++ b/data-canary/monster/vermins/butterfly.lua @@ -0,0 +1,105 @@ +local mType = Game.createMonsterType("Butterfly") +local monster = {} + +monster.description = "a butterfly" +monster.experience = 0 +monster.outfit = { + lookType = 227, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 213 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 25, + FirstUnlock = 5, + SecondUnlock = 10, + CharmsPoints = 1, + Stars = 0, + Occurrence = 0, + Locations = "Ab'Dendriel, Ab'Dendriel Surroundings, Carlin, Cormaya, Edron Surroundings, \z + Feyrist Meadows, Fibula, Fields of Glory, Green Claw Swamp, Issavi, Kazordoon Surroundings, Meriana, \z + Outlaw Camp, Port Hope Surroundings, Stonehome, Thais Surroundings, Venore Southern Swamp, Venore Surroundings.", +} + +monster.health = 2 +monster.maxHealth = 2 +monster.race = "venom" +monster.corpse = 4378 +monster.speed = 160 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 60, + random = 40, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = false, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 8, + runHealth = 2, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.defenses = { + defense = 5, + armor = 10, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/carrion_worm.lua b/data-canary/monster/vermins/carrion_worm.lua new file mode 100644 index 00000000000..44ac6846dd7 --- /dev/null +++ b/data-canary/monster/vermins/carrion_worm.lua @@ -0,0 +1,115 @@ +local mType = Game.createMonsterType("Carrion Worm") +local monster = {} + +monster.description = "a carrion worm" +monster.experience = 70 +monster.outfit = { + lookType = 192, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 251 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Edron, Cormaya, Drillworm Caves, Venore Swamps, Liberty Bay, Vandura, Hellgate, \z + Fibula Dungeon, Stonehome, Kazordoon, Darashia Rotworm Caves, Port Hope, Ancient Temple, \z + Fenrock, Arena and Zoo Quarter.", +} + +monster.health = 145 +monster.maxHealth = 145 +monster.race = "blood" +monster.corpse = 6069 +monster.speed = 65 +monster.manaCost = 380 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 45 }, + { name = "meat", chance = 9460, maxCount = 2 }, + { name = "worm", chance = 2100, maxCount = 2 }, + { name = "carrion worm fang", chance = 10000 }, + { id = 12600, chance = 210 }, -- coal +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 }, +} + +monster.defenses = { + defense = 15, + armor = 8, + mitigation = 0.38, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/cave_chimera.lua b/data-canary/monster/vermins/cave_chimera.lua new file mode 100644 index 00000000000..9a76019867b --- /dev/null +++ b/data-canary/monster/vermins/cave_chimera.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Cave Chimera") +local monster = {} + +monster.description = "a cave chimera" +monster.experience = 6800 +monster.outfit = { + lookType = 1406, + lookHead = 60, + lookBody = 77, + lookLegs = 64, + lookFeet = 70, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2096 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Dwelling of the Forgotten", +} + +monster.health = 8000 +monster.maxHealth = 8000 +monster.race = "blood" +monster.corpse = 36768 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 3, + color = 100, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 70000, maxCount = 24 }, + { name = "great spirit potion", chance = 25220, maxCount = 2 }, + { name = "ultimate health potion", chance = 20000, maxCount = 4 }, + { name = "gold ingot", chance = 19130, maxCount = 2 }, + { name = "violet crystal shard", chance = 6090, maxCount = 3 }, + { name = "violet gem", chance = 6960, maxCount = 1 }, + { name = "cave chimera leg", chance = 4350 }, + { name = "cave chimera head", chance = 3480 }, + { id = 281, chance = 1740 }, -- giant shimmering pearl (green) + { name = "yellow gem", chance = 2660 }, + { name = "glacier amulet", chance = 2480 }, + { id = 23529, chance = 1720 }, -- ring of blue plasma + { name = "glacier kilt", chance = 1540 }, + { name = "gold ring", chance = 1430 }, + { name = "fur armor", chance = 970 }, + { name = "gemmed figurine", chance = 970 }, + { name = "ornate crossbow", chance = 850 }, + { name = "crystal crossbow", chance = 180 }, + { name = "composite hornbow", chance = 100 }, + { name = "elvish bow", chance = 80 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -600 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HOLYDAMAGE, minDamage = -600, maxDamage = -700, range = 4, radius = 3, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYDAMAGE, target = true }, + { name = "combat", interval = 2000, chance = 60, type = COMBAT_ICEDAMAGE, minDamage = -560, maxDamage = -650, radius = 4, effect = CONST_ME_BLUE_ENERGY_SPARK, target = false }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_ICEDAMAGE, minDamage = -750, maxDamage = -850, range = 4, shootEffect = CONST_ANI_ICE, target = true }, +} + +monster.defenses = { + defense = 60, + armor = 60, + mitigation = 1.88, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 200, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/cave_devourer.lua b/data-canary/monster/vermins/cave_devourer.lua new file mode 100644 index 00000000000..17d89dfb176 --- /dev/null +++ b/data-canary/monster/vermins/cave_devourer.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Cave Devourer") +local monster = {} + +monster.description = "a cave devourer" +monster.experience = 3380 +monster.outfit = { + lookType = 1036, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1544 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Warzone 5", +} + +monster.health = 4500 +monster.maxHealth = 4500 +monster.race = "blood" +monster.corpse = 27559 +monster.speed = 120 +monster.manaCost = 305 + +monster.changeTarget = { + interval = 5000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "cave devourer eyes", chance = 24580 }, + { name = "cave devourer maw", chance = 27540 }, + { name = "small enchanted sapphire", chance = 8050 }, + { name = "small enchanted ruby", chance = 6780 }, + { name = "crystalline arrow", chance = 23520, maxCount = 40 }, + { name = "blue crystal shard", chance = 10590 }, + { name = "violet crystal shard", chance = 7630 }, + { name = "green crystal shard", chance = 8900 }, + { name = "cyan crystal fragment", chance = 5720 }, + { name = "slime heart", chance = 13770, maxCount = 4 }, + { name = "cave devourer legs", chance = 17160 }, + { id = 3049, chance = 2540 }, -- stealth ring + { name = "suspicious device", chance = 850 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "stalagmite rune", interval = 2000, chance = 15, minDamage = -190, maxDamage = -300, range = 7, shootEffect = CONST_ANI_POISON, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -160, range = 3, length = 6, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -160, range = 3, length = 6, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -230, maxDamage = -450, range = 7, radius = 3, effect = CONST_ME_STONES, target = true }, +} + +monster.defenses = { + defense = 5, + armor = 70, + mitigation = 2.02, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/centipede.lua b/data-canary/monster/vermins/centipede.lua new file mode 100644 index 00000000000..cb5bd6eace3 --- /dev/null +++ b/data-canary/monster/vermins/centipede.lua @@ -0,0 +1,112 @@ +local mType = Game.createMonsterType("Centipede") +local monster = {} + +monster.description = "a centipede" +monster.experience = 34 +monster.outfit = { + lookType = 124, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 124 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "All around Port Hope and Tiquanda, Dark Cathedral, Vandura, Meriana, Razzachai, \z + Slime cave east of Venore, Arena and Zoo Quarter, Gnarlhound Caves.", +} + +monster.health = 70 +monster.maxHealth = 70 +monster.race = "venom" +monster.corpse = 6050 +monster.speed = 83 +monster.manaCost = 335 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 80000, maxCount = 15 }, + { name = "centipede leg", chance = 10300 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45, condition = { type = CONDITION_POISON, totalDamage = 20, interval = 4000 } }, +} + +monster.defenses = { + defense = 10, + armor = 8, + mitigation = 0.23, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/chasm_spawn.lua b/data-canary/monster/vermins/chasm_spawn.lua new file mode 100644 index 00000000000..9f27f57b006 --- /dev/null +++ b/data-canary/monster/vermins/chasm_spawn.lua @@ -0,0 +1,132 @@ +local mType = Game.createMonsterType("Chasm Spawn") +local monster = {} + +monster.description = "a chasm spawn" +monster.experience = 3600 +monster.outfit = { + lookType = 1037, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1546 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Warzone 4", +} + +monster.health = 4500 +monster.maxHealth = 4500 +monster.race = "blood" +monster.corpse = 27563 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 10000, maxCount = 78 }, + { name = "wood mushroom", chance = 27200, maxCount = 5 }, + { name = "chasm spawn head", chance = 33390 }, + { name = "chasm spawn abdomen", chance = 24710 }, + { name = "chasm spawn tail", chance = 64890 }, + { name = "small enchanted emerald", chance = 11040, maxCount = 3 }, + { name = "small enchanted amethyst", chance = 8170, maxCount = 3 }, + { name = "brown mushroom", chance = 19680, maxCount = 5 }, + { name = "orange mushroom", chance = 15140 }, + { name = "blue crystal shard", chance = 7850 }, + { name = "green crystal shard", chance = 7850 }, + { name = "violet crystal shard", chance = 4690 }, + { name = "mushroom backpack", chance = 610 }, + { name = "suspicious device", chance = 850 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -5, maxDamage = -16, range = 7, shootEffect = CONST_ANI_POISON, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -60, range = 7, shootEffect = CONST_ANI_DEATH, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -160, range = 3, length = 3, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "explosion rune", interval = 2000, chance = 15, minDamage = -50, maxDamage = -170, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -40, maxDamage = -60, range = 7, target = false }, + { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -70, maxDamage = -140, range = 7, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -70, maxDamage = -140, length = 3, spread = 3, effect = CONST_ME_PLANTATTACK, target = false }, +} + +monster.defenses = { + defense = 5, + armor = 74, + mitigation = 1.94, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/cockroach.lua b/data-canary/monster/vermins/cockroach.lua new file mode 100644 index 00000000000..0faa26877a1 --- /dev/null +++ b/data-canary/monster/vermins/cockroach.lua @@ -0,0 +1,92 @@ +local mType = Game.createMonsterType("Cockroach") +local monster = {} + +monster.description = "a cockroach" +monster.experience = 0 +monster.outfit = { + lookType = 284, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 1 +monster.maxHealth = 1 +monster.race = "venom" +monster.corpse = 7763 +monster.speed = 90 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 60000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = false, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 50, + targetDistance = 5, + runHealth = 1, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "cockroach leg", chance = 100000 }, +} + +monster.defenses = { + defense = 5, + armor = 10, + mitigation = 0.01, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/crawler.lua b/data-canary/monster/vermins/crawler.lua new file mode 100644 index 00000000000..a6dd6fb32b9 --- /dev/null +++ b/data-canary/monster/vermins/crawler.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Crawler") +local monster = {} + +monster.description = "a crawler" +monster.experience = 1000 +monster.outfit = { + lookType = 456, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 786 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Hive, Hive Outpost.", +} + +monster.health = 1450 +monster.maxHealth = 1450 +monster.race = "venom" +monster.corpse = 13865 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 40, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 90 }, + { name = "yellow gem", chance = 530 }, + { name = "war hammer", chance = 2070 }, + { name = "great mana potion", chance = 9300 }, + { name = "great health potion", chance = 6200 }, + { name = "springsprout rod", chance = 710 }, + { name = "small topaz", chance = 10040, maxCount = 2 }, + { name = "crawler head plating", chance = 18430 }, + { name = "compound eye", chance = 14640 }, + { name = "grasshopper legs", chance = 100 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -228, condition = { type = CONDITION_POISON, totalDamage = 80, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SMALLEARTH, target = false }, +} + +monster.defenses = { + defense = 30, + armor = 38, + mitigation = 1.26, + { name = "speed", interval = 2000, chance = 15, speedChange = 300, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -8 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -7 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/crystal_spider.lua b/data-canary/monster/vermins/crystal_spider.lua new file mode 100644 index 00000000000..ecb4b9ee62c --- /dev/null +++ b/data-canary/monster/vermins/crystal_spider.lua @@ -0,0 +1,135 @@ +local mType = Game.createMonsterType("Crystal Spider") +local monster = {} + +monster.description = "a crystal spider" +monster.experience = 900 +monster.outfit = { + lookType = 263, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 330 +monster.Bestiary = { + class = "Magical", + race = BESTY_RACE_MAGICAL, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Atop of the Formorgar Glacier and deep inside Formorgar Mines, Frost Dragon Tunnel, \z + Ice Witch Temple, Nibelor Ice Cave, the Crystal Caves in The Inquisition Quest, Mushroom Gardens, \z + Crystal Gardens.", +} + +monster.health = 1250 +monster.maxHealth = 1250 +monster.race = "venom" +monster.corpse = 7344 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 15, +} + +monster.strategiesTarget = { + nearest = 70, + health = 20, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 80, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Screeech!", yell = false }, +} + +monster.loot = { + { id = 3007, chance = 1560 }, -- crystal ring + { name = "crystal necklace", chance = 1640 }, + { name = "gold coin", chance = 100000, maxCount = 197 }, + { id = 3053, chance = 1480 }, -- time ring + { name = "platinum amulet", chance = 130 }, + { name = "steel helmet", chance = 5200 }, + { id = 7441, chance = 5000 }, -- ice cube + { name = "plate armor", chance = 9993 }, + { name = "knight armor", chance = 560 }, + { name = "knight legs", chance = 760 }, + { name = "jewelled backpack", chance = 80 }, + { name = "spider silk", chance = 2010 }, + { name = "shard", chance = 740 }, + { name = "sniper arrow", chance = 5840, maxCount = 6 }, + { name = "sapphire hammer", chance = 140 }, + { name = "crystal sword", chance = 2490 }, + { name = "strong mana potion", chance = 14950 }, + { name = "glacier mask", chance = 670 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, + { name = "speed", interval = 2000, chance = 15, speedChange = -800, range = 7, radius = 6, effect = CONST_ME_POFF, target = false, duration = 15000 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEAREA, target = true }, + { name = "speed", interval = 2000, chance = 20, speedChange = -600, range = 7, shootEffect = CONST_ANI_SNOWBALL, target = true, duration = 10000 }, +} + +monster.defenses = { + defense = 0, + armor = 43, + mitigation = 1.60, + { name = "speed", interval = 2000, chance = 15, speedChange = 250, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -20 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/deepworm.lua b/data-canary/monster/vermins/deepworm.lua new file mode 100644 index 00000000000..21775b2c673 --- /dev/null +++ b/data-canary/monster/vermins/deepworm.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Deepworm") +local monster = {} + +monster.description = "a deepworm" +monster.experience = 2520 +monster.outfit = { + lookType = 1033, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "WarzoneWormDeath", +} + +monster.raceId = 1531 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Gnome Deep Hub", +} + +monster.health = 3500 +monster.maxHealth = 3500 +monster.race = "blood" +monster.corpse = 27545 +monster.speed = 102 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "deepworm jaws", chance = 24010 }, + { id = 3052, chance = 7320 }, -- life ring + { name = "meat", chance = 19660, maxCount = 4 }, + { name = "ham", chance = 19660, maxCount = 4 }, + { name = "wood mushroom", chance = 22280 }, + { name = "dark mushroom", chance = 14960 }, + { name = "green mushroom", chance = 18520 }, + { name = "green crystal shard", chance = 5360 }, + { id = 27593, chance = 13210, maxCount = 2 }, -- deepworm spike roots + { name = "deepworm spikes", chance = 9880 }, + { name = "small enchanted amethyst", chance = 3430, maxCount = 2 }, + { name = "terra amulet", chance = 5060 }, + { name = "springsprout rod", chance = 1120 }, + { name = "sacred tree amulet", chance = 2390 }, + { id = 281, chance = 860 }, -- giant shimmering pearl (green) + { name = "suspicious device", chance = 530 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -190, maxDamage = -300, range = 7, length = 6, spread = 2, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -400, length = 3, spread = 3, effect = CONST_ME_POISONAREA, target = false }, +} + +monster.defenses = { + defense = 5, + armor = 73, + mitigation = 1.88, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = -20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/diremaw.lua b/data-canary/monster/vermins/diremaw.lua new file mode 100644 index 00000000000..fd74c4e2be6 --- /dev/null +++ b/data-canary/monster/vermins/diremaw.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Diremaw") +local monster = {} + +monster.description = "a diremaw" +monster.experience = 2770 +monster.outfit = { + lookType = 1034, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "WarzoneWormDeath", +} + +monster.raceId = 1532 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Gnome Deep Hub north and south tasking areas, Warzone 6", +} + +monster.health = 3600 +monster.maxHealth = 3600 +monster.race = "blood" +monster.corpse = 27494 +monster.speed = 150 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "ham", chance = 40080, maxCount = 4 }, + { name = "diremaw brainpan", chance = 24120 }, + { name = "poisonous slime", chance = 11930, maxCount = 5 }, + { name = "blue crystal shard", chance = 9660 }, + { name = "violet crystal shard", chance = 8180 }, + { name = "green crystal shard", chance = 8030 }, + { name = "onyx chip", chance = 8560, maxCount = 4 }, + { name = "diremaw legs", chance = 9650, maxCount = 2 }, + { name = "small enchanted emerald", chance = 2940, maxCount = 2 }, + { name = "small emerald", chance = 5080, maxCount = 2 }, + { name = "gold ingot", chance = 2970 }, + { id = 281, chance = 3100 }, -- giant shimmering pearl (green) + { name = "suspicious device", chance = 600 }, + { name = "mycological bow", chance = 200 }, + { name = "mushroom backpack", chance = 1500 }, +} + +monster.attacks = { + { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -200, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -250, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POFF, target = true }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 21, minDamage = -200, maxDamage = -310, radius = 4, effect = CONST_ME_GREEN_RINGS, target = false }, +} + +monster.defenses = { + defense = 5, + armor = 71, + mitigation = 1.94, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/drillworm.lua b/data-canary/monster/vermins/drillworm.lua new file mode 100644 index 00000000000..a435dc16ca3 --- /dev/null +++ b/data-canary/monster/vermins/drillworm.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Drillworm") +local monster = {} + +monster.description = "a drillworm" +monster.experience = 1200 +monster.outfit = { + lookType = 527, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "LowerSpikeDeath", +} + +monster.raceId = 878 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Drillworm Caves, Lower Spike, Lost Dwarf version of the Forsaken Mine, Oramond Factory Raids and Warzone 4.", +} + +monster.health = 1500 +monster.maxHealth = 1500 +monster.race = "venom" +monster.corpse = 17425 +monster.speed = 110 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 20, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Krrrk!", yell = false }, + { text = "Knarrrk!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 50 }, + { id = 3456, chance = 5280 }, -- pick + { name = "worm", chance = 4580, maxCount = 5 }, + { name = "iron ore", chance = 1750 }, + { name = "spiked squelcher", chance = 540 }, + { name = "terra amulet", chance = 2360 }, + { name = "lump of earth", chance = 15000 }, + { name = "clay lump", chance = 700 }, + { id = 12600, chance = 12130 }, -- coal + { name = "green crystal splinter", chance = 9780 }, + { name = "brown crystal splinter", chance = 9260 }, + { name = "blue crystal splinter", chance = 9610 }, + { name = "pulverized ore", chance = 5400 }, + { name = "vein of ore", chance = 7280 }, + { name = "drill bolt", chance = 4870, maxCount = 2 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300, condition = { type = CONDITION_POISON, totalDamage = 100, interval = 4000 } }, + { name = "speed", interval = 2000, chance = 15, speedChange = -600, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -150, radius = 3, effect = CONST_ME_POISONAREA, target = true }, +} + +monster.defenses = { + defense = 35, + armor = 41, + mitigation = 1.26, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 16 }, + { type = COMBAT_HOLYDAMAGE, percent = 15 }, + { type = COMBAT_DEATHDAMAGE, percent = 15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/emerald_damselfly.lua b/data-canary/monster/vermins/emerald_damselfly.lua new file mode 100644 index 00000000000..f0f03317f62 --- /dev/null +++ b/data-canary/monster/vermins/emerald_damselfly.lua @@ -0,0 +1,118 @@ +local mType = Game.createMonsterType("Emerald Damselfly") +local monster = {} + +monster.description = "an emerald damselfly" +monster.experience = 35 +monster.outfit = { + lookType = 528, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 912 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Venore Salamander Cave, Dryad Gardens.", +} + +monster.health = 90 +monster.maxHealth = 90 +monster.race = "venom" +monster.corpse = 17426 +monster.speed = 100 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Bzzzzz!", yell = false }, +} + +monster.loot = { + { id = 3003, chance = 4300 }, -- rope + { name = "gold coin", chance = 90000, maxCount = 18 }, + { name = "arrow", chance = 7570, maxCount = 5 }, + { name = "health potion", chance = 3580 }, + { name = "mana potion", chance = 3550 }, + { id = 17458, chance = 11830 }, -- damselfly wing + { id = 17463, chance = 9970 }, -- damselfly eye +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -4, condition = { type = CONDITION_POISON, totalDamage = 10, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -12, range = 7, shootEffect = CONST_ANI_POISON, target = false }, +} + +monster.defenses = { + defense = 10, + armor = 6, + mitigation = 0.20, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HEALING, minDamage = 4, maxDamage = 10, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/exotic_cave_spider.lua b/data-canary/monster/vermins/exotic_cave_spider.lua new file mode 100644 index 00000000000..0ec053a8e67 --- /dev/null +++ b/data-canary/monster/vermins/exotic_cave_spider.lua @@ -0,0 +1,118 @@ +local mType = Game.createMonsterType("Exotic Cave Spider") +local monster = {} + +monster.description = "a exotic cave spider" +monster.experience = 1400 +monster.outfit = { + lookType = 1344, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2024 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Exotic cave spider cave.", +} + +monster.health = 1900 +monster.maxHealth = 1900 +monster.race = "venom" +monster.corpse = 35358 +monster.speed = 132 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 20, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 100000 }, + { name = "great health potion", chance = 9600 }, + { name = "poison arrow", chance = 14600 }, + { name = "terra boots", chance = 4400 }, + { name = "silver amulet", chance = 4550 }, + { name = "spider silk", chance = 2850 }, + { name = "terra mantle", chance = 850 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450, condition = { type = CONDITION_POISON, totalDamage = 250, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -90, maxDamage = -150, range = 7, radius = 3, effect = CONST_ME_POISONAREA, target = true }, +} + +monster.defenses = { + defense = 40, + armor = 40, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = true }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/eyeless_devourer.lua b/data-canary/monster/vermins/eyeless_devourer.lua new file mode 100644 index 00000000000..1c45264bd8a --- /dev/null +++ b/data-canary/monster/vermins/eyeless_devourer.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Eyeless Devourer") +local monster = {} + +monster.description = "an eyeless devourer" +monster.experience = 6000 +monster.outfit = { + lookType = 1399, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2092 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Antrum of the Fallen.", +} + +monster.health = 10000 +monster.maxHealth = 10000 +monster.race = "blood" +monster.corpse = 36696 +monster.speed = 165 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 70000, maxCount = 22 }, + { name = "ultimate health potion", chance = 29210, maxCount = 3 }, + { name = "eyeless devourer maw", chance = 14680, maxCount = 1 }, + { name = "blue crystal shard", chance = 6700, maxCount = 3 }, + { name = "green crystal shard", chance = 6380, maxCount = 3 }, + { name = "violet crystal shard", chance = 6230, maxCount = 3 }, + { name = "eyeless devourer legs", chance = 7500, maxCount = 2 }, + { name = "green gem", chance = 6300 }, + { name = "eyeless devourer tongue", chance = 3590 }, + { name = "sacred tree amulet", chance = 3190 }, + { name = "crystal mace", chance = 1840 }, + { name = "glacier amulet", chance = 2790 }, + { name = "noble axe", chance = 1840 }, + { name = "warrior's axe", chance = 1440 }, + { name = "relic sword", chance = 880 }, + { name = "giant sword", chance = 880 }, + { name = "mercenary sword", chance = 640 }, + { name = "war axe", chance = 1360, maxCount = 1 }, + { name = "execowtioner axe", chance = 640 }, + { name = "ornate crossbow", chance = 1040 }, + { name = "jade hammer", chance = 1200 }, + { name = "shadow sceptre", chance = 400 }, + { name = "metal bat", chance = 320 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400, effect = CONST_ME_DRAWBLOOD }, + { name = "combat", interval = 2750, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -700, maxDamage = -800, range = 5, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = true }, + { name = "combat", interval = 2000, chance = 60, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -700, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -500, maxDamage = -560, length = 5, spread = 0, effect = CONST_ME_GREEN_RINGS, target = false }, +} + +monster.defenses = { + defense = 63, + armor = 63, + mitigation = 1.82, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/giant_spider.lua b/data-canary/monster/vermins/giant_spider.lua new file mode 100644 index 00000000000..215f5884405 --- /dev/null +++ b/data-canary/monster/vermins/giant_spider.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Giant Spider") +local monster = {} + +monster.description = "a giant spider" +monster.experience = 900 +monster.outfit = { + lookType = 38, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 38 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Plains of Havoc, Point of no Return in Outlaw Camp, Ghostlands, Hellgate, \z + Mintwallin Secret Laboratory, Mad Mage Room deep below Ancient Temple, Mount Sternum Undead Cave, \z + Green Claw Swamp, Maze of Lost Souls, Crusader Helmet Quest in the Dwarf Mines, Mushroom Gardens, \z + west Drillworm Caves, Edron Hero Cave, Edron Orc Cave, on a hill near Drefia, \z + on a hill north-west of Ankrahmun (inaccessible), Forbidden Lands, Deeper Banuta, Malada, Ramoa, \z + Arena and Zoo Quarter, second floor up of Cemetery Quarter, beneath Fenrock, Vengoth Castle, \z + Vandura Mountain, in a cave in Robson Isle, Chyllfroest, Spider Caves, second floor of Krailos Spider Lair, Caverna Exanima.", +} + +monster.health = 1300 +monster.maxHealth = 1300 +monster.race = "venom" +monster.corpse = 5977 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 20, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "Poison Spider", chance = 10, interval = 2000, count = 2 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 99990, maxCount = 195 }, + { id = 3053, chance = 710 }, -- time ring + { name = "platinum amulet", chance = 280 }, + { name = "two handed sword", chance = 5100 }, + { name = "steel helmet", chance = 4980 }, + { name = "plate armor", chance = 9980 }, + { name = "knight armor", chance = 500 }, + { name = "knight legs", chance = 840 }, + { name = "poison arrow", chance = 11950, maxCount = 12 }, + { name = "plate legs", chance = 8333 }, + { name = "spider silk", chance = 1990 }, + { name = "strong health potion", chance = 3550 }, + { name = "lightning headband", chance = 270 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, + { name = "poisonfield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -40, maxDamage = -70, range = 7, radius = 1, shootEffect = CONST_ANI_POISON, target = true }, +} + +monster.defenses = { + defense = 0, + armor = 30, + mitigation = 1.04, + { name = "speed", interval = 2000, chance = 15, speedChange = 390, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/hibernal_moth.lua b/data-canary/monster/vermins/hibernal_moth.lua new file mode 100644 index 00000000000..0b5357efb35 --- /dev/null +++ b/data-canary/monster/vermins/hibernal_moth.lua @@ -0,0 +1,111 @@ +local mType = Game.createMonsterType("Hibernal Moth") +local monster = {} + +monster.description = "a hibernal moth" +monster.experience = 700 +monster.outfit = { + lookType = 1149, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1737 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "Court of Winter at night.", +} + +monster.health = 850 +monster.maxHealth = 850 +monster.race = "blood" +monster.corpse = 30179 +monster.speed = 200 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 5, + color = 197, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 }, +} + +monster.defenses = { + defense = 5, + armor = 37, + mitigation = 1.18, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = -30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 25 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/hive_overseer.lua b/data-canary/monster/vermins/hive_overseer.lua new file mode 100644 index 00000000000..ea2cc692a61 --- /dev/null +++ b/data-canary/monster/vermins/hive_overseer.lua @@ -0,0 +1,142 @@ +local mType = Game.createMonsterType("Hive Overseer") +local monster = {} + +monster.description = "a hive overseer" +monster.experience = 5500 +monster.outfit = { + lookType = 458, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 801 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 2, + Locations = "The Hive towers: on the highest floor of each tower, \z + and in many of the closed rooms accessed with pheromones; \z + many in the large underground room of the west tower. \z + Liberty Bay Hive Outpost: one spawn on the second floor underground.", +} + +monster.health = 7500 +monster.maxHealth = 7500 +monster.race = "venom" +monster.corpse = 13937 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 95, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.summon = { + maxSummons = 2, + summons = { + { name = "Spidris Elite Summon", chance = 40, interval = 2000, count = 2 }, + }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Zopp!", yell = false }, + { text = "Kropp!", yell = false }, +} + +monster.loot = { + { name = "small ruby", chance = 16000, maxCount = 2 }, + { name = "gold coin", chance = 40000, maxCount = 100 }, + { name = "gold coin", chance = 58000, maxCount = 98 }, + { name = "platinum coin", chance = 84000, maxCount = 6 }, + { name = "steel boots", chance = 550 }, + { name = "great mana potion", chance = 18000 }, + { id = 281, chance = 6000 }, -- giant shimmering pearl (green) + { name = "ultimate health potion", chance = 12000 }, + { name = "gold ingot", chance = 29000 }, + { name = "kollos shell", chance = 28000 }, + { name = "compound eye", chance = 16000 }, + { name = "calopteryx cape", chance = 830 }, + { name = "carapace shield", chance = 920 }, + { name = "hive scythe", chance = 1650 }, + { name = "gooey mass", chance = 13000, maxCount = 2 }, + { name = "hive bow", chance = 830 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -80, radius = 4, effect = CONST_ME_POISONAREA, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 20, minDamage = -600, maxDamage = -1000, radius = 4, effect = CONST_ME_GREEN_RINGS, target = false }, +} + +monster.defenses = { + defense = 45, + armor = 57, + mitigation = 2.40, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_HEALING, minDamage = 50, maxDamage = 100, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 500, maxDamage = 700, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 30 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 40 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = 15 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/insect_swarm.lua b/data-canary/monster/vermins/insect_swarm.lua new file mode 100644 index 00000000000..4bdc7a7aac7 --- /dev/null +++ b/data-canary/monster/vermins/insect_swarm.lua @@ -0,0 +1,109 @@ +local mType = Game.createMonsterType("Insect Swarm") +local monster = {} + +monster.description = "an insect swarm" +monster.experience = 40 +monster.outfit = { + lookType = 349, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 621 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Zao Steppe, Northern Zao Plantations and the Horestis Tomb \z + (only when the curse of Horestis is not active).", +} + +monster.health = 50 +monster.maxHealth = 50 +monster.race = "undead" +monster.corpse = 10403 +monster.speed = 118 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -10, condition = { type = CONDITION_POISON, totalDamage = 16, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -15, range = 1, effect = CONST_ME_MAGIC_RED, target = false }, +} + +monster.defenses = { + defense = 5, + armor = 5, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/insectoid_scout.lua b/data-canary/monster/vermins/insectoid_scout.lua new file mode 100644 index 00000000000..254c3b64ef3 --- /dev/null +++ b/data-canary/monster/vermins/insectoid_scout.lua @@ -0,0 +1,115 @@ +local mType = Game.createMonsterType("Insectoid Scout") +local monster = {} + +monster.description = "an insectoid scout" +monster.experience = 150 +monster.outfit = { + lookType = 403, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 732 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 2, + Locations = "West and south of Greenshore.", +} + +monster.health = 230 +monster.maxHealth = 230 +monster.race = "venom" +monster.corpse = 12525 +monster.speed = 101 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Klk! Klk!", yell = false }, + { text = "Chrrr! Chrr!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 80000, maxCount = 80 }, + { id = 3093, chance = 100 }, -- club ring + { name = "ripper lance", chance = 850 }, + { name = "health potion", chance = 280 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -74, condition = { type = CONDITION_POISON, totalDamage = 60, interval = 4000 } }, +} + +monster.defenses = { + defense = 15, + armor = 27, + mitigation = 0.56, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/insectoid_worker.lua b/data-canary/monster/vermins/insectoid_worker.lua new file mode 100644 index 00000000000..08770aa809b --- /dev/null +++ b/data-canary/monster/vermins/insectoid_worker.lua @@ -0,0 +1,114 @@ +local mType = Game.createMonsterType("Insectoid Worker") +local monster = {} + +monster.description = "an insectoid worker" +monster.experience = 650 +monster.outfit = { + lookType = 403, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 796 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Hive, Hive Outpost.", +} + +monster.health = 950 +monster.maxHealth = 950 +monster.race = "venom" +monster.corpse = 12525 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 90 }, + { name = "small emerald", chance = 2880 }, + { name = "epee", chance = 560 }, + { name = "health potion", chance = 5090 }, + { name = "compound eye", chance = 15380 }, + { id = 14225, chance = 14990 }, -- dung ball +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -163, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, +} + +monster.defenses = { + defense = 15, + armor = 30, + mitigation = 0.91, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/kollos.lua b/data-canary/monster/vermins/kollos.lua new file mode 100644 index 00000000000..a68809ab288 --- /dev/null +++ b/data-canary/monster/vermins/kollos.lua @@ -0,0 +1,128 @@ +local mType = Game.createMonsterType("Kollos") +local monster = {} + +monster.description = "a kollos" +monster.experience = 2400 +monster.outfit = { + lookType = 458, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 788 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Hive, Hive Outpost.", +} + +monster.health = 3800 +monster.maxHealth = 3800 +monster.race = "venom" +monster.corpse = 13937 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Kropp!", yell = false }, + { text = "Flzlzlzlzlzlzlz!", yell = false }, +} + +monster.loot = { + { name = "small ruby", chance = 8180, maxCount = 2 }, + { name = "gold coin", chance = 49000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 97 }, + { name = "platinum coin", chance = 66000, maxCount = 3 }, + { id = 3098, chance = 3270 }, -- ring of healing + { name = "steel boots", chance = 130 }, + { name = "great mana potion", chance = 8950, maxCount = 4 }, + { id = 281, chance = 2600 }, -- giant shimmering pearl (green) + { name = "ultimate health potion", chance = 4000, maxCount = 3 }, + { name = "gold ingot", chance = 5160 }, + { name = "kollos shell", chance = 15390 }, + { name = "compound eye", chance = 15720 }, + { name = "calopteryx cape", chance = 360 }, + { name = "carapace shield", chance = 310 }, + { name = "hive scythe", chance = 700 }, + { name = "buggy backpack", chance = 460 }, + { name = "tarsal arrow", chance = 10210, maxCount = 5 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -315 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, range = 7, radius = 3, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_EXPLOSIONHIT, target = true }, +} + +monster.defenses = { + defense = 35, + armor = 52, + mitigation = 1.71, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 30 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -7 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = -5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/lacewing_moth.lua b/data-canary/monster/vermins/lacewing_moth.lua new file mode 100644 index 00000000000..dac948339a5 --- /dev/null +++ b/data-canary/monster/vermins/lacewing_moth.lua @@ -0,0 +1,111 @@ +local mType = Game.createMonsterType("Lacewing Moth") +local monster = {} + +monster.description = "a lacewing moth" +monster.experience = 800 +monster.outfit = { + lookType = 1148, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1736 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 1, + Locations = "Court of Summer at day.", +} + +monster.health = 900 +monster.maxHealth = 900 +monster.race = "blood" +monster.corpse = 30175 +monster.speed = 190 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 5, + color = 35, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5 }, +} + +monster.defenses = { + defense = 0, + armor = 42, + mitigation = 1.04, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 30 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/ladybug.lua b/data-canary/monster/vermins/ladybug.lua new file mode 100644 index 00000000000..03cede00d70 --- /dev/null +++ b/data-canary/monster/vermins/ladybug.lua @@ -0,0 +1,113 @@ +local mType = Game.createMonsterType("Ladybug") +local monster = {} + +monster.description = "a ladybug" +monster.experience = 70 +monster.outfit = { + lookType = 448, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 778 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 2, + Locations = "The Hive surface during the Hive Born World Change's third stage.", +} + +monster.health = 255 +monster.maxHealth = 255 +monster.race = "venom" +monster.corpse = 13845 +monster.speed = 52 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 60, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Nee Pah!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 65000, maxCount = 40 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -4 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -20, range = 1, shootEffect = CONST_ANI_POISON, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -20, range = 7, shootEffect = CONST_ANI_POISON, target = false }, +} + +monster.defenses = { + defense = 10, + armor = 8, + mitigation = 0.64, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 50 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/lancer_beetle.lua b/data-canary/monster/vermins/lancer_beetle.lua new file mode 100644 index 00000000000..ad7c445334b --- /dev/null +++ b/data-canary/monster/vermins/lancer_beetle.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Lancer Beetle") +local monster = {} + +monster.description = "a lancer beetle" +monster.experience = 275 +monster.outfit = { + lookType = 348, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 633 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Zao Wailing Widow Cave, Muggy Plains (during raid), Razzachai, \z + Northern Zao Plantations, Northern Brimstone Bug Cave, Chyllfroest.", +} + +monster.health = 400 +monster.maxHealth = 400 +monster.race = "venom" +monster.corpse = 10458 +monster.speed = 133 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 30, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Crump!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 60000, maxCount = 61 }, + { name = "gold coin", chance = 60000, maxCount = 79 }, + { name = "small amethyst", chance = 247 }, + { name = "poisonous slime", chance = 8333 }, + { name = "lump of dirt", chance = 4166 }, + { name = "lancer beetle shell", chance = 16666 }, + { name = "beetle necklace", chance = 1123 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -115 }, + { name = "poisonfield", interval = 2000, chance = 10, radius = 4, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -90, length = 7, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -40, maxDamage = -80, range = 7, shootEffect = CONST_ANI_POISON, target = false }, + { name = "lancer beetle curse", interval = 2000, chance = 5, range = 5, target = false }, +} + +monster.defenses = { + defense = 20, + armor = 35, + mitigation = 0.70, + { name = "invisible", interval = 2000, chance = 10, effect = CONST_ME_GROUNDSHAKER }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 50 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/larva.lua b/data-canary/monster/vermins/larva.lua new file mode 100644 index 00000000000..385b35d6132 --- /dev/null +++ b/data-canary/monster/vermins/larva.lua @@ -0,0 +1,110 @@ +local mType = Game.createMonsterType("Larva") +local monster = {} + +monster.description = "a larva" +monster.experience = 44 +monster.outfit = { + lookType = 82, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 82 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Larva Caves, Ankrahmun Tombs, Lions Rock, Gardens of Night (unreachable)", +} + +monster.health = 70 +monster.maxHealth = 70 +monster.race = "venom" +monster.corpse = 6023 +monster.speed = 62 +monster.manaCost = 355 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 63000, maxCount = 15 }, + { name = "meat", chance = 14666 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35, condition = { type = CONDITION_POISON, totalDamage = 15, interval = 4000 } }, +} + +monster.defenses = { + defense = 10, + armor = 5, + mitigation = 0.28, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/lavafungus.lua b/data-canary/monster/vermins/lavafungus.lua new file mode 100644 index 00000000000..c25d314a85d --- /dev/null +++ b/data-canary/monster/vermins/lavafungus.lua @@ -0,0 +1,138 @@ +local mType = Game.createMonsterType("Lavafungus") +local monster = {} + +monster.description = "a lavafungus" +monster.experience = 6200 +monster.outfit = { + lookType = 1405, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2095 +monster.Bestiary = { + class = "Plant", + race = BESTY_RACE_VERMIN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Grotto of the Lost.", +} + +monster.health = 7200 +monster.maxHealth = 7200 +monster.race = "blood" +monster.corpse = 36764 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 3, + color = 192, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 70000, maxCount = 22 }, + { name = "terra rod", chance = 41860, maxCount = 1 }, + { name = "lavafungus ring", chance = 9300, maxCount = 4 }, + { id = 3039, chance = 9300, maxCount = 1 }, -- red gem + { name = "hailstorm rod", chance = 4650 }, + { name = "blue crystal shard", chance = 4000 }, + { name = "violet gem", chance = 4650 }, + { name = "wand of inferno", chance = 4650 }, + { name = "green gem", chance = 9300 }, + { name = "lavafungus head", chance = 4650 }, + { name = "cyan crystal fragment", chance = 4650 }, + { name = "violet crystal shard", chance = 3650 }, + { name = "red crystal fragment", chance = 4650 }, + { name = "rainbow quartz", chance = 6980 }, + { name = "onyx chip", chance = 4650 }, + { name = "yellow gem", chance = 2330 }, + { name = "green crystal fragment", chance = 9300 }, + { name = "metal spats", chance = 6980 }, + { name = "spellbook of warding", chance = 2500 }, + { name = "magma amulet", chance = 2330 }, + { name = "focus cape", chance = 2330 }, + { name = "wand of starstorm", chance = 2330 }, + { name = "crystal mace", chance = 1700 }, + { id = 3097, chance = 2330 }, -- dwarven ring +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -810 }, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_DEATHDAMAGE, minDamage = -560, maxDamage = -650, length = 6, spread = 0, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2750, chance = 40, type = COMBAT_FIREDAMAGE, minDamage = -490, maxDamage = -720, range = 5, shootEffect = CONST_ANI_FIRE, target = true }, + { name = "combat", interval = 2750, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -720, maxDamage = -810, range = 5, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, + { name = "lavafungus ring", interval = 2000, chance = 20, minDamage = -450, maxDamage = -610 }, + { name = "lavafungus x wave", interval = 2000, chance = 10, minDamage = -640, maxDamage = -730 }, +} + +monster.defenses = { + defense = 70, + armor = 70, + mitigation = 1.60, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 270, maxDamage = 530, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/lavaworm.lua b/data-canary/monster/vermins/lavaworm.lua new file mode 100644 index 00000000000..bc1ed322b5a --- /dev/null +++ b/data-canary/monster/vermins/lavaworm.lua @@ -0,0 +1,129 @@ +local mType = Game.createMonsterType("Lavaworm") +local monster = {} + +monster.description = "a lavaworm" +monster.experience = 6500 +monster.outfit = { + lookType = 1394, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2088 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Grotto of the Lost.", +} + +monster.health = 7500 +monster.maxHealth = 7500 +monster.race = "fire" +monster.corpse = 36679 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 3, + color = 205, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 70000, maxCount = 24 }, + { name = "gold ingot", chance = 18430, maxCount = 2 }, + { name = "violet crystal shard", chance = 15630, maxCount = 3 }, + { name = "lavaworm spike roots", chance = 20310, maxCount = 3 }, + { name = "violet gem", chance = 6750 }, + { name = "lavaworm spikes", chance = 4230 }, + { name = "green gem", chance = 4130 }, + { name = "butterfly ring", chance = 3120 }, + { name = "underworld rod", chance = 2920 }, + { name = "lavaworm jaws", chance = 2620 }, + { name = "blue crystal shard", chance = 2520 }, + { name = "warrior helmet", chance = 1560 }, + { name = "wand of voodoo", chance = 1560 }, + { name = "crusader helmet", chance = 1560 }, + { name = "strange helmet", chance = 500 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -600 }, + { name = "combat", interval = 2750, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -600, maxDamage = -760, range = 5, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, + { name = "combat", interval = 2000, chance = 60, type = COMBAT_FIREDAMAGE, minDamage = -700, maxDamage = -780, radius = 4, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2750, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -550, maxDamage = -700, range = 5, radius = 3, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_EXPLOSIONHIT, target = true }, +} + +monster.defenses = { + defense = 60, + armor = 60, + mitigation = 1.60, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -15 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/lesser_swarmer.lua b/data-canary/monster/vermins/lesser_swarmer.lua new file mode 100644 index 00000000000..ae60d6545c8 --- /dev/null +++ b/data-canary/monster/vermins/lesser_swarmer.lua @@ -0,0 +1,95 @@ +local mType = Game.createMonsterType("Lesser Swarmer") +local monster = {} + +monster.description = "a lesser swarmer" +monster.experience = 0 +monster.outfit = { + lookType = 460, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 230 +monster.maxHealth = 230 +monster.race = "venom" +monster.corpse = 13973 +monster.speed = 90 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -77, condition = { type = CONDITION_POISON, totalDamage = 60, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -70, range = 5, effect = CONST_ME_MAGIC_RED, target = true }, +} + +monster.defenses = { + defense = 5, + armor = 5, + -- mitigation = ???, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/parasite.lua b/data-canary/monster/vermins/parasite.lua new file mode 100644 index 00000000000..65e83dbb7f2 --- /dev/null +++ b/data-canary/monster/vermins/parasite.lua @@ -0,0 +1,98 @@ +local mType = Game.createMonsterType("Parasite") +local monster = {} + +monster.description = "a parasite" +monster.experience = 0 +monster.outfit = { + lookType = 82, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "ParasiteDeath", +} + +monster.health = 550 +monster.maxHealth = 550 +monster.race = "venom" +monster.corpse = 6023 +monster.speed = 87 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, condition = { type = CONDITION_POISON, totalDamage = 40, interval = 4000 } }, +} + +monster.defenses = { + defense = 15, + armor = 15, + mitigation = 0.56, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -20 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/poison_spider.lua b/data-canary/monster/vermins/poison_spider.lua index afe2d7fa2ee..dda6b6095cc 100644 --- a/data-canary/monster/vermins/poison_spider.lua +++ b/data-canary/monster/vermins/poison_spider.lua @@ -46,7 +46,7 @@ monster.flags = { summonable = true, attackable = true, hostile = true, - convinceable = true, + convinceable = false, pushable = true, rewardBoss = false, illusionable = true, @@ -73,8 +73,8 @@ monster.voices = { } monster.loot = { - { id = 3031, chance = 75000, maxCount = 4 }, -- gold coin - { id = 11485, chance = 1140 }, -- poison spider shell + { name = "gold coin", chance = 75000, maxCount = 4 }, + { name = "poison spider shell", chance = 1140 }, } monster.attacks = { @@ -83,7 +83,8 @@ monster.attacks = { monster.defenses = { defense = 5, - armor = 5, + armor = 2, + mitigation = 0.15, } monster.elements = { diff --git a/data-canary/monster/vermins/rotworm.lua b/data-canary/monster/vermins/rotworm.lua new file mode 100644 index 00000000000..d3bf0058386 --- /dev/null +++ b/data-canary/monster/vermins/rotworm.lua @@ -0,0 +1,120 @@ +local mType = Game.createMonsterType("Rotworm") +local monster = {} + +monster.description = "a rotworm" +monster.experience = 40 +monster.outfit = { + lookType = 26, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 26 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Almost everywhere, like Ancient Temple, Vandura, Folda dungeon, Fibula Dungeon, \z + caves connecting Edron and Cormaya, Venore Swamp Troll cave, Thais Troll cave, Ferngrims Gate, \z + Dwarf Mines, Hellgate, below the graves in eastern Rookgaard, spider cave in western Rookgaard, \z + cave northeast of Ab'Dendriel, Darashia Rotworm Caves, Liberty Bay, Fenrock, \z + below Green Claw Swamp and some other places.", +} + +monster.health = 65 +monster.maxHealth = 65 +monster.race = "blood" +monster.corpse = 5967 +monster.speed = 58 +monster.manaCost = 305 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = true, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 70, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 71760, maxCount = 17 }, + { id = 3264, chance = 3000 }, -- sword + { name = "mace", chance = 4500 }, + { name = "meat", chance = 20000 }, + { name = "ham", chance = 20120 }, + { name = "worm", chance = 3000, maxCount = 3 }, + { name = "lump of dirt", chance = 10000 }, + { name = "legion helmet", chance = 1890 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -40 }, +} + +monster.defenses = { + defense = 10, + armor = 8, + mitigation = 0.28, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/sacred_spider.lua b/data-canary/monster/vermins/sacred_spider.lua new file mode 100644 index 00000000000..a1e1ad8c045 --- /dev/null +++ b/data-canary/monster/vermins/sacred_spider.lua @@ -0,0 +1,118 @@ +local mType = Game.createMonsterType("Sacred Spider") +local monster = {} + +monster.description = "a sacred spider" +monster.experience = 330 +monster.outfit = { + lookType = 219, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 709 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Horestis Tomb (third floor and lower).", +} + +monster.health = 550 +monster.maxHealth = 550 +monster.race = "venom" +monster.corpse = 6060 +monster.speed = 122 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 20, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 89790, maxCount = 100 }, + { name = "gold coin", chance = 89790, maxCount = 19 }, + { name = "scarab coin", chance = 6710, maxCount = 4 }, + { name = "plate armor", chance = 5050 }, + { name = "spider fangs", chance = 25380 }, + { name = "gold ingot", chance = 60 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -160, condition = { type = CONDITION_POISON, totalDamage = 80, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -80, range = 7, shootEffect = CONST_ANI_POISON, target = false }, +} + +monster.defenses = { + defense = 0, + armor = 27, + mitigation = 1.43, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/sandcrawler.lua b/data-canary/monster/vermins/sandcrawler.lua index 21340816742..19c8a6d228d 100644 --- a/data-canary/monster/vermins/sandcrawler.lua +++ b/data-canary/monster/vermins/sandcrawler.lua @@ -47,10 +47,10 @@ monster.flags = { attackable = true, hostile = true, convinceable = true, - pushable = false, + pushable = true, rewardBoss = false, - illusionable = false, - canPushItems = true, + illusionable = true, + canPushItems = false, canPushCreatures = false, staticAttackChance = 90, targetDistance = 1, @@ -74,8 +74,8 @@ monster.voices = { } monster.loot = { - { id = 3031, chance = 33333, maxCount = 6 }, -- gold coin - { id = 10456, chance = 2173 }, -- sandcrawler shell + { name = "gold coin", chance = 33333, maxCount = 6 }, + { name = "sandcrawler shell", chance = 2173 }, } monster.attacks = { @@ -84,14 +84,15 @@ monster.attacks = { monster.defenses = { defense = 10, - armor = 10, + armor = 2, + mitigation = 0.07, } monster.elements = { { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, { type = COMBAT_ENERGYDAMAGE, percent = 0 }, { type = COMBAT_EARTHDAMAGE, percent = 0 }, - { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, { type = COMBAT_LIFEDRAIN, percent = 0 }, { type = COMBAT_MANADRAIN, percent = 0 }, { type = COMBAT_DROWNDAMAGE, percent = 0 }, diff --git a/data-canary/monster/vermins/scarab.lua b/data-canary/monster/vermins/scarab.lua new file mode 100644 index 00000000000..8d807e19977 --- /dev/null +++ b/data-canary/monster/vermins/scarab.lua @@ -0,0 +1,119 @@ +local mType = Game.createMonsterType("Scarab") +local monster = {} + +monster.description = "a scarab" +monster.experience = 120 +monster.outfit = { + lookType = 83, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 83 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Ankrahmun Tombs, the sand around Ankrahmun (use a shovel), deep in Larva caves, \z + the path leading to Chor, beneath Fenrock, Lion's Rock.", +} + +monster.health = 320 +monster.maxHealth = 320 +monster.race = "venom" +monster.corpse = 6024 +monster.speed = 80 +monster.manaCost = 395 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 80, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 86800, maxCount = 52 }, + { name = "small emerald", chance = 413 }, + { name = "small amethyst", chance = 540 }, + { name = "scarab coin", chance = 1098 }, + { name = "daramian mace", chance = 245 }, + { name = "meat", chance = 40000, maxCount = 2 }, + { name = "piece of scarab shell", chance = 4950 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -75 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -35, range = 1, shootEffect = CONST_ANI_POISON, target = false }, + { name = "poisonfield", interval = 2000, chance = 10, radius = 1, target = false }, +} + +monster.defenses = { + defense = 15, + armor = 21, + mitigation = 0.67, + { name = "speed", interval = 2000, chance = 15, speedChange = 200, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -18 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 20 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/scorpion.lua b/data-canary/monster/vermins/scorpion.lua new file mode 100644 index 00000000000..f6822ed1bd3 --- /dev/null +++ b/data-canary/monster/vermins/scorpion.lua @@ -0,0 +1,114 @@ +local mType = Game.createMonsterType("Scorpion") +local monster = {} + +monster.description = "a scorpion" +monster.experience = 45 +monster.outfit = { + lookType = 43, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 43 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Near Thais Troll Cave, Plague Spike, Drefia, Jakundaf Desert, \z + Green Claw Swamp, beneath Folda, Maze of Lost Souls, Plains of Havoc, \z + Venore and Ankrahmun Dragon Lairs, beneath Edron Graveyard, Ancient Temple, \z + Hellgate, Mad Mage Room, Ankrahmun Tombs, Treasure Island, Mal'ouquah, Ramoa, \z + Cyclopolis, Ghostlands, Vengoth, Lion's Rock.", +} + +monster.health = 45 +monster.maxHealth = 45 +monster.race = "venom" +monster.corpse = 5988 +monster.speed = 75 +monster.manaCost = 310 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 60, + random = 40, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 5, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "scorpion tail", chance = 4930 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -50, condition = { type = CONDITION_POISON, totalDamage = 340, interval = 4000 } }, +} + +monster.defenses = { + defense = 5, + armor = 14, + mitigation = 0.13, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/slug.lua b/data-canary/monster/vermins/slug.lua new file mode 100644 index 00000000000..3d69e9a6d2d --- /dev/null +++ b/data-canary/monster/vermins/slug.lua @@ -0,0 +1,114 @@ +local mType = Game.createMonsterType("Slug") +local monster = {} + +monster.description = "a slug" +monster.experience = 70 +monster.outfit = { + lookType = 407, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 731 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "South-east of Venore, Swamp Troll Cave.", +} + +monster.health = 255 +monster.maxHealth = 255 +monster.race = "venom" +monster.corpse = 12526 +monster.speed = 52 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Sluuurz", yell = false }, + { text = "Sluuuurp", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 62000, maxCount = 40 }, + { name = "worm", chance = 5000, maxCount = 3 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -44 }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -5, maxDamage = -40, range = 7, shootEffect = CONST_ANI_POISON, target = true }, +} + +monster.defenses = { + defense = 15, + armor = 8, + mitigation = 0.64, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -10 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 50 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/spider.lua b/data-canary/monster/vermins/spider.lua index d6d943cdf78..bc27cdd73b9 100644 --- a/data-canary/monster/vermins/spider.lua +++ b/data-canary/monster/vermins/spider.lua @@ -74,8 +74,8 @@ monster.voices = { } monster.loot = { - { id = 3031, chance = 65150, maxCount = 5 }, -- gold coin - { id = 8031, chance = 960 }, -- spider fangs + { name = "gold coin", chance = 65150, maxCount = 5 }, + { name = "spider fangs", chance = 960 }, } monster.attacks = { @@ -85,6 +85,7 @@ monster.attacks = { monster.defenses = { defense = 2, armor = 2, + mitigation = 0.05, } monster.elements = { diff --git a/data-canary/monster/vermins/spidris.lua b/data-canary/monster/vermins/spidris.lua new file mode 100644 index 00000000000..b6cb8e35501 --- /dev/null +++ b/data-canary/monster/vermins/spidris.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Spidris") +local monster = {} + +monster.description = "a spidris" +monster.experience = 2600 +monster.outfit = { + lookType = 457, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 787 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "Hive, Hive Outpost.", +} + +monster.health = 3700 +monster.maxHealth = 3700 +monster.race = "venom" +monster.corpse = 13870 +monster.speed = 195 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Eeeeeeyyyyh!", yell = false }, + { text = "Iiiiieeeeeeh!", yell = false }, +} + +monster.loot = { + { name = "small ruby", chance = 11900, maxCount = 5 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "platinum coin", chance = 45000, maxCount = 4 }, + { name = "violet gem", chance = 770 }, + { id = 6299, chance = 2700 }, -- death ring + { name = "titan axe", chance = 920 }, + { name = "great mana potion", chance = 11500, maxCount = 2 }, + { id = 281, chance = 1700 }, -- giant shimmering pearl (green) + { name = "ultimate health potion", chance = 6250, maxCount = 2 }, + { name = "spidris mandible", chance = 14960 }, + { name = "compound eye", chance = 12500 }, + { name = "calopteryx cape", chance = 370 }, + { name = "carapace shield", chance = 720 }, + { name = "hive scythe", chance = 690 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -298 }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -310, range = 7, radius = 3, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = true }, +} + +monster.defenses = { + defense = 30, + armor = 53, + mitigation = 1.62, + { name = "speed", interval = 2000, chance = 15, speedChange = 450, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -3 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/spidris_elite.lua b/data-canary/monster/vermins/spidris_elite.lua new file mode 100644 index 00000000000..2302dd46b0e --- /dev/null +++ b/data-canary/monster/vermins/spidris_elite.lua @@ -0,0 +1,125 @@ +local mType = Game.createMonsterType("Spidris Elite") +local monster = {} + +monster.description = "a spidris elite" +monster.experience = 4000 +monster.outfit = { + lookType = 457, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 797 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 2, + Locations = "The Hive: east tower (beyond gates), west tower (including beyond gates), \z + also anywhere Hive Overseers are found (as summons), Hive Outpost.", +} + +monster.health = 5000 +monster.maxHealth = 5000 +monster.race = "venom" +monster.corpse = 13870 +monster.speed = 197 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, + isPreyExclusive = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "small ruby", chance = 23280, maxCount = 5 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "platinum coin", chance = 45000, maxCount = 6 }, + { name = "violet gem", chance = 1120 }, + { id = 6299, chance = 4480 }, -- death ring + { name = "titan axe", chance = 1440 }, + { name = "great mana potion", chance = 20400, maxCount = 2 }, + { id = 281, chance = 3040 }, -- giant shimmering pearl (green) + { name = "ultimate health potion", chance = 9250, maxCount = 2 }, + { name = "spidris mandible", chance = 27440 }, + { name = "compound eye", chance = 13210 }, + { name = "calopteryx cape", chance = 1280 }, + { name = "carapace shield", chance = 1170 }, + { name = "hive scythe", chance = 1390 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -349 }, +} + +monster.defenses = { + defense = 30, + armor = 55, + mitigation = 1.74, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -3 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/spitter.lua b/data-canary/monster/vermins/spitter.lua new file mode 100644 index 00000000000..0cc902ef51d --- /dev/null +++ b/data-canary/monster/vermins/spitter.lua @@ -0,0 +1,129 @@ +local mType = Game.createMonsterType("Spitter") +local monster = {} + +monster.description = "a spitter" +monster.experience = 1100 +monster.outfit = { + lookType = 461, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 791 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "The Hive, Hive Outpost.", +} + +monster.health = 1500 +monster.maxHealth = 1500 +monster.race = "venom" +monster.corpse = 13979 +monster.speed = 135 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 40, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Spotz!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 90 }, + { name = "small amethyst", chance = 8000, maxCount = 2 }, + { name = "platinum coin", chance = 75250 }, + { name = "green gem", chance = 210 }, + { id = 3053, chance = 2400 }, -- time ring + { name = "platinum amulet", chance = 260 }, + { name = "crusader helmet", chance = 230 }, + { name = "brown mushroom", chance = 7500, maxCount = 3 }, + { name = "mastermind potion", chance = 310 }, + { name = "crystal sword", chance = 2000 }, + { name = "great mana potion", chance = 8000 }, + { name = "great health potion", chance = 5000 }, + { name = "spitter nose", chance = 18000 }, + { name = "compound eye", chance = 15000 }, + { name = "calopteryx cape", chance = 240 }, + { name = "grasshopper legs", chance = 130 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150, condition = { type = CONDITION_POISON, totalDamage = 240, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -160, range = 7, radius = 3, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, + { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, shootEffect = CONST_ANI_POISON, target = true, duration = 15000 }, +} + +monster.defenses = { + defense = 20, + armor = 48, + mitigation = 1.60, + { name = "speed", interval = 2000, chance = 15, speedChange = 400, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = -11 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 15 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/streaked_devourer.lua b/data-canary/monster/vermins/streaked_devourer.lua new file mode 100644 index 00000000000..516bbb1f489 --- /dev/null +++ b/data-canary/monster/vermins/streaked_devourer.lua @@ -0,0 +1,130 @@ +local mType = Game.createMonsterType("Streaked Devourer") +local monster = {} + +monster.description = "a streaked devourer" +monster.experience = 6300 +monster.outfit = { + lookType = 1398, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2091 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Grotto of the Lost.", +} + +monster.health = 7000 +monster.maxHealth = 7000 +monster.race = "blood" +monster.corpse = 36692 +monster.speed = 125 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 8, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 4, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 70000, maxCount = 28 }, + { name = "gold ingot", chance = 16920, maxCount = 3 }, + { name = "streaked devourer maw", chance = 13850, maxCount = 2 }, + { name = "streaked devourer eyes", chance = 9230, maxCount = 2 }, + { id = 3039, chance = 4620, maxCount = 1 }, -- red gem + { name = "streaked devourer legs", chance = 1540 }, + { name = "yellow gem", chance = 1540 }, + { name = "crystal mace", chance = 1540 }, + { name = "mercenary sword", chance = 1540 }, + { name = "noble axe", chance = 1280 }, + { name = "ornate crossbow", chance = 1100 }, + { name = "relic sword", chance = 1010 }, + { name = "guardian halberd", chance = 3080 }, + { name = "warrior's axe", chance = 1540 }, + { name = "giant sword", chance = 830 }, + { name = "war axe", chance = 4620 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -550 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -800, maxDamage = -900, radius = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -580, maxDamage = -620, range = 5, radius = 3, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, + { name = "devourer death wave", interval = 2000, chance = 40, minDamage = -730, maxDamage = -770 }, +} + +monster.defenses = { + defense = 62, + armor = 62, + mitigation = 1.60, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -15 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/sulphider.lua b/data-canary/monster/vermins/sulphider.lua new file mode 100644 index 00000000000..ad42af1cda7 --- /dev/null +++ b/data-canary/monster/vermins/sulphider.lua @@ -0,0 +1,123 @@ +local mType = Game.createMonsterType("Sulphider") +local monster = {} + +monster.description = "a sulphider" +monster.experience = 13328 +monster.outfit = { + lookType = 1546, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2264 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 5000, + FirstUnlock = 200, + SecondUnlock = 2000, + CharmsPoints = 100, + Stars = 5, + Occurrence = 0, + Locations = "Monster Graveyard", +} + +monster.health = 21000 +monster.maxHealth = 21000 +monster.race = "blood" +monster.corpse = 39275 +monster.speed = 215 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Tikkee...Takka...", yell = false }, +} + +monster.loot = { + { name = "Sulphur Powder", chance = 29600 }, + { name = "Sulphider Shell", chance = 24660 }, + { name = "Ultimate Mana Potion", chance = 14620 }, + { name = "Crystal Coin", chance = 14430, minCount = 1, maxCount = 3 }, + { name = "White Pearl", chance = 5010 }, + { name = "Fire Axe", chance = 2450 }, + { name = "Magma Boots", chance = 1600 }, + { name = "Crown Shield", chance = 1230 }, + { name = "Amber Staff", chance = 1150 }, + { name = "Amulet of Loss", chance = 850 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1000 }, + { name = "combat", interval = 3500, chance = 40, type = COMBAT_FIREDAMAGE, minDamage = -650, maxDamage = -1060, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, + { name = "blast ring", interval = 4000, chance = 35, minDamage = -600, maxDamage = -1100 }, +} + +monster.defenses = { + defense = 110, + armor = 83, + mitigation = 2.11, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 20 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -20 }, + { type = COMBAT_HOLYDAMAGE, percent = -10 }, + { type = COMBAT_DEATHDAMAGE, percent = 20 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) + +RegisterPrimalPackBeast(monster) diff --git a/data-canary/monster/vermins/swarmer.lua b/data-canary/monster/vermins/swarmer.lua new file mode 100644 index 00000000000..3a27eca991a --- /dev/null +++ b/data-canary/monster/vermins/swarmer.lua @@ -0,0 +1,117 @@ +local mType = Game.createMonsterType("Swarmer") +local monster = {} + +monster.description = "a swarmer" +monster.experience = 350 +monster.outfit = { + lookType = 460, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 790 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "The Hive, Hive Outpost.", +} + +monster.health = 460 +monster.maxHealth = 460 +monster.race = "venom" +monster.corpse = 13973 +monster.speed = 128 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 50, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Flzlzlzlzlzlzlz!", yell = false }, + { text = "Rzlrzlrzlrzlrzlrzl!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 75 }, + { name = "small emerald", chance = 920 }, + { name = "epee", chance = 450 }, + { name = "swarmer antenna", chance = 15300 }, + { name = "compound eye", chance = 12500 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -102, condition = { type = CONDITION_POISON, totalDamage = 80, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -110, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, +} + +monster.defenses = { + defense = 10, + armor = 29, + mitigation = 0.91, + { name = "speed", interval = 2000, chance = 15, speedChange = 220, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 75 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -8 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -3 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/swarmer_hatchling.lua b/data-canary/monster/vermins/swarmer_hatchling.lua new file mode 100644 index 00000000000..540c4b41fe6 --- /dev/null +++ b/data-canary/monster/vermins/swarmer_hatchling.lua @@ -0,0 +1,96 @@ +local mType = Game.createMonsterType("Swarmer Hatchling") +local monster = {} + +monster.description = "a swarmer hatchling" +monster.experience = 0 +monster.outfit = { + lookType = 460, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 5 +monster.maxHealth = 5 +monster.race = "blood" +monster.corpse = 13973 +monster.speed = 280 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 2000, + chance = 50, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Flzlzlzlzlzlzlz?", yell = false }, +} + +monster.loot = {} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -99 }, + { name = "combat", interval = 1000, chance = 11, type = COMBAT_DROWNDAMAGE, minDamage = -15, maxDamage = -100, range = 5, shootEffect = CONST_ANI_SPEAR, effect = CONST_ME_LOSEENERGY, target = true }, +} + +monster.defenses = { + defense = 20, + armor = 12, + mitigation = 0.07, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = -400 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/tarantula.lua b/data-canary/monster/vermins/tarantula.lua new file mode 100644 index 00000000000..b8c3147d810 --- /dev/null +++ b/data-canary/monster/vermins/tarantula.lua @@ -0,0 +1,122 @@ +local mType = Game.createMonsterType("Tarantula") +local monster = {} + +monster.description = "a tarantula" +monster.experience = 120 +monster.outfit = { + lookType = 219, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 219 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Tiquanda Tarantula Caves, Spider Caves, Trapwood ground level and underground, \z + in 2 small caves South of Thais, Dark Cathedral, single spawn on top of Crocodile den north of Port Hope, \z + Plains of Havoc, underground Liberty Bay, Nargor Undead Cave and other constituents of the Shattered Isles, \z + Green Claw Swamp, first floor up in the big building in the Cemetery Quarter, Robson Isle, Vengoth. \z + After the summer update of 2876, tarantulas can be seen on the beginner's island of Rookgaard.", +} + +monster.health = 225 +monster.maxHealth = 225 +monster.race = "venom" +monster.corpse = 6060 +monster.speed = 107 +monster.manaCost = 485 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 79000, maxCount = 40 }, + { id = 3053, chance = 120 }, -- time ring + { name = "steel helmet", chance = 990 }, + { name = "brass legs", chance = 3050 }, + { name = "plate shield", chance = 2000 }, + { name = "spider fangs", chance = 4820 }, + { name = "tarantula egg", chance = 10000 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -90, condition = { type = CONDITION_POISON, totalDamage = 40, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, range = 1, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_CARNIPHILA, target = true }, +} + +monster.defenses = { + defense = 10, + armor = 20, + mitigation = 0.51, + { name = "speed", interval = 2000, chance = 15, speedChange = 220, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 10 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -15 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -10 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = true }, + { type = "invisible", condition = false }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/terramite.lua b/data-canary/monster/vermins/terramite.lua new file mode 100644 index 00000000000..370f0b099ef --- /dev/null +++ b/data-canary/monster/vermins/terramite.lua @@ -0,0 +1,115 @@ +local mType = Game.createMonsterType("Terramite") +local monster = {} + +monster.description = "a terramite" +monster.experience = 160 +monster.outfit = { + lookType = 346, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 631 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 500, + FirstUnlock = 25, + SecondUnlock = 250, + CharmsPoints = 15, + Stars = 2, + Occurrence = 0, + Locations = "Steppe of Zao, Lion's Rock, Zao Terramite Caves, Darama Terramite Cave, \z + Terramite Breeding Tunnels. Also raids desert north of Ankrahmun.", +} + +monster.health = 365 +monster.maxHealth = 365 +monster.race = "venom" +monster.corpse = 10430 +monster.speed = 111 +monster.manaCost = 505 + +monster.changeTarget = { + interval = 5000, + chance = 0, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = true, + attackable = true, + hostile = true, + convinceable = true, + pushable = true, + rewardBoss = false, + illusionable = true, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = false, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Zrp zrp!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 97520, maxCount = 45 }, + { name = "terramite shell", chance = 7730 }, + { name = "terramite eggs", chance = 4680, maxCount = 3 }, + { name = "terramite legs", chance = 14880 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -5, maxDamage = -16, range = 7, shootEffect = CONST_ANI_POISON, target = true }, +} + +monster.defenses = { + defense = 20, + armor = 15, + mitigation = 0.56, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 5 }, + { type = COMBAT_ENERGYDAMAGE, percent = -5 }, + { type = COMBAT_EARTHDAMAGE, percent = 20 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/tremendous_tyrant.lua b/data-canary/monster/vermins/tremendous_tyrant.lua new file mode 100644 index 00000000000..3cc624556e9 --- /dev/null +++ b/data-canary/monster/vermins/tremendous_tyrant.lua @@ -0,0 +1,134 @@ +local mType = Game.createMonsterType("Tremendous Tyrant") +local monster = {} + +monster.description = "a tremendous tyrant" +monster.experience = 6100 +monster.outfit = { + lookType = 1396, + lookHead = 60, + lookBody = 84, + lookLegs = 40, + lookFeet = 94, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2089 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 1, + Locations = "Dwelling of the Forgotten", +} + +monster.health = 11500 +monster.maxHealth = 11500 +monster.race = "blood" +monster.corpse = 36684 +monster.speed = 115 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 10000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = false, +} + +monster.light = { + level = 3, + color = 106, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 70000, maxCount = 24 }, + { name = "gold ingot", chance = 11820, maxCount = 2 }, + { id = 3039, chance = 14550, maxCount = 1 }, -- red gem + { name = "violet crystal shard", chance = 6360, maxCount = 3 }, + { name = "green crystal shard", chance = 5450 }, + { name = "blue crystal shard", chance = 5450 }, + { name = "tremendous tyrant shell", chance = 4550 }, + { name = "yellow gem", chance = 9090, maxCount = 1 }, + { name = "spellbook of warding", chance = 8180 }, + { name = "wand of starstorm", chance = 910 }, + { name = "ice rapier", chance = 1820 }, + { name = "hailstorm rod", chance = 2730 }, + { name = "knight axe", chance = 4550 }, + { name = "dragonbone staff", chance = 3640 }, + { name = "tremendous tyrant head", chance = 8180 }, + { name = "wand of cosmic energy", chance = 2730 }, + { name = "warrior's shield", chance = 1820 }, + { name = "elven amulet", chance = 2730 }, + { name = "focus cape", chance = 1820 }, + { name = "glacier robe", chance = 4555 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_ICEDAMAGE, minDamage = -600, maxDamage = -650, length = 5, spread = 0, effect = CONST_ME_ICEATTACK, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -600, maxDamage = -700, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEAREA, target = false }, -- avalanche + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HOLYDAMAGE, minDamage = -750, maxDamage = -950, range = 5, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYAREA, target = true }, +} + +monster.defenses = { + defense = 71, + armor = 71, + mitigation = 1.88, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = -20 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 15 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/tunnel_tyrant.lua b/data-canary/monster/vermins/tunnel_tyrant.lua new file mode 100644 index 00000000000..c2b8eb2df90 --- /dev/null +++ b/data-canary/monster/vermins/tunnel_tyrant.lua @@ -0,0 +1,127 @@ +local mType = Game.createMonsterType("Tunnel Tyrant") +local monster = {} + +monster.description = "a tunnel tyrant" +monster.experience = 4420 +monster.outfit = { + lookType = 1035, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 1545 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Warzone 5", +} + +monster.health = 5200 +monster.maxHealth = 5200 +monster.race = "blood" +monster.corpse = 27555 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 10000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "small enchanted sapphire", chance = 11910 }, + { name = "small enchanted ruby", chance = 9040 }, + { name = "violet gem", chance = 7750 }, + { name = "lump of dirt", chance = 10190 }, + { name = "tunnel tyrant head", chance = 24100 }, + { name = "tunnel tyrant shell", chance = 12480 }, + { name = "green gem", chance = 2300 }, + { name = "blue gem", chance = 3010 }, + { name = "crystal mace", chance = 1580 }, + { id = 23508, chance = 3010 }, -- energy vein + { name = "crystalline armor", chance = 860 }, + { name = "suspicious device", chance = 1850 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "stalagmite rune", interval = 2000, chance = 15, minDamage = -190, maxDamage = -300, range = 7, shootEffect = CONST_ANI_POISON, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -160, range = 3, length = 6, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -160, range = 3, length = 6, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -230, maxDamage = -450, range = 7, radius = 3, effect = CONST_ME_STONES, target = true }, +} + +monster.defenses = { + defense = 5, + armor = 76, + mitigation = 1.82, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 20 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -30 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/undertaker.lua b/data-canary/monster/vermins/undertaker.lua new file mode 100644 index 00000000000..d48c01d1c65 --- /dev/null +++ b/data-canary/monster/vermins/undertaker.lua @@ -0,0 +1,126 @@ +local mType = Game.createMonsterType("Undertaker") +local monster = {} + +monster.description = "an undertaker" +monster.experience = 13543 +monster.outfit = { + lookType = 1551, + lookHead = 85, + lookBody = 1, + lookLegs = 85, + lookFeet = 105, + lookAddons = 3, + lookMount = 0, +} + +monster.raceId = 2269 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 5000, + FirstUnlock = 200, + SecondUnlock = 2000, + CharmsPoints = 100, + Stars = 5, + Occurrence = 0, + Locations = "Monster Graveyard", +} + +monster.health = 20100 +monster.maxHealth = 20100 +monster.race = "venom" +monster.corpse = 39295 +monster.speed = 205 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Hizzzzz!", yell = false }, +} + +monster.loot = { + { name = "Great Spirit Potion", chance = 30660, minCount = 1, maxCount = 3 }, + { name = "Undertaker Fangs", chance = 25740 }, + { name = "Crystal Coin", chance = 15100, minCount = 1, maxCount = 3 }, + { name = "Spider Silk", chance = 3520 }, + { name = "Terra Boots", chance = 3390 }, + { name = "Blue Crystal Shard", chance = 1840 }, + { name = "Relic Sword", chance = 1650 }, + { name = "Terra Legs", chance = 1640 }, + { name = "Necrotic Rod", chance = 1400 }, + { name = "Butterfly Ring", chance = 1240 }, + { name = "Wand of Voodoo", chance = 960 }, + { name = "Violet Gem", chance = 850 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1200 }, + { name = "combat", interval = 4500, chance = 47, type = COMBAT_DEATHDAMAGE, minDamage = -800, maxDamage = -1150, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, + { name = "combat", interval = 3650, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -600, maxDamage = -950, radius = 2, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "undertaker square explosion", interval = 3000, chance = 25, minDamage = -775, maxDamage = -900, range = 4, target = true }, + { name = "combat", interval = 5000, chance = 40, type = COMBAT_EARTHDAMAGE, minDamage = -1500, maxDamage = -2000, range = 1, radius = 1, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, + { name = "root wave", interval = 2000, chance = 5, target = true }, +} + +monster.defenses = { + defense = 110, + armor = 77, + mitigation = 2.22, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -15 }, + { type = COMBAT_ENERGYDAMAGE, percent = -10 }, + { type = COMBAT_EARTHDAMAGE, percent = 10 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -5 }, + { type = COMBAT_DEATHDAMAGE, percent = 40 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/varnished_diremaw.lua b/data-canary/monster/vermins/varnished_diremaw.lua new file mode 100644 index 00000000000..a2704f6a7d6 --- /dev/null +++ b/data-canary/monster/vermins/varnished_diremaw.lua @@ -0,0 +1,139 @@ +local mType = Game.createMonsterType("Varnished Diremaw") +local monster = {} + +monster.description = "a varnished diremaw" +monster.experience = 5900 +monster.outfit = { + lookType = 1397, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 2090 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 2500, + FirstUnlock = 100, + SecondUnlock = 1000, + CharmsPoints = 50, + Stars = 4, + Occurrence = 0, + Locations = "Dwelling of the Forgotten.", +} + +monster.health = 9000 +monster.maxHealth = 9000 +monster.race = "blood" +monster.corpse = 36688 +monster.speed = 120 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 5000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 3, + color = 71, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "platinum coin", chance = 70000, maxCount = 18 }, + { name = "terra rod", chance = 30090 }, + { name = "emerald bangle", chance = 18580, maxCount = 1 }, + { name = "brown crystal splinter", chance = 8850, maxCount = 3 }, + { id = 3039, chance = 10620, maxCount = 1 }, -- red gem + { name = "green crystal splinter", chance = 6190, maxCount = 3 }, + { name = "small diamond", chance = 9730, maxCount = 6 }, + { name = "varnished diremaw legs", chance = 13270, maxCount = 4 }, + { name = "violet crystal shard", chance = 9730, maxCount = 3 }, + { name = "cyan crystal fragment", chance = 5310 }, + { name = "varnished diremaw brainpan", chance = 2650 }, + { name = "green gem", chance = 6190, maxCount = 1 }, + { name = "small emerald", chance = 9730, maxCount = 5 }, + { name = "green crystal shard", chance = 11500, maxCount = 3 }, + { name = "hailstorm rod", chance = 6190 }, + { name = "diamond sceptre", chance = 2650 }, + { name = "wand of starstorm", chance = 2650 }, + { name = "springsprout rod", chance = 7080 }, + { name = "glacier shoes", chance = 2650 }, + { name = "spellbook of warding", chance = 1770 }, + { name = "fur armor", chance = 1640 }, + { name = "wood cape", chance = 2650 }, + { name = "haunted blade", chance = 1370 }, + { name = "glacier kilt", chance = 880 }, + { name = "crown shield", chance = 880 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_ICEDAMAGE, minDamage = -700, maxDamage = -750, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true }, -- avalanche + { name = "combat", interval = 2000, chance = 50, type = COMBAT_HOLYDAMAGE, minDamage = -730, maxDamage = -750, radius = 3, effect = CONST_ME_HOLYAREA, target = false }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_ICEDAMAGE, minDamage = -800, maxDamage = -850, range = 4, shootEffect = CONST_ANI_ICE, target = true }, +} + +monster.defenses = { + defense = 5, + armor = 50, + mitigation = 1.60, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -5 }, + { type = COMBAT_ENERGYDAMAGE, percent = 15 }, + { type = COMBAT_EARTHDAMAGE, percent = -5 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 5 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/wailing_widow.lua b/data-canary/monster/vermins/wailing_widow.lua new file mode 100644 index 00000000000..7eb8ca57bff --- /dev/null +++ b/data-canary/monster/vermins/wailing_widow.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Wailing Widow") +local monster = {} + +monster.description = "a wailing widow" +monster.experience = 450 +monster.outfit = { + lookType = 347, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 632 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Zao Wailing Widow Cave, Northern Zao Plantations, Northern Brimstone Bug Cave, \z + Razzachai, Chyllfroest, Krailos Spider Lair.", +} + +monster.health = 850 +monster.maxHealth = 850 +monster.race = "venom" +monster.corpse = 10393 +monster.speed = 127 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = { + { name = "gold coin", chance = 50000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 37 }, + { name = "halberd", chance = 4460 }, + { name = "plate shield", chance = 2854 }, + { name = "green mushroom", chance = 3208 }, + { name = "health potion", chance = 4761 }, + { name = "mana potion", chance = 4785 }, + { name = "zaoan halberd", chance = 2210 }, + { name = "widow's mandibles", chance = 20950 }, + { name = "wailing widow's necklace", chance = 900 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120, condition = { type = CONDITION_POISON, totalDamage = 160, interval = 4000 } }, + { name = "drunk", interval = 2000, chance = 20, range = 7, radius = 4, effect = CONST_ME_SOUND_RED, target = false, duration = 4000 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -40, maxDamage = -70, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -110, range = 7, shootEffect = CONST_ANI_POISON, target = false }, +} + +monster.defenses = { + defense = 0, + armor = 0, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_HEALING, minDamage = 70, maxDamage = 100, effect = CONST_ME_SOUND_WHITE, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = 820, effect = CONST_ME_SOUND_YELLOW, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 10 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/wasp.lua b/data-canary/monster/vermins/wasp.lua index ce35f28e83f..d89b7522eb8 100644 --- a/data-canary/monster/vermins/wasp.lua +++ b/data-canary/monster/vermins/wasp.lua @@ -25,7 +25,7 @@ monster.Bestiary = { Occurrence = 0, Locations = "South of Thais, west of Ab'Dendriel, northeastern Cormaya, \z Green Claw Swamp between Kazordoon and Venore, Wasp Tower in Rookgaard, \z - Wasp Towers in Darashia, all over Tiquanda, and all over Vandura.", + Wasp Towers in Darashia, all over Tiquanda, and all over Vandura, roaming around Marapur.", } monster.health = 35 @@ -49,7 +49,7 @@ monster.flags = { summonable = true, attackable = true, hostile = true, - convinceable = true, + convinceable = false, pushable = true, rewardBoss = false, illusionable = true, @@ -77,7 +77,7 @@ monster.voices = { } monster.loot = { - { id = 5902, chance = 3000 }, -- honeycomb + { name = "honeycomb", chance = 3000 }, } monster.attacks = { @@ -86,7 +86,8 @@ monster.attacks = { monster.defenses = { defense = 10, - armor = 10, + armor = 4, + mitigation = 0.20, } monster.elements = { diff --git a/data-canary/monster/vermins/waspoid.lua b/data-canary/monster/vermins/waspoid.lua new file mode 100644 index 00000000000..25da67cc07f --- /dev/null +++ b/data-canary/monster/vermins/waspoid.lua @@ -0,0 +1,124 @@ +local mType = Game.createMonsterType("Waspoid") +local monster = {} + +monster.description = "a Waspoid" +monster.experience = 830 +monster.outfit = { + lookType = 462, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.raceId = 792 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "The Hive, Hive Outpost.", +} + +monster.health = 1100 +monster.maxHealth = 1100 +monster.race = "venom" +monster.corpse = 13983 +monster.speed = 155 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 100, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = true, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 95, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Peeex!", yell = false }, + { text = "Bzzzzzzzrrrrzzzzzzrrrrr!", yell = false }, +} + +monster.loot = { + { name = "emerald bangle", chance = 2040 }, + { name = "black pearl", chance = 4230 }, + { name = "gold coin", chance = 40000, maxCount = 100 }, + { name = "gold coin", chance = 50000, maxCount = 35 }, + { name = "platinum coin", chance = 40430 }, + { name = "yellow gem", chance = 1040 }, + { name = "waspoid claw", chance = 9096 }, + { name = "waspoid wing", chance = 13890 }, + { name = "compound eye", chance = 6060 }, + { name = "grasshopper legs", chance = 230 }, + { name = "carapace shield", chance = 120 }, + { name = "hive scythe", chance = 330 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -248, condition = { type = CONDITION_POISON, totalDamage = 400, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -110, maxDamage = -180, radius = 3, effect = CONST_ME_POISONAREA, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -80, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISON, target = false }, +} + +monster.defenses = { + defense = 25, + armor = 36, + mitigation = 1.54, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = -2 }, + { type = COMBAT_ENERGYDAMAGE, percent = 25 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -10 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = -7 }, + { type = COMBAT_DEATHDAMAGE, percent = 5 }, +} + +monster.immunities = { + { type = "paralyze", condition = false }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/vermins/wiggler.lua b/data-canary/monster/vermins/wiggler.lua new file mode 100644 index 00000000000..bfce930b104 --- /dev/null +++ b/data-canary/monster/vermins/wiggler.lua @@ -0,0 +1,133 @@ +local mType = Game.createMonsterType("Wiggler") +local monster = {} + +monster.description = "a wiggler" +monster.experience = 900 +monster.outfit = { + lookType = 510, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.events = { + "WigglerDeath", +} + +monster.raceId = 899 +monster.Bestiary = { + class = "Vermin", + race = BESTY_RACE_VERMIN, + toKill = 1000, + FirstUnlock = 50, + SecondUnlock = 500, + CharmsPoints = 25, + Stars = 3, + Occurrence = 0, + Locations = "Can be found in Truffels Garden as well as the Mushroom Gardens.", +} + +monster.health = 1200 +monster.maxHealth = 1200 +monster.race = "venom" +monster.corpse = 16193 +monster.speed = 180 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + damage = 30, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = false, + illusionable = false, + canPushItems = true, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 359, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = false, + canWalkOnFire = false, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Zzzrp", yell = false }, + { text = "Crick! Crick!", yell = false }, +} + +monster.loot = { + { name = "gold coin", chance = 100000, maxCount = 100 }, + { name = "platinum coin", chance = 14790 }, + { name = "terra rod", chance = 850 }, + { name = "serpent sword", chance = 1360 }, + { name = "black shield", chance = 1320 }, + { name = "white mushroom", chance = 7142, maxCount = 5 }, + { name = "blue piece of cloth", chance = 2080 }, + { name = "yellow piece of cloth", chance = 2160 }, + { name = "strong health potion", chance = 4930 }, + { name = "strong mana potion", chance = 5250 }, + { name = "crystalline arrow", chance = 15540, maxCount = 5 }, + { name = "green crystal splinter", chance = 3600 }, + { name = "green crystal fragment", chance = 2070 }, + { name = "drill bolt", chance = 15260, maxCount = 5 }, +} + +monster.attacks = { + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200, condition = { type = CONDITION_POISON, totalDamage = 500, interval = 4000 } }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -180, maxDamage = -270, length = 4, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, + -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -160, maxDamage = -200, range = 7, shootEffect = CONST_ANI_POISONARROW, effect = CONST_ME_SMALLPLANTS, target = false }, + { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 3, spread = 2, effect = CONST_ME_HITAREA, target = false, duration = 30000 }, +} + +monster.defenses = { + defense = 15, + armor = 15, + { name = "speed", interval = 2000, chance = 15, speedChange = 510, effect = CONST_ME_MAGIC_RED, target = false, duration = 5000 }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 5 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = -5 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = 0 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 10 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/wild_magics/wild_fire_magic.lua b/data-canary/monster/wild_magics/wild_fire_magic.lua new file mode 100644 index 00000000000..d2fbba79379 --- /dev/null +++ b/data-canary/monster/wild_magics/wild_fire_magic.lua @@ -0,0 +1,96 @@ +local mType = Game.createMonsterType("Wild Fire Magic") +local monster = {} + +monster.description = "a wild fire magic" +monster.experience = 0 +monster.outfit = { + lookType = 0, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 1 +monster.maxHealth = 1 +monster.race = "undead" +monster.corpse = 0 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = false, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 1, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = {} + +monster.defenses = { + defense = 0, + armor = 0, + mitigation = 0.00, + { name = "effect", interval = 100, chance = 100, radius = 1, effect = CONST_ME_FIREWORK_YELLOW, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/wild_magics/wild_fury_magic.lua b/data-canary/monster/wild_magics/wild_fury_magic.lua new file mode 100644 index 00000000000..73c4e817750 --- /dev/null +++ b/data-canary/monster/wild_magics/wild_fury_magic.lua @@ -0,0 +1,96 @@ +local mType = Game.createMonsterType("Wild Fury Magic") +local monster = {} + +monster.description = "a wild fury magic" +monster.experience = 0 +monster.outfit = { + lookType = 0, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 1 +monster.maxHealth = 1 +monster.race = "undead" +monster.corpse = 0 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = false, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 1, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = {} + +monster.defenses = { + defense = 0, + armor = 0, + mitigation = 0.00, + { name = "effect", interval = 100, chance = 100, radius = 1, effect = CONST_ME_MAGIC_RED, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/wild_magics/wild_nature_magic.lua b/data-canary/monster/wild_magics/wild_nature_magic.lua new file mode 100644 index 00000000000..cc5f2ea81a9 --- /dev/null +++ b/data-canary/monster/wild_magics/wild_nature_magic.lua @@ -0,0 +1,96 @@ +local mType = Game.createMonsterType("Wild Nature Magic") +local monster = {} + +monster.description = "a wild nature magic" +monster.experience = 0 +monster.outfit = { + lookType = 0, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 1 +monster.maxHealth = 1 +monster.race = "undead" +monster.corpse = 0 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = false, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 1, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = {} + +monster.defenses = { + defense = 0, + armor = 0, + mitigation = 0.00, + { name = "effect", interval = 100, chance = 100, radius = 1, effect = CONST_ME_MAGIC_GREEN, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/monster/wild_magics/wild_water_magic.lua b/data-canary/monster/wild_magics/wild_water_magic.lua new file mode 100644 index 00000000000..7ddae0d5b52 --- /dev/null +++ b/data-canary/monster/wild_magics/wild_water_magic.lua @@ -0,0 +1,96 @@ +local mType = Game.createMonsterType("Wild Water Magic") +local monster = {} + +monster.description = "a wild water magic" +monster.experience = 0 +monster.outfit = { + lookType = 0, + lookHead = 0, + lookBody = 0, + lookLegs = 0, + lookFeet = 0, + lookAddons = 0, + lookMount = 0, +} + +monster.health = 1 +monster.maxHealth = 1 +monster.race = "undead" +monster.corpse = 0 +monster.speed = 105 +monster.manaCost = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.strategiesTarget = { + nearest = 70, + health = 10, + damage = 10, + random = 10, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = false, + convinceable = false, + pushable = true, + rewardBoss = false, + illusionable = false, + canPushItems = false, + canPushCreatures = false, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 1, + healthHidden = false, + isBlockable = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.light = { + level = 0, + color = 0, +} + +monster.voices = { + interval = 5000, + chance = 10, +} + +monster.loot = {} + +monster.attacks = {} + +monster.defenses = { + defense = 0, + armor = 0, + mitigation = 0.00, + { name = "effect", interval = 100, chance = 100, radius = 1, effect = CONST_ME_MAGIC_BLUE, target = false }, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "outfit", condition = false }, + { type = "invisible", condition = true }, + { type = "bleed", condition = false }, +} + +mType:register(monster) diff --git a/data-canary/world/canary-house.xml b/data-canary/world/canary-house.xml new file mode 100644 index 00000000000..43d8e80d11e --- /dev/null +++ b/data-canary/world/canary-house.xml @@ -0,0 +1,4 @@ + + + + diff --git a/data-canary/world/canary-monster.xml b/data-canary/world/canary-monster.xml new file mode 100644 index 00000000000..8704e6da3b2 --- /dev/null +++ b/data-canary/world/canary-monster.xml @@ -0,0 +1,2 @@ + + diff --git a/data-canary/world/canary-npc.xml b/data-canary/world/canary-npc.xml new file mode 100644 index 00000000000..e4b3ab9517b --- /dev/null +++ b/data-canary/world/canary-npc.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/data-canary/world/canary-zones.xml b/data-canary/world/canary-zones.xml new file mode 100644 index 00000000000..a9224bd3c2d --- /dev/null +++ b/data-canary/world/canary-zones.xml @@ -0,0 +1,2 @@ + + diff --git a/data-canary/world/canary.otbm b/data-canary/world/canary.otbm new file mode 100644 index 00000000000..8f787811a53 Binary files /dev/null and b/data-canary/world/canary.otbm differ