diff --git a/src/data/monsters_data.json b/src/data/monsters_data.json index d7089da80..b13f59322 100644 --- a/src/data/monsters_data.json +++ b/src/data/monsters_data.json @@ -14599,6 +14599,46 @@ "slayerXP": 1400, "assignableSlayerMasters": ["konar", "nieve", "duradel"] }, + "13489": { + "members": true, + "combatLevel": 22, + "hitpoints": 30, + "maxHit": 2, + "attackType": ["crush"], + "attackSpeed": 5, + "aggressive": true, + "poisonous": false, + "immuneToPoison": false, + "immuneToVenom": false, + "attributes": ["undead"], + "category": ["zombies", "pirates"], + "examineText": "Aaaargh, me hearty!", + "wikiName": "Zombie pirate (Level 22)", + "wikiURL": "https://oldschool.runescape.wiki/w/Zombie_pirate#Level_22", + "attackLevel": 20, + "strengthLevel": 10, + "defenceLevel": 20, + "magicLevel": 1, + "rangedLevel": 1, + "attackStab": 0, + "attackSlash": 0, + "attackCrush": 0, + "attackMagic": 0, + "attackRanged": 0, + "defenceStab": 0, + "defenceSlash": 0, + "defenceCrush": 0, + "defenceMagic": 0, + "defenceRanged": 0, + "attackAccuracy": 0, + "meleeStrength": 0, + "rangedStrength": 0, + "magicDamage": 0, + "isSlayerMonster": true, + "slayerLevelRequired": 1, + "slayerXP": 30, + "assignableSlayerMasters": ["turael", "spria", "krystilia", "mazchna"] + }, "13600": { "members": true, "combatLevel": 450, diff --git a/src/simulation/monsters/low/index.ts b/src/simulation/monsters/low/index.ts index 260206231..06819d167 100644 --- a/src/simulation/monsters/low/index.ts +++ b/src/simulation/monsters/low/index.ts @@ -262,6 +262,7 @@ import Wyrm from "./t-z/Wyrm"; import YanilleWatchman from "./t-z/YanilleWatchman"; import Zogre from "./t-z/Zogre"; import Zombie from "./t-z/Zombie"; +import ZombiePirate from "./t-z/ZombiePirate"; import ZombieRat from "./t-z/ZombieRat"; import Zygomite from "./t-z/Zygomite"; @@ -531,5 +532,6 @@ export const allLowMonsters = { GiantFrog, JubblyBird, ManiacalMonkey, + ZombiePirate, TormentedDemon, }; diff --git a/src/simulation/monsters/low/t-z/ZombiePirate.ts b/src/simulation/monsters/low/t-z/ZombiePirate.ts new file mode 100644 index 000000000..270f0061f --- /dev/null +++ b/src/simulation/monsters/low/t-z/ZombiePirate.ts @@ -0,0 +1,50 @@ +import LootTable from "../../../../structures/LootTable"; +import SimpleMonster from "../../../../structures/SimpleMonster"; + +export const ZombiePirateTable = new LootTable() + .every("Bones") + + /* Runes */ + .add("Blood rune", [30, 60], 4) + .add("Death rune", [30, 90], 4) + .add("Chaos rune", [30, 90], 4) + .add("Mind rune", [30, 90], 4) + + /* Weapons and armour */ + .add("Battlestaff", [1, 3], 8) + .add("Adamant platebody", 1, 6) + .add("Rune med helm", 1, 6) + .add("Rune warhammer", 1, 6) + .add("Rune battleaxe", 1, 6) + .add("Rune longsword", 1, 6) + .add("Rune sword", 1, 6) + .add("Rune mace", 1, 6) + .add("Dragon dagger", 1, 1) + .add("Dragon longsword", 1, 1) + .add("Dragon scimitar", 1, 1) + + /* Blighted supplies */ + .add("Blighted ancient ice sack", [10, 30], 12) + .add("Blighted anglerfish", [5, 15], 12) + .add("Blighted manta ray", [5, 15], 12) + .add("Blighted karambwan", [5, 15], 12) + .add("Blighted super restore(4)", [1, 3], 12) + + /* Other */ + .add(new LootTable(), 1, 181) // 'Nothing' drop + .add("Zombie pirate key", 1, 15) + .add("Coins", [1_000, 8_000], 12) + .add("Cannonball", [20, 100], 12) + .add("Gold ore", [5, 15], 12) + .add("Adamant seeds", [5, 10], 8) + .oneIn(20_000, "Teleport anchoring scroll") + + /* Tertiary */ + .tertiary(5000, "Zombie champion scroll"); + +export default new SimpleMonster({ + id: 13_489, + name: "Zombie pirate", + table: ZombiePirateTable, + aliases: ["zombie pirate"], +}); diff --git a/src/simulation/openables/ZombiePiratesLocker.ts b/src/simulation/openables/ZombiePiratesLocker.ts new file mode 100644 index 000000000..bd3eeea14 --- /dev/null +++ b/src/simulation/openables/ZombiePiratesLocker.ts @@ -0,0 +1,43 @@ +import LootTable from "../../structures/LootTable"; +import SimpleOpenable from "../../structures/SimpleOpenable"; + +const ZombiePirateLocker = new LootTable() + /* Runes */ + .add("Blood rune", [60, 120], 4) + .add("Death rune", [60, 180], 4) + .add("Chaos rune", [60, 180], 4) + .add("Mind rune", [60, 180], 4) + + /* Weapons and armour */ + .add("Battlestaff", [2, 6], 8) + .add("Adamant platebody", 2, 6) + .add("Rune med helm", 2, 6) + .add("Rune warhammer", 2, 6) + .add("Rune battleaxe", 2, 6) + .add("Rune longsword", 2, 6) + .add("Rune sword", 2, 6) + .add("Rune mace", 2, 6) + .add("Dragon dagger", 2, 1) + .add("Dragon longsword", 2, 1) + .add("Dragon scimitar", 2, 1) + + /* Blighted supplies */ + .add("Blighted ancient ice sack", [20, 60], 12) + .add("Blighted anglerfish", [10, 30], 12) + .add("Blighted manta ray", [10, 30], 12) + .add("Blighted karambwan", [10, 30], 12) + .add("Blighted super restore(4)", [2, 6], 12) + + /* Other */ + .add("Coins", [2_000, 16_000], 12) + .add("Cannonball", [40, 200], 12) + .add("Gold ore", [10, 30], 12) + .add("Adamant seeds", [10, 20], 8) + .oneIn(275, "Teleport anchoring scroll"); + +export default new SimpleOpenable({ + id: 29_449, + name: "Zombie Pirate's Locker", + aliases: ["zombie pirate locker", "pirate locker"], + table: ZombiePirateLocker, +});