From 2a592435421c8b4bf6761554b3539e306b42988f Mon Sep 17 00:00:00 2001 From: Geoff Date: Mon, 18 Oct 2021 00:35:13 +0000 Subject: [PATCH 01/10] Dragon Drop Tables --- Server/data/configs/drop_tables.json | 202 +++++++-------------------- 1 file changed, 50 insertions(+), 152 deletions(-) diff --git a/Server/data/configs/drop_tables.json b/Server/data/configs/drop_tables.json index b6151573f..18ed6d43d 100644 --- a/Server/data/configs/drop_tables.json +++ b/Server/data/configs/drop_tables.json @@ -2306,13 +2306,13 @@ }, { "minAmount": "1", - "weight": "25.0", + "weight": "50.0", "id": "1357", "maxAmount": "1" }, { "minAmount": "1", - "weight": "25.0", + "weight": "50.0", "id": "1317", "maxAmount": "1" }, @@ -2330,31 +2330,31 @@ }, { "minAmount": "105", - "weight": "25.0", + "weight": "50.0", "id": "556", "maxAmount": "105" }, { "minAmount": "105", - "weight": "25.0", + "weight": "50.0", "id": "554", "maxAmount": "105" }, { "minAmount": "7", - "weight": "8.0", + "weight": "25.0", "id": "560", "maxAmount": "7" }, { "minAmount": "15", - "weight": "8.0", + "weight": "25.0", "id": "565", "maxAmount": "15" }, { "minAmount": "15", - "weight": "8.0", + "weight": "25.0", "id": "563", "maxAmount": "15" }, @@ -2366,7 +2366,7 @@ }, { "minAmount": "1", - "weight": "8.0", + "weight": "50.0", "id": "9144", "maxAmount": "12" }, @@ -2382,12 +2382,6 @@ "id": "441", "maxAmount": "100" }, - { - "minAmount": "100", - "weight": "25.0", - "id": "454", - "maxAmount": "100" - }, { "minAmount": "100", "weight": "25.0", @@ -2396,7 +2390,7 @@ }, { "minAmount": "1", - "weight": "50.0", + "weight": "25.0", "id": "9431", "maxAmount": "1" }, @@ -2414,13 +2408,13 @@ }, { "minAmount": "1", - "weight": "8.0", + "weight": "25.0", "id": "407", "maxAmount": "1" }, { "minAmount": "1", - "weight": "8.0", + "weight": "10.0", "id": "12070", "maxAmount": "1" }, @@ -2432,25 +2426,19 @@ }, { "minAmount": "1", - "weight": "0.18", + "weight": "0.154", "id": "11286", "maxAmount": "1" }, { "minAmount": "1", - "weight": "100.0", - "id": "0", - "maxAmount": "1" - }, - { - "minAmount": "1", - "weight": "23.15", + "weight": "10.0", "id": "31", "maxAmount": "1" }, { "minAmount": "1", - "weight": "5600.0", + "weight": "200.0", "id": "0", "maxAmount": "1" } @@ -2880,7 +2868,7 @@ }, { "minAmount": "1", - "weight": "0.12", + "weight": "0.0562", "id": "11286", "maxAmount": "1" }, @@ -25185,13 +25173,13 @@ }, { "minAmount": "1", - "weight": "19.35", + "weight": "5.0", "id": "31", "maxAmount": "1" }, { "minAmount": "1", - "weight": "0.145", + "weight": "0.07994", "id": "11286", "maxAmount": "1" }, @@ -25417,13 +25405,13 @@ }, { "minAmount": "1", - "weight": "21.3", + "weight": "6.0", "id": "31", "maxAmount": "1" }, { "minAmount": "1", - "weight": "0.14", + "weight": "0.0728", "id": "11286", "maxAmount": "1" }, @@ -43295,7 +43283,7 @@ }, { "minAmount": "1", - "weight": "2.8", + "weight": "2.5", "id": "8901", "maxAmount": "1" }, @@ -46690,19 +46678,19 @@ }, { "minAmount": "1", - "weight": "25.0", + "weight": "8.0", "id": "31", "maxAmount": "1" }, { "minAmount": "1", - "weight": "0.15", + "weight": "0.0768", "id": "11286", "maxAmount": "1" }, { "minAmount": "1", - "weight": "0.03", + "weight": "0.025", "id": "11335", "maxAmount": "1" }, @@ -63408,25 +63396,25 @@ "main": [ { "minAmount": "1", - "weight": "1.5", + "weight": "1.0", "id": "13746", "maxAmount": "1" }, { "minAmount": "1", - "weight": "1.5", + "weight": "1.0", "id": "13748", "maxAmount": "1" }, { "minAmount": "1", - "weight": "1.5", + "weight": "1.0", "id": "13750", "maxAmount": "1" }, { "minAmount": "1", - "weight": "2.95", + "weight": "2.0", "id": "13752", "maxAmount": "1" }, @@ -63474,7 +63462,19 @@ }, { "minAmount": "1", - "weight": "60.0", + "weight": "5.0", + "id": "2366", + "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "5.0", + "id": "1250", + "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "100.0", "id": "13734", "maxAmount": "1" }, @@ -63504,7 +63504,7 @@ }, { "minAmount": "2500", - "weight": "175.0", + "weight": "100.0", "id": "7937", "maxAmount": "2500" }, @@ -63521,20 +63521,20 @@ "maxAmount": "500" }, { - "minAmount": "300", - "weight": "175.0", + "minAmount": "209", + "weight": "125.0", "id": "560", "maxAmount": "300" }, { "minAmount": "250", - "weight": "175.0", + "weight": "80.0", "id": "566", "maxAmount": "250" }, { "minAmount": "70", - "weight": "175.0", + "weight": "80.0", "id": "384", "maxAmount": "70" }, @@ -63552,31 +63552,31 @@ }, { "minAmount": "24", - "weight": "100.0", + "weight": "25.0", "id": "5321", "maxAmount": "24" }, { "minAmount": "10", - "weight": "24.0", + "weight": "100.0", "id": "5295", "maxAmount": "10" }, { "minAmount": "30", "weight": "75.0", - "id": "7060", + "id": "7061", "maxAmount": "30" }, { "minAmount": "40", "weight": "75.0", - "id": "5953", + "id": "2449", "maxAmount": "40" }, { "minAmount": "1", - "weight": "6.6", + "weight": "3.0", "id": "13754", "maxAmount": "1" }, @@ -63585,108 +63585,6 @@ "weight": "3.1496", "id": "0", "maxAmount": "13" - }, - { - "minAmount": "1", - "weight": "40.0", - "id": "11133", - "maxAmount": "1" - }, - { - "minAmount": "20", - "weight": "80.0", - "id": "226", - "maxAmount": "20" - }, - { - "minAmount": "1", - "weight": "24.0", - "id": "12070", - "maxAmount": "1" - }, - { - "minAmount": "100", - "weight": "80.0", - "id": "1754", - "maxAmount": "100" - }, - { - "minAmount": "125", - "weight": "80.0", - "id": "450", - "maxAmount": "125" - }, - { - "minAmount": "20", - "weight": "80.0", - "id": "452", - "maxAmount": "20" - }, - { - "minAmount": "35", - "weight": "80.0", - "id": "2362", - "maxAmount": "35" - }, - { - "minAmount": "100", - "weight": "80.0", - "id": "8781", - "maxAmount": "100" - }, - { - "minAmount": "150", - "weight": "80.0", - "id": "8836", - "maxAmount": "150" - }, - { - "minAmount": "75", - "weight": "80.0", - "id": "1514", - "maxAmount": "75" - }, - { - "minAmount": "1", - "weight": "20.0", - "id": "31", - "maxAmount": "1" - }, - { - "minAmount": "1", - "weight": "100.0", - "id": "4091", - "maxAmount": "1" - }, - { - "minAmount": "1", - "weight": "100.0", - "id": "4093", - "maxAmount": "1" - }, - { - "minAmount": "1", - "weight": "100.0", - "id": "1403", - "maxAmount": "1" - }, - { - "minAmount": "1", - "weight": "100.0", - "id": "1401", - "maxAmount": "1" - }, - { - "minAmount": "1", - "weight": "100.0", - "id": "1407", - "maxAmount": "1" - }, - { - "minAmount": "1", - "weight": "100.0", - "id": "1405", - "maxAmount": "1" } ] }, From 0619c577e95e700ca4154a0587194f2f993e882d Mon Sep 17 00:00:00 2001 From: skelsoft <9147770-skelsoft@users.noreply.gitlab.com> Date: Mon, 18 Oct 2021 02:52:12 +0000 Subject: [PATCH 02/10] Add: Genie Random Event --- Server/data/configs/npc_configs.json | 1259 +---------------- Server/data/configs/npc_spawns.json | 2 +- .../rs09/game/content/ame/RandomEvents.kt | 2 + .../content/ame/events/genie/GenieDialogue.kt | 21 + .../game/content/ame/events/genie/GenieNPC.kt | 36 + 5 files changed, 61 insertions(+), 1259 deletions(-) create mode 100644 Server/src/main/kotlin/rs09/game/content/ame/events/genie/GenieDialogue.kt create mode 100644 Server/src/main/kotlin/rs09/game/content/ame/events/genie/GenieNPC.kt diff --git a/Server/data/configs/npc_configs.json b/Server/data/configs/npc_configs.json index 911eb419f..dc2d65078 100644 --- a/Server/data/configs/npc_configs.json +++ b/Server/data/configs/npc_configs.json @@ -55162,7 +55162,7 @@ "attack_level": "75" }, { - "examine": "I wish I could tell where he was looking.", + "examine": "I wish I could tell where he was looking. What could be beneath that hood?", "melee_animation": "0", "range_animation": "0", "defence_animation": "0", @@ -68030,147 +68030,6 @@ "range_level": "1", "attack_level": "1" }, - { - "examine": "Champion of the giants.", - "melee_animation": "6368", - "range_animation": "0", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "8", - "slayer_exp": "35", - "magic_animation": "0", - "death_animation": "6369", - "name": "Giant Champion", - "defence_level": "28", - "safespot": null, - "lifepoints": "40", - "strength_level": "28", - "id": "3058", - "aggressive": "true", - "range_level": "1", - "attack_level": "28" - }, - { - "examine": "Champion of the goblins.", - "melee_animation": "6188", - "range_animation": "0", - "combat_audio": "469,472,471", - "magic_level": "12", - "defence_animation": "0", - "weakness": "10", - "magic_animation": "0", - "death_animation": "6190", - "name": "Goblin Champion", - "defence_level": "12", - "safespot": null, - "lifepoints": "17", - "strength_level": "6", - "id": "3060", - "range_level": "1", - "attack_level": "6" - }, - { - "examine": "Champion of the hobgoblins.", - "combat_style": "1", - "range_animation": "0", - "combat_audio": "469,472,471", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "0", - "magic_animation": "0", - "death_animation": "2958", - "name": "Hobgoblin Champion", - "defence_level": "28", - "safespot": null, - "lifepoints": "40", - "strength_level": "14", - "id": "3061", - "aggressive": "true", - "range_level": "28", - "attack_level": "14" - }, - { - "examine": "Champion of the imps.", - "melee_animation": "5285", - "range_animation": "0", - "attack_speed": "5", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "7", - "magic_animation": "0", - "death_animation": "172", - "name": "Imp Champion", - "defence_level": "7", - "safespot": null, - "lifepoints": "10", - "strength_level": "7", - "id": "3062", - "aggressive": "true", - "range_level": "7", - "attack_level": "7" - }, - { - "examine": "Champion of the jogres.", - "melee_animation": "2100", - "range_animation": "0", - "poisonous": "true", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "9", - "magic_animation": "0", - "death_animation": "8576", - "name": "Jogre Champion", - "defence_level": "54", - "safespot": null, - "lifepoints": "77", - "strength_level": "54", - "id": "3063", - "aggressive": "true", - "range_level": "1", - "attack_level": "54" - }, - { - "examine": "Champion of the lesser demons.", - "melee_animation": "64", - "range_animation": "0", - "combat_audio": "400,404,403", - "magic_level": "81", - "respawn_delay": "60", - "defence_animation": "65", - "weakness": "5", - "slayer_exp": "79", - "magic_animation": "0", - "death_animation": "67", - "name": "Lesser Demon Champion", - "defence_level": "81", - "safespot": null, - "lifepoints": "115", - "strength_level": "1", - "id": "3064", - "aggressive": "true", - "range_level": "1", - "attack_level": "1" - }, - { - "examine": "Champion of the zombies.", - "melee_animation": "5581", - "range_animation": "0", - "attack_speed": "5", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "9", - "magic_animation": "0", - "death_animation": "5575", - "name": "Zombies Champion", - "defence_level": "26", - "safespot": null, - "lifepoints": "37", - "strength_level": "26", - "id": "3066", - "aggressive": "true", - "range_level": "1", - "attack_level": "26" - }, { "melee_animation": "7049", "respawn_delay": "60", @@ -75833,22 +75692,6 @@ "range_level": "20", "attack_level": "1" }, - { - "examine": "Master of the Champions' Guild.", - "melee_animation": "0", - "range_animation": "0", - "defence_animation": "0", - "magic_animation": "0", - "death_animation": "0", - "name": "Guildmaster", - "defence_level": "1", - "safespot": null, - "lifepoints": "10", - "strength_level": "1", - "id": "198", - "range_level": "1", - "attack_level": "1" - }, { "examine": "A mighty warrior!", "melee_animation": "395", @@ -93459,22 +93302,6 @@ "range_level": "1", "attack_level": "1" }, - { - "examine": "Only the Grim Reaper would have a pet like this.", - "melee_animation": "0", - "range_animation": "0", - "defence_animation": "0", - "magic_animation": "0", - "death_animation": "0", - "name": "Muncher", - "defence_level": "1", - "safespot": null, - "lifepoints": "10", - "strength_level": "1", - "id": "2329", - "range_level": "1", - "attack_level": "1" - }, { "examine": "Perhaps this farmer might look after your crops for you.", "melee_animation": "0", @@ -98322,147 +98149,6 @@ "range_level": "1", "attack_level": "1" }, - { - "examine": "Champion of the giants.", - "melee_animation": "6368", - "range_animation": "0", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "8", - "slayer_exp": "35", - "magic_animation": "0", - "death_animation": "6369", - "name": "Giant Champion", - "defence_level": "28", - "safespot": null, - "lifepoints": "40", - "strength_level": "28", - "id": "3058", - "aggressive": "true", - "range_level": "1", - "attack_level": "28" - }, - { - "examine": "Champion of the goblins.", - "melee_animation": "6188", - "range_animation": "0", - "combat_audio": "469,472,471", - "magic_level": "12", - "defence_animation": "0", - "weakness": "10", - "magic_animation": "0", - "death_animation": "6190", - "name": "Goblin Champion", - "defence_level": "12", - "safespot": null, - "lifepoints": "17", - "strength_level": "6", - "id": "3060", - "range_level": "1", - "attack_level": "6" - }, - { - "examine": "Champion of the hobgoblins.", - "combat_style": "1", - "range_animation": "0", - "combat_audio": "469,472,471", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "0", - "magic_animation": "0", - "death_animation": "2958", - "name": "Hobgoblin Champion", - "defence_level": "28", - "safespot": null, - "lifepoints": "40", - "strength_level": "14", - "id": "3061", - "aggressive": "true", - "range_level": "28", - "attack_level": "14" - }, - { - "examine": "Champion of the imps.", - "melee_animation": "5285", - "range_animation": "0", - "attack_speed": "5", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "7", - "magic_animation": "0", - "death_animation": "172", - "name": "Imp Champion", - "defence_level": "7", - "safespot": null, - "lifepoints": "10", - "strength_level": "7", - "id": "3062", - "aggressive": "true", - "range_level": "7", - "attack_level": "7" - }, - { - "examine": "Champion of the jogres.", - "melee_animation": "2100", - "range_animation": "0", - "poisonous": "true", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "9", - "magic_animation": "0", - "death_animation": "8576", - "name": "Jogre Champion", - "defence_level": "54", - "safespot": null, - "lifepoints": "77", - "strength_level": "54", - "id": "3063", - "aggressive": "true", - "range_level": "1", - "attack_level": "54" - }, - { - "examine": "Champion of the lesser demons.", - "melee_animation": "64", - "range_animation": "0", - "combat_audio": "400,404,403", - "magic_level": "81", - "respawn_delay": "60", - "defence_animation": "65", - "weakness": "5", - "slayer_exp": "79", - "magic_animation": "0", - "death_animation": "67", - "name": "Lesser Demon Champion", - "defence_level": "81", - "safespot": null, - "lifepoints": "115", - "strength_level": "1", - "id": "3064", - "aggressive": "true", - "range_level": "1", - "attack_level": "1" - }, - { - "examine": "Champion of the zombies.", - "melee_animation": "5581", - "range_animation": "0", - "attack_speed": "5", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "9", - "magic_animation": "0", - "death_animation": "5575", - "name": "Zombies Champion", - "defence_level": "26", - "safespot": null, - "lifepoints": "37", - "strength_level": "26", - "id": "3066", - "aggressive": "true", - "range_level": "1", - "attack_level": "26" - }, { "melee_animation": "7049", "respawn_delay": "60", @@ -121837,34 +121523,6 @@ "range_level": "1", "attack_level": "1" }, - { - "examine": "Champion of Truth.", - "combat_style": "1", - "melee_animation": "7009", - "attack_speed": "5", - "respawn_delay": "50", - "weakness": "0", - "slayer_exp": "0", - "magic_animation": "7009", - "death_animation": "7011", - "lifepoints": "162", - "id": "6252", - "aggressive": "true", - "bonuses": "10,10,10,0,0,12,14,14,18,5,0,7,0,0,0", - "prj_height": "50", - "agg_radius": "64", - "range_animation": "7009", - "magic_level": "80", - "end_gfx": "24", - "defence_animation": "7010", - "name": "Bree", - "defence_level": "130", - "safespot": null, - "strength_level": "80", - "range_level": "150", - "projectile": "1188", - "attack_level": "110" - }, { "name": "", "defence_level": "1", @@ -123680,22 +123338,6 @@ "range_level": "1", "attack_level": "75" }, - { - "examine": "I wish I could tell where he was looking.", - "melee_animation": "0", - "range_animation": "0", - "defence_animation": "0", - "magic_animation": "0", - "death_animation": "0", - "name": "Grim Reaper", - "defence_level": "1", - "safespot": null, - "lifepoints": "10", - "strength_level": "1", - "id": "6390", - "range_level": "1", - "attack_level": "1" - }, { "name": "Goblin", "defence_level": "1", @@ -133619,147 +133261,6 @@ "range_level": "1", "attack_level": "1" }, - { - "examine": "Champion of the giants.", - "melee_animation": "6368", - "range_animation": "0", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "8", - "slayer_exp": "35", - "magic_animation": "0", - "death_animation": "6369", - "name": "Giant Champion", - "defence_level": "28", - "safespot": null, - "lifepoints": "40", - "strength_level": "28", - "id": "3058", - "aggressive": "true", - "range_level": "1", - "attack_level": "28" - }, - { - "examine": "Champion of the goblins.", - "melee_animation": "6188", - "range_animation": "0", - "combat_audio": "469,472,471", - "magic_level": "12", - "defence_animation": "0", - "weakness": "10", - "magic_animation": "0", - "death_animation": "6190", - "name": "Goblin Champion", - "defence_level": "12", - "safespot": null, - "lifepoints": "17", - "strength_level": "6", - "id": "3060", - "range_level": "1", - "attack_level": "6" - }, - { - "examine": "Champion of the hobgoblins.", - "combat_style": "1", - "range_animation": "0", - "combat_audio": "469,472,471", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "0", - "magic_animation": "0", - "death_animation": "2958", - "name": "Hobgoblin Champion", - "defence_level": "28", - "safespot": null, - "lifepoints": "40", - "strength_level": "14", - "id": "3061", - "aggressive": "true", - "range_level": "28", - "attack_level": "14" - }, - { - "examine": "Champion of the imps.", - "melee_animation": "5285", - "range_animation": "0", - "attack_speed": "5", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "7", - "magic_animation": "0", - "death_animation": "172", - "name": "Imp Champion", - "defence_level": "7", - "safespot": null, - "lifepoints": "10", - "strength_level": "7", - "id": "3062", - "aggressive": "true", - "range_level": "7", - "attack_level": "7" - }, - { - "examine": "Champion of the jogres.", - "melee_animation": "2100", - "range_animation": "0", - "poisonous": "true", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "9", - "magic_animation": "0", - "death_animation": "8576", - "name": "Jogre Champion", - "defence_level": "54", - "safespot": null, - "lifepoints": "77", - "strength_level": "54", - "id": "3063", - "aggressive": "true", - "range_level": "1", - "attack_level": "54" - }, - { - "examine": "Champion of the lesser demons.", - "melee_animation": "64", - "range_animation": "0", - "combat_audio": "400,404,403", - "magic_level": "81", - "respawn_delay": "60", - "defence_animation": "65", - "weakness": "5", - "slayer_exp": "79", - "magic_animation": "0", - "death_animation": "67", - "name": "Lesser Demon Champion", - "defence_level": "81", - "safespot": null, - "lifepoints": "115", - "strength_level": "1", - "id": "3064", - "aggressive": "true", - "range_level": "1", - "attack_level": "1" - }, - { - "examine": "Champion of the zombies.", - "melee_animation": "5581", - "range_animation": "0", - "attack_speed": "5", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "9", - "magic_animation": "0", - "death_animation": "5575", - "name": "Zombies Champion", - "defence_level": "26", - "safespot": null, - "lifepoints": "37", - "strength_level": "26", - "id": "3066", - "aggressive": "true", - "range_level": "1", - "attack_level": "26" - }, { "melee_animation": "7049", "respawn_delay": "60", @@ -140919,22 +140420,6 @@ "range_level": "20", "attack_level": "1" }, - { - "examine": "Master of the Champions' Guild.", - "melee_animation": "0", - "range_animation": "0", - "defence_animation": "0", - "magic_animation": "0", - "death_animation": "0", - "name": "Guildmaster", - "defence_level": "1", - "safespot": null, - "lifepoints": "10", - "strength_level": "1", - "id": "198", - "range_level": "1", - "attack_level": "1" - }, { "examine": "A mighty warrior!", "melee_animation": "395", @@ -158636,22 +158121,6 @@ "range_level": "1", "attack_level": "1" }, - { - "examine": "Only the Grim Reaper would have a pet like this.", - "melee_animation": "0", - "range_animation": "0", - "defence_animation": "0", - "magic_animation": "0", - "death_animation": "0", - "name": "Muncher", - "defence_level": "1", - "safespot": null, - "lifepoints": "10", - "strength_level": "1", - "id": "2329", - "range_level": "1", - "attack_level": "1" - }, { "examine": "Perhaps this farmer might look after your crops for you.", "melee_animation": "0", @@ -163521,168 +162990,6 @@ "range_level": "1", "attack_level": "1" }, - { - "examine": "Champion of the giants.", - "melee_animation": "6368", - "range_animation": "0", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "8", - "slayer_exp": "35", - "magic_animation": "0", - "death_animation": "6369", - "name": "Giant Champion", - "defence_level": "28", - "safespot": null, - "lifepoints": "40", - "strength_level": "28", - "id": "3058", - "aggressive": "true", - "range_level": "1", - "attack_level": "28" - }, - { - "examine": "Champion of the goblins.", - "melee_animation": "6188", - "range_animation": "0", - "combat_audio": "469,472,471", - "magic_level": "12", - "defence_animation": "0", - "weakness": "10", - "magic_animation": "0", - "death_animation": "6190", - "name": "Goblin Champion", - "defence_level": "12", - "safespot": null, - "lifepoints": "17", - "strength_level": "6", - "id": "3060", - "range_level": "1", - "attack_level": "6" - }, - { - "examine": "Champion of the hobgoblins.", - "combat_style": "1", - "range_animation": "0", - "combat_audio": "469,472,471", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "0", - "magic_animation": "0", - "death_animation": "2958", - "name": "Hobgoblin Champion", - "defence_level": "28", - "safespot": null, - "lifepoints": "40", - "strength_level": "14", - "id": "3061", - "aggressive": "true", - "range_level": "28", - "attack_level": "14" - }, - { - "examine": "Champion of the imps.", - "melee_animation": "5285", - "range_animation": "0", - "attack_speed": "5", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "7", - "magic_animation": "0", - "death_animation": "172", - "name": "Imp Champion", - "defence_level": "7", - "safespot": null, - "lifepoints": "10", - "strength_level": "7", - "id": "3062", - "aggressive": "true", - "range_level": "7", - "attack_level": "7" - }, - { - "examine": "Champion of the jogres.", - "melee_animation": "2100", - "range_animation": "0", - "poisonous": "true", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "9", - "magic_animation": "0", - "death_animation": "8576", - "name": "Jogre Champion", - "defence_level": "54", - "safespot": null, - "lifepoints": "77", - "strength_level": "54", - "id": "3063", - "aggressive": "true", - "range_level": "1", - "attack_level": "54" - }, - { - "examine": "Champion of the lesser demons.", - "melee_animation": "64", - "range_animation": "0", - "combat_audio": "400,404,403", - "magic_level": "81", - "respawn_delay": "60", - "defence_animation": "65", - "weakness": "5", - "slayer_exp": "79", - "magic_animation": "0", - "death_animation": "67", - "name": "Lesser Demon Champion", - "defence_level": "81", - "safespot": null, - "lifepoints": "115", - "strength_level": "1", - "id": "3064", - "aggressive": "true", - "range_level": "1", - "attack_level": "1" - }, - { - "examine": "Champion of the skeletons.", - "combat_style": "1", - "melee_animation": "5512", - "range_animation": "0", - "combat_audio": "774,775,777", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "2", - "magic_animation": "0", - "death_animation": "5514", - "name": "Skeleton Champion", - "defence_level": "20", - "safespot": null, - "lifepoints": "28", - "strength_level": "10", - "id": "3065", - "aggressive": "true", - "range_level": "20", - "attack_level": "10" - }, - { - "examine": "Champion of the zombies.", - "melee_animation": "5581", - "range_animation": "0", - "attack_speed": "5", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "9", - "magic_animation": "0", - "death_animation": "5575", - "name": "Zombies Champion", - "defence_level": "26", - "safespot": null, - "lifepoints": "37", - "strength_level": "26", - "id": "3066", - "aggressive": "true", - "range_level": "1", - "attack_level": "26" - }, { "melee_animation": "7049", "respawn_delay": "60", @@ -187832,34 +187139,6 @@ "range_level": "1", "attack_level": "1" }, - { - "examine": "Champion of Truth.", - "combat_style": "1", - "melee_animation": "7009", - "attack_speed": "5", - "respawn_delay": "50", - "weakness": "0", - "slayer_exp": "0", - "magic_animation": "7009", - "death_animation": "7011", - "lifepoints": "162", - "id": "6252", - "aggressive": "true", - "bonuses": "10,10,10,0,0,12,14,14,18,5,0,7,0,0,0", - "prj_height": "50", - "agg_radius": "64", - "range_animation": "7009", - "magic_level": "80", - "end_gfx": "24", - "defence_animation": "7010", - "name": "Bree", - "defence_level": "130", - "safespot": null, - "strength_level": "80", - "range_level": "150", - "projectile": "1188", - "attack_level": "110" - }, { "name": "", "defence_level": "1", @@ -189675,22 +188954,6 @@ "range_level": "1", "attack_level": "75" }, - { - "examine": "I wish I could tell where he was looking.", - "melee_animation": "0", - "range_animation": "0", - "defence_animation": "0", - "magic_animation": "0", - "death_animation": "0", - "name": "Grim Reaper", - "defence_level": "1", - "safespot": null, - "lifepoints": "10", - "strength_level": "1", - "id": "6390", - "range_level": "1", - "attack_level": "1" - }, { "name": "Goblin", "defence_level": "1", @@ -199716,168 +198979,6 @@ "range_level": "1", "attack_level": "1" }, - { - "examine": "Champion of the giants.", - "melee_animation": "6368", - "range_animation": "0", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "8", - "slayer_exp": "35", - "magic_animation": "0", - "death_animation": "6369", - "name": "Giant Champion", - "defence_level": "28", - "safespot": null, - "lifepoints": "40", - "strength_level": "28", - "id": "3058", - "aggressive": "true", - "range_level": "1", - "attack_level": "28" - }, - { - "examine": "Champion of the goblins.", - "melee_animation": "6188", - "range_animation": "0", - "combat_audio": "469,472,471", - "magic_level": "12", - "defence_animation": "0", - "weakness": "10", - "magic_animation": "0", - "death_animation": "6190", - "name": "Goblin Champion", - "defence_level": "12", - "safespot": null, - "lifepoints": "17", - "strength_level": "6", - "id": "3060", - "range_level": "1", - "attack_level": "6" - }, - { - "examine": "Champion of the hobgoblins.", - "combat_style": "1", - "range_animation": "0", - "combat_audio": "469,472,471", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "0", - "magic_animation": "0", - "death_animation": "2958", - "name": "Hobgoblin Champion", - "defence_level": "28", - "safespot": null, - "lifepoints": "40", - "strength_level": "14", - "id": "3061", - "aggressive": "true", - "range_level": "28", - "attack_level": "14" - }, - { - "examine": "Champion of the imps.", - "melee_animation": "5285", - "range_animation": "0", - "attack_speed": "5", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "7", - "magic_animation": "0", - "death_animation": "172", - "name": "Imp Champion", - "defence_level": "7", - "safespot": null, - "lifepoints": "10", - "strength_level": "7", - "id": "3062", - "aggressive": "true", - "range_level": "7", - "attack_level": "7" - }, - { - "examine": "Champion of the jogres.", - "melee_animation": "2100", - "range_animation": "0", - "poisonous": "true", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "9", - "magic_animation": "0", - "death_animation": "8576", - "name": "Jogre Champion", - "defence_level": "54", - "safespot": null, - "lifepoints": "77", - "strength_level": "54", - "id": "3063", - "aggressive": "true", - "range_level": "1", - "attack_level": "54" - }, - { - "examine": "Champion of the lesser demons.", - "melee_animation": "64", - "range_animation": "0", - "combat_audio": "400,404,403", - "magic_level": "81", - "respawn_delay": "60", - "defence_animation": "65", - "weakness": "5", - "slayer_exp": "79", - "magic_animation": "0", - "death_animation": "67", - "name": "Lesser Demon Champion", - "defence_level": "81", - "safespot": null, - "lifepoints": "115", - "strength_level": "1", - "id": "3064", - "aggressive": "true", - "range_level": "1", - "attack_level": "1" - }, - { - "examine": "Champion of the skeletons.", - "combat_style": "1", - "melee_animation": "5512", - "range_animation": "0", - "combat_audio": "774,775,777", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "2", - "magic_animation": "0", - "death_animation": "5514", - "name": "Skeleton Champion", - "defence_level": "20", - "safespot": null, - "lifepoints": "28", - "strength_level": "10", - "id": "3065", - "aggressive": "true", - "range_level": "20", - "attack_level": "10" - }, - { - "examine": "Champion of the zombies.", - "melee_animation": "5581", - "range_animation": "0", - "attack_speed": "5", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "9", - "magic_animation": "0", - "death_animation": "5575", - "name": "Zombies Champion", - "defence_level": "26", - "safespot": null, - "lifepoints": "37", - "strength_level": "26", - "id": "3066", - "aggressive": "true", - "range_level": "1", - "attack_level": "26" - }, { "melee_animation": "7049", "respawn_delay": "60", @@ -206920,22 +206021,6 @@ "range_level": "20", "attack_level": "1" }, - { - "examine": "Master of the Champions' Guild.", - "melee_animation": "0", - "range_animation": "0", - "defence_animation": "0", - "magic_animation": "0", - "death_animation": "0", - "name": "Guildmaster", - "defence_level": "1", - "safespot": null, - "lifepoints": "10", - "strength_level": "1", - "id": "198", - "range_level": "1", - "attack_level": "1" - }, { "examine": "A mighty warrior!", "melee_animation": "395", @@ -224546,22 +223631,6 @@ "range_level": "1", "attack_level": "1" }, - { - "examine": "Only the Grim Reaper would have a pet like this.", - "melee_animation": "0", - "range_animation": "0", - "defence_animation": "0", - "magic_animation": "0", - "death_animation": "0", - "name": "Muncher", - "defence_level": "1", - "safespot": null, - "lifepoints": "10", - "strength_level": "1", - "id": "2329", - "range_level": "1", - "attack_level": "1" - }, { "examine": "Perhaps this farmer might look after your crops for you.", "melee_animation": "0", @@ -229409,147 +228478,6 @@ "range_level": "1", "attack_level": "1" }, - { - "examine": "Champion of the giants.", - "melee_animation": "6368", - "range_animation": "0", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "8", - "slayer_exp": "35", - "magic_animation": "0", - "death_animation": "6369", - "name": "Giant Champion", - "defence_level": "28", - "safespot": null, - "lifepoints": "40", - "strength_level": "28", - "id": "3058", - "aggressive": "true", - "range_level": "1", - "attack_level": "28" - }, - { - "examine": "Champion of the goblins.", - "melee_animation": "6188", - "range_animation": "0", - "combat_audio": "469,472,471", - "magic_level": "12", - "defence_animation": "0", - "weakness": "10", - "magic_animation": "0", - "death_animation": "6190", - "name": "Goblin Champion", - "defence_level": "12", - "safespot": null, - "lifepoints": "17", - "strength_level": "6", - "id": "3060", - "range_level": "1", - "attack_level": "6" - }, - { - "examine": "Champion of the hobgoblins.", - "combat_style": "1", - "range_animation": "0", - "combat_audio": "469,472,471", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "0", - "magic_animation": "0", - "death_animation": "2958", - "name": "Hobgoblin Champion", - "defence_level": "28", - "safespot": null, - "lifepoints": "40", - "strength_level": "14", - "id": "3061", - "aggressive": "true", - "range_level": "28", - "attack_level": "14" - }, - { - "examine": "Champion of the imps.", - "melee_animation": "5285", - "range_animation": "0", - "attack_speed": "5", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "7", - "magic_animation": "0", - "death_animation": "172", - "name": "Imp Champion", - "defence_level": "7", - "safespot": null, - "lifepoints": "10", - "strength_level": "7", - "id": "3062", - "aggressive": "true", - "range_level": "7", - "attack_level": "7" - }, - { - "examine": "Champion of the jogres.", - "melee_animation": "2100", - "range_animation": "0", - "poisonous": "true", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "9", - "magic_animation": "0", - "death_animation": "8576", - "name": "Jogre Champion", - "defence_level": "54", - "safespot": null, - "lifepoints": "77", - "strength_level": "54", - "id": "3063", - "aggressive": "true", - "range_level": "1", - "attack_level": "54" - }, - { - "examine": "Champion of the lesser demons.", - "melee_animation": "64", - "range_animation": "0", - "combat_audio": "400,404,403", - "magic_level": "81", - "respawn_delay": "60", - "defence_animation": "65", - "weakness": "5", - "slayer_exp": "79", - "magic_animation": "0", - "death_animation": "67", - "name": "Lesser Demon Champion", - "defence_level": "81", - "safespot": null, - "lifepoints": "115", - "strength_level": "1", - "id": "3064", - "aggressive": "true", - "range_level": "1", - "attack_level": "1" - }, - { - "examine": "Champion of the zombies.", - "melee_animation": "5581", - "range_animation": "0", - "attack_speed": "5", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "9", - "magic_animation": "0", - "death_animation": "5575", - "name": "Zombies Champion", - "defence_level": "26", - "safespot": null, - "lifepoints": "37", - "strength_level": "26", - "id": "3066", - "aggressive": "true", - "range_level": "1", - "attack_level": "26" - }, { "melee_animation": "7049", "respawn_delay": "60", @@ -252924,34 +251852,6 @@ "range_level": "1", "attack_level": "1" }, - { - "examine": "Champion of Truth.", - "combat_style": "1", - "melee_animation": "7009", - "attack_speed": "5", - "respawn_delay": "50", - "weakness": "0", - "slayer_exp": "0", - "magic_animation": "7009", - "death_animation": "7011", - "lifepoints": "162", - "id": "6252", - "aggressive": "true", - "bonuses": "10,10,10,0,0,12,14,14,18,5,0,7,0,0,0", - "prj_height": "50", - "agg_radius": "64", - "range_animation": "7009", - "magic_level": "80", - "end_gfx": "24", - "defence_animation": "7010", - "name": "Bree", - "defence_level": "130", - "safespot": null, - "strength_level": "80", - "range_level": "150", - "projectile": "1188", - "attack_level": "110" - }, { "name": "", "defence_level": "1", @@ -254767,22 +253667,6 @@ "range_level": "1", "attack_level": "75" }, - { - "examine": "I wish I could tell where he was looking.", - "melee_animation": "0", - "range_animation": "0", - "defence_animation": "0", - "magic_animation": "0", - "death_animation": "0", - "name": "Grim Reaper", - "defence_level": "1", - "safespot": null, - "lifepoints": "10", - "strength_level": "1", - "id": "6390", - "range_level": "1", - "attack_level": "1" - }, { "name": "Goblin", "defence_level": "1", @@ -264706,147 +263590,6 @@ "range_level": "1", "attack_level": "1" }, - { - "examine": "Champion of the giants.", - "melee_animation": "6368", - "range_animation": "0", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "8", - "slayer_exp": "35", - "magic_animation": "0", - "death_animation": "6369", - "name": "Giant Champion", - "defence_level": "28", - "safespot": null, - "lifepoints": "40", - "strength_level": "28", - "id": "3058", - "aggressive": "true", - "range_level": "1", - "attack_level": "28" - }, - { - "examine": "Champion of the goblins.", - "melee_animation": "6188", - "range_animation": "0", - "combat_audio": "469,472,471", - "magic_level": "12", - "defence_animation": "0", - "weakness": "10", - "magic_animation": "0", - "death_animation": "6190", - "name": "Goblin Champion", - "defence_level": "12", - "safespot": null, - "lifepoints": "17", - "strength_level": "6", - "id": "3060", - "range_level": "1", - "attack_level": "6" - }, - { - "examine": "Champion of the hobgoblins.", - "combat_style": "1", - "range_animation": "0", - "combat_audio": "469,472,471", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "0", - "magic_animation": "0", - "death_animation": "2958", - "name": "Hobgoblin Champion", - "defence_level": "28", - "safespot": null, - "lifepoints": "40", - "strength_level": "14", - "id": "3061", - "aggressive": "true", - "range_level": "28", - "attack_level": "14" - }, - { - "examine": "Champion of the imps.", - "melee_animation": "5285", - "range_animation": "0", - "attack_speed": "5", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "7", - "magic_animation": "0", - "death_animation": "172", - "name": "Imp Champion", - "defence_level": "7", - "safespot": null, - "lifepoints": "10", - "strength_level": "7", - "id": "3062", - "aggressive": "true", - "range_level": "7", - "attack_level": "7" - }, - { - "examine": "Champion of the jogres.", - "melee_animation": "2100", - "range_animation": "0", - "poisonous": "true", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "9", - "magic_animation": "0", - "death_animation": "8576", - "name": "Jogre Champion", - "defence_level": "54", - "safespot": null, - "lifepoints": "77", - "strength_level": "54", - "id": "3063", - "aggressive": "true", - "range_level": "1", - "attack_level": "54" - }, - { - "examine": "Champion of the lesser demons.", - "melee_animation": "64", - "range_animation": "0", - "combat_audio": "400,404,403", - "magic_level": "81", - "respawn_delay": "60", - "defence_animation": "65", - "weakness": "5", - "slayer_exp": "79", - "magic_animation": "0", - "death_animation": "67", - "name": "Lesser Demon Champion", - "defence_level": "81", - "safespot": null, - "lifepoints": "115", - "strength_level": "1", - "id": "3064", - "aggressive": "true", - "range_level": "1", - "attack_level": "1" - }, - { - "examine": "Champion of the zombies.", - "melee_animation": "5581", - "range_animation": "0", - "attack_speed": "5", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "9", - "magic_animation": "0", - "death_animation": "5575", - "name": "Zombies Champion", - "defence_level": "26", - "safespot": null, - "lifepoints": "37", - "strength_level": "26", - "id": "3066", - "aggressive": "true", - "range_level": "1", - "attack_level": "26" - }, { "melee_animation": "7049", "respawn_delay": "60", diff --git a/Server/data/configs/npc_spawns.json b/Server/data/configs/npc_spawns.json index 3e5382a83..c3db5b9d7 100644 --- a/Server/data/configs/npc_spawns.json +++ b/Server/data/configs/npc_spawns.json @@ -4433,7 +4433,7 @@ }, { "npc_id": "2329", - "loc_data": "{1702,4823,0,0,6}" + "loc_data": "{3093,3260,0,1,6}-{1702.4822,0,0,0]" }, { "npc_id": "2330", diff --git a/Server/src/main/kotlin/rs09/game/content/ame/RandomEvents.kt b/Server/src/main/kotlin/rs09/game/content/ame/RandomEvents.kt index 3913ca055..4fc187e56 100644 --- a/Server/src/main/kotlin/rs09/game/content/ame/RandomEvents.kt +++ b/Server/src/main/kotlin/rs09/game/content/ame/RandomEvents.kt @@ -6,11 +6,13 @@ import rs09.game.content.ame.events.certer.CerterNPC import rs09.game.content.ame.events.drilldemon.SeargentDamienNPC import rs09.game.content.ame.events.evilchicken.EvilChickenNPC import rs09.game.content.ame.events.sandwichlady.SandwichLadyRENPC +import rs09.game.content.ame.events.genie.GenieNPC import rs09.game.content.global.WeightBasedTable import rs09.game.content.global.WeightedItem enum class RandomEvents(val npc: RandomEventNPC, val loot: WeightBasedTable? = null) { SANDWICH_LADY(SandwichLadyRENPC()), + GENIE(GenieNPC()), CERTER(CerterNPC(),WeightBasedTable.create( WeightedItem(Items.COINS_995,1,100,2.0), WeightedItem(Items.SPINACH_ROLL_1969,1,1,2.0), diff --git a/Server/src/main/kotlin/rs09/game/content/ame/events/genie/GenieDialogue.kt b/Server/src/main/kotlin/rs09/game/content/ame/events/genie/GenieDialogue.kt new file mode 100644 index 000000000..891502027 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/ame/events/genie/GenieDialogue.kt @@ -0,0 +1,21 @@ +package rs09.game.content.ame.events.genie + +import api.ContentAPI +import core.game.content.dialogue.FacialExpression +import core.cache.def.impl.ItemDefinition +import core.game.component.Component +import core.game.node.entity.combat.ImpactHandler +import core.game.node.item.GroundItemManager +import core.game.node.item.Item +import rs09.game.content.dialogue.DialogueFile +import rs09.tools.END_DIALOGUE + +class GenieDialogue : DialogueFile() { + override fun handle(componentID: Int, buttonID: Int) { + val assigned = player!!.getAttribute("genie:item",0) + npcl(FacialExpression.NEUTRAL, "Ah, so you are there, ${player!!.name.capitalize()}. I'm so glad you summoned me. Please take this lamp and make your wish.") + ContentAPI.addItemOrDrop(player!!, assigned) + player!!.antiMacroHandler.event?.terminate() + stage = END_DIALOGUE + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/ame/events/genie/GenieNPC.kt b/Server/src/main/kotlin/rs09/game/content/ame/events/genie/GenieNPC.kt new file mode 100644 index 000000000..c111da800 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/ame/events/genie/GenieNPC.kt @@ -0,0 +1,36 @@ +package rs09.game.content.ame.events.genie + +import core.game.node.entity.npc.NPC +import core.tools.RandomFunction +import org.rs09.consts.Items +import org.rs09.consts.NPCs +import rs09.game.content.ame.RandomEventNPC +import rs09.game.content.global.WeightBasedTable + +class GenieNPC(override var loot: WeightBasedTable? = null) : RandomEventNPC(NPCs.GENIE_409) { + val phrases = arrayOf("Greetings, @name!","Ehem... Master @name?","Are you there, Master @name?","No one ignores me!") + var assigned_item = 0 + val items = arrayOf(Items.LAMP_2528) + + override fun tick() { + if(RandomFunction.random(1,15) == 5){ + sendChat(phrases.random().replace("@name",player.name.capitalize())) + } + super.tick() + } + + override fun init() { + super.init() + assignItem() + sendChat(phrases.random().replace("@name",player.name.capitalize())) + } + + fun assignItem(){ + assigned_item = items.random() + player.setAttribute("genie:item",assigned_item) + } + + override fun talkTo(npc: NPC) { + player.dialogueInterpreter.open(GenieDialogue(),npc) + } +} \ No newline at end of file From ee17d4592e1cf6f2a52dd1f91ed1a9576906b47a Mon Sep 17 00:00:00 2001 From: Avi Weinstock Date: Mon, 18 Oct 2021 13:48:27 -0400 Subject: [PATCH 03/10] Fix varrock newspaper interface indicies, and fix a syntax error in `npc_spawns.json`. --- Server/data/configs/npc_spawns.json | 2 +- .../main/java/core/game/interaction/item/NewsPaperPlugin.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Server/data/configs/npc_spawns.json b/Server/data/configs/npc_spawns.json index c3db5b9d7..4e471a235 100644 --- a/Server/data/configs/npc_spawns.json +++ b/Server/data/configs/npc_spawns.json @@ -4433,7 +4433,7 @@ }, { "npc_id": "2329", - "loc_data": "{3093,3260,0,1,6}-{1702.4822,0,0,0]" + "loc_data": "{3093,3260,0,1,6}-{1702,4822,0,0,0}" }, { "npc_id": "2330", diff --git a/Server/src/main/java/core/game/interaction/item/NewsPaperPlugin.java b/Server/src/main/java/core/game/interaction/item/NewsPaperPlugin.java index 164b4c92c..1f4538d1d 100644 --- a/Server/src/main/java/core/game/interaction/item/NewsPaperPlugin.java +++ b/Server/src/main/java/core/game/interaction/item/NewsPaperPlugin.java @@ -23,8 +23,8 @@ public class NewsPaperPlugin extends OptionHandler { player.getInterfaceManager().open(new Component(530)); final String page1 = "Varrock gets Makeover! The city of Varrock is the latest recipient of a complete makeover. When interviewed, King Roald said, 'In order to keep visitors coming to see the sights of our beautiful capital, we felt that tidying-up the city would be more effective than just issuing a decree - make sure you visit the new museum while you are here.'"; final String page2 = "Obituaries Goblin-Died Giant Rat-Died Unicorn-Died Varrock Guard-Died Varrock Guard-Died Bear-Died. Classifieds."; - player.getPacketDispatch().sendString(page1, 530, 2); - player.getPacketDispatch().sendString(page2, 530, 4); + player.getPacketDispatch().sendString(page1, 530, 7); + player.getPacketDispatch().sendString(page2, 530, 8); return true; } else player.getDialogueInterpreter().open(70099, "Come to the Al Kharid Market place! Highquality", "produce at low, low prices! Show this flyer to a", "merchant for money off your next purchase,", "courtesy of Ali Morrisane!"); From b9328d40f4a4d8759b0db4aa261566258b956a98 Mon Sep 17 00:00:00 2001 From: Avi Weinstock Date: Mon, 18 Oct 2021 22:00:06 -0400 Subject: [PATCH 04/10] Make use of the next/previous arrows in the interface used for `::stats`, tracking all npc kills and tracking drops of items tagged with `"rare_item": "true"`, and displaying a curated subset of them. --- Server/data/configs/item_configs.json | 29 ++- .../java/core/game/node/entity/npc/NPC.java | 2 + .../node/entity/npc/drop/NPCDropTables.java | 8 +- .../skill/runecrafting/RuneCraftPulse.java | 10 +- .../core/game/system/SystemTermination.java | 4 +- Server/src/main/kotlin/api/ContentAPI.kt | 10 + Server/src/main/kotlin/rs09/Server.kt | 2 + .../content/activity/barrows/RewardChest.kt | 4 +- .../game/content/global/GlobalKillCounter.kt | 107 +++++++++ .../player/info/stats/StatAttributeKeys.kt | 1 + .../player/info/stats/StatsCommandSet.kt | 227 ++++++++++++++---- 11 files changed, 344 insertions(+), 60 deletions(-) create mode 100644 Server/src/main/kotlin/rs09/game/content/global/GlobalKillCounter.kt diff --git a/Server/data/configs/item_configs.json b/Server/data/configs/item_configs.json index e151475ee..475e6f2c9 100644 --- a/Server/data/configs/item_configs.json +++ b/Server/data/configs/item_configs.json @@ -40578,6 +40578,7 @@ "grand_exchange_price": "29900", "stand_anim": "1662", "tradeable": "true", + "rare_item": "true", "run_anim": "1664", "archery_ticket_price": "0", "id": "4153", @@ -45819,6 +45820,7 @@ "grand_exchange_price": "94300", "name": "Ahrim's hood", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4708", "bonuses": "0,0,0,6,-2,15,13,16,6,0,15,0,0,0,0" @@ -45849,6 +45851,7 @@ "grand_exchange_price": "69500", "stand_anim": "813", "tradeable": "true", + "rare_item": "true", "run_anim": "1210", "archery_ticket_price": "0", "id": "4710", @@ -45887,6 +45890,7 @@ "grand_exchange_price": "1000000", "name": "Ahrim's robetop", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4712", "bonuses": "0,0,0,30,-10,52,37,63,30,0,60,0,0,0,0" @@ -45914,6 +45918,7 @@ "grand_exchange_price": "1700000", "name": "Ahrim's robeskirt", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4714", "bonuses": "0,0,0,22,-7,33,30,36,22,0,30,0,0,0,0" @@ -45942,6 +45947,7 @@ "grand_exchange_price": "1300000", "name": "Dharok's helm", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4716", "bonuses": "0,0,0,-3,-1,45,48,44,-1,51,15,0,0,0,0" @@ -45972,6 +45978,7 @@ "grand_exchange_price": "516900", "stand_anim": "2065", "tradeable": "true", + "rare_item": "true", "run_anim": "824", "archery_ticket_price": "0", "id": "4718", @@ -46009,6 +46016,7 @@ "grand_exchange_price": "511400", "name": "Dharok's platebody", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4720", "bonuses": "0,0,0,-30,-10,122,120,107,-6,132,60,0,0,0,0" @@ -46036,6 +46044,7 @@ "grand_exchange_price": "748800", "name": "Dharok's platelegs", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4722", "bonuses": "0,0,0,-21,-7,85,82,83,-4,92,30,0,0,0,0" @@ -46065,6 +46074,7 @@ "grand_exchange_price": "396300", "name": "Guthan's helm", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4724", "bonuses": "0,0,0,-6,-2,55,58,54,-1,62,15,0,0,0,0" @@ -46095,6 +46105,7 @@ "grand_exchange_price": "588400", "stand_anim": "813", "tradeable": "true", + "rare_item": "true", "run_anim": "1210", "archery_ticket_price": "0", "id": "4726", @@ -46132,6 +46143,7 @@ "grand_exchange_price": "316800", "name": "Guthan's platebody", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4728", "bonuses": "0,0,0,-30,-10,122,120,107,-6,132,60,0,0,0,0" @@ -46159,6 +46171,7 @@ "grand_exchange_price": "315600", "name": "Guthan's chainskirt", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4730", "bonuses": "0,0,0,-14,-7,75,72,73,-4,82,30,0,0,0,0" @@ -46187,6 +46200,7 @@ "grand_exchange_price": "38900", "name": "Karil's coif", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4732", "bonuses": "0,0,0,-1,3,6,9,12,6,10,15,0,0,0,0" @@ -46217,6 +46231,7 @@ "grand_exchange_price": "188000", "stand_anim": "2074", "tradeable": "true", + "rare_item": "true", "run_anim": "2077", "archery_ticket_price": "0", "id": "4734", @@ -46255,6 +46270,7 @@ "grand_exchange_price": "1800000", "name": "Karil's leathertop", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4736", "bonuses": "0,0,0,-15,30,47,42,50,65,57,60,0,0,0,0" @@ -46282,6 +46298,7 @@ "grand_exchange_price": "217000", "name": "Karil's leatherskirt", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4738", "bonuses": "0,0,0,-10,17,26,20,28,35,33,30,0,0,0,0" @@ -46327,6 +46344,7 @@ "grand_exchange_price": "139000", "name": "Torag's helm", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4745", "bonuses": "0,0,0,-6,-2,55,58,54,-1,62,15,0,0,0,0" @@ -46359,6 +46377,7 @@ "attack_audios": "1332,0,0,0", "name": "Torag's hammers", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4747", "bonuses": "-4,-4,85,-4,0,0,0,0,0,0,0,72,0,0,0" @@ -46387,6 +46406,7 @@ "grand_exchange_price": "346200", "name": "Torag's platebody", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4749", "bonuses": "0,0,0,-30,-10,122,120,107,-6,132,60,0,0,0,0" @@ -46414,6 +46434,7 @@ "grand_exchange_price": "427200", "name": "Torag's platelegs", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4751", "bonuses": "0,0,0,-21,-7,85,82,83,-4,92,30,0,0,0,0" @@ -46443,6 +46464,7 @@ "grand_exchange_price": "687200", "name": "Verac's helm", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4753", "bonuses": "0,0,0,-6,-2,55,58,54,0,56,15,0,3,0,0" @@ -46473,6 +46495,7 @@ "grand_exchange_price": "135500", "stand_anim": "1832", "tradeable": "true", + "rare_item": "true", "run_anim": "1831", "archery_ticket_price": "0", "id": "4755", @@ -46511,6 +46534,7 @@ "grand_exchange_price": "270000", "name": "Verac's brassard", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4757", "bonuses": "0,0,0,-6,-2,81,95,85,0,81,60,0,5,0,0" @@ -46538,6 +46562,7 @@ "grand_exchange_price": "411400", "name": "Verac's plateskirt", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "4759", "bonuses": "0,0,0,-21,-7,85,82,83,0,84,30,0,4,0,0" @@ -106101,6 +106126,7 @@ "grand_exchange_price": "95400", "name": "Dragon boots", "tradeable": "true", + "rare_item": "true", "archery_ticket_price": "0", "id": "11732", "bonuses": "0,0,0,-3,-1,16,17,18,0,0,15,4,0,0,0" @@ -121161,6 +121187,7 @@ "grand_exchange_price": "43082", "stand_anim": "813", "tradeable": "true", + "rare_item": "true", "run_anim": "824", "archery_ticket_price": "0", "id": "13290", @@ -139539,4 +139566,4 @@ "attack_audios": "2555,0,0,0", "name": "Staff of the raven" } -] \ No newline at end of file +] diff --git a/Server/src/main/java/core/game/node/entity/npc/NPC.java b/Server/src/main/java/core/game/node/entity/npc/NPC.java index 5799b15b4..3bd79964b 100644 --- a/Server/src/main/java/core/game/node/entity/npc/NPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/NPC.java @@ -31,6 +31,7 @@ import core.game.world.update.flag.npc.NPCFaceLocation; import core.game.world.update.flag.npc.NPCForceChat; import core.game.world.update.flag.npc.NPCSwitchId; import core.tools.RandomFunction; +import rs09.game.content.global.GlobalKillCounter; import rs09.game.content.jobs.JobManager; import rs09.game.node.entity.combat.CombatSwingHandler; import rs09.game.system.config.NPCConfigParser; @@ -534,6 +535,7 @@ public class NPC extends Entity { Player p = !(killer instanceof Player) ? null : (Player) killer; if (p != null) { p.incrementAttribute("/save:" + STATS_BASE + ":" + STATS_ENEMIES_KILLED); + GlobalKillCounter.incrementKills(p, originalId); } handleDrops(p, killer); if (!isRespawn()) { diff --git a/Server/src/main/java/core/game/node/entity/npc/drop/NPCDropTables.java b/Server/src/main/java/core/game/node/entity/npc/drop/NPCDropTables.java index 347c54d76..9f6177596 100644 --- a/Server/src/main/java/core/game/node/entity/npc/drop/NPCDropTables.java +++ b/Server/src/main/java/core/game/node/entity/npc/drop/NPCDropTables.java @@ -1,5 +1,6 @@ package core.game.node.entity.npc.drop; +import api.ContentAPI; import core.cache.def.impl.NPCDefinition; import core.game.content.global.Bones; import core.game.ge.GrandExchangeDatabase; @@ -17,6 +18,7 @@ import core.tools.StringUtils; import rs09.game.ai.AIPlayer; import rs09.game.ai.AIRepository; import rs09.game.ai.general.GeneralBotCreator; +import rs09.game.content.global.GlobalKillCounter; import rs09.game.content.global.NPCDropTable; import rs09.game.ge.OfferManager; import rs09.game.system.config.ItemConfigParser; @@ -111,9 +113,7 @@ public final class NPCDropTables { } return; } - if (item.getDefinition().getConfiguration(ItemConfigParser.RARE_ITEM, false)) { - Repository.sendNews(player.getUsername() + " has just received: " + item.getAmount() + " x " + item.getName() + "."); - } + ContentAPI.announceIfRare(player, item); if(item.getId() == 6199 && player instanceof Player){ player.sendMessage("A mystery box has fallen on the ground."); } @@ -239,4 +239,4 @@ public final class NPCDropTables { this.modRate = modRate; } -} \ No newline at end of file +} diff --git a/Server/src/main/java/core/game/node/entity/skill/runecrafting/RuneCraftPulse.java b/Server/src/main/java/core/game/node/entity/skill/runecrafting/RuneCraftPulse.java index 207c26099..6485dc3ac 100644 --- a/Server/src/main/java/core/game/node/entity/skill/runecrafting/RuneCraftPulse.java +++ b/Server/src/main/java/core/game/node/entity/skill/runecrafting/RuneCraftPulse.java @@ -1,16 +1,18 @@ package core.game.node.entity.skill.runecrafting; import core.game.container.impl.EquipmentContainer; -import core.game.node.entity.skill.SkillPulse; -import core.game.node.entity.skill.Skills; import core.game.node.entity.impl.Animator.Priority; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.diary.DiaryType; +import core.game.node.entity.skill.SkillPulse; +import core.game.node.entity.skill.Skills; import core.game.node.item.Item; -import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.tools.RandomFunction; +import static rs09.game.node.entity.player.info.stats.StatAttributeKeysKt.STATS_BASE; +import static rs09.game.node.entity.player.info.stats.StatAttributeKeysKt.STATS_RC; +import rs09.game.world.GameWorld; import java.util.ArrayList; import java.util.Arrays; @@ -176,6 +178,7 @@ public final class RuneCraftPulse extends SkillPulse { if (player.getInventory().remove(item) && player.getInventory().hasSpaceFor(i)) { player.getInventory().add(i); + player.incrementAttribute("/save:" + STATS_BASE + ":" + STATS_RC, amount); player.getSkills().addExperience(Skills.RUNECRAFTING, rune.getExperience() * amount, true); // Achievement Diary handling @@ -195,6 +198,7 @@ public final class RuneCraftPulse extends SkillPulse { } } else { if (player.getInventory().remove(item)) { + player.incrementAttribute("/save:" + STATS_BASE + ":" + STATS_RC, amount); for (int i = 0; i < amount; i++) { Rune rune = null; while (rune == null) { diff --git a/Server/src/main/java/core/game/system/SystemTermination.java b/Server/src/main/java/core/game/system/SystemTermination.java index b37025ac9..1ce55219b 100644 --- a/Server/src/main/java/core/game/system/SystemTermination.java +++ b/Server/src/main/java/core/game/system/SystemTermination.java @@ -7,6 +7,7 @@ import core.game.node.entity.player.info.login.PlayerParser; import rs09.Server; import rs09.ServerConstants; import rs09.ServerStore; +import rs09.game.content.global.GlobalKillCounter; import rs09.game.ge.OfferManager; import rs09.game.system.SystemLogger; import rs09.game.world.repository.Repository; @@ -91,6 +92,7 @@ public final class SystemTermination { } catch (Exception ignored) {} } Repository.getDisconnectionQueue().update(); + GlobalKillCounter.save(); GrandExchangeDatabase.save(); OfferManager.save(); SystemLogger.flushLogs(); @@ -102,4 +104,4 @@ public final class SystemTermination { // ServerStore.dump(directory + "store/"); SystemLogger.logInfo("[SystemTerminator] Saved player accounts!"); } -} \ No newline at end of file +} diff --git a/Server/src/main/kotlin/api/ContentAPI.kt b/Server/src/main/kotlin/api/ContentAPI.kt index baea8195f..8578efe85 100644 --- a/Server/src/main/kotlin/api/ContentAPI.kt +++ b/Server/src/main/kotlin/api/ContentAPI.kt @@ -35,7 +35,9 @@ import core.game.world.update.flag.chunk.AnimateObjectUpdateFlag import core.game.world.update.flag.context.Animation import core.game.world.update.flag.context.Graphics import rs09.game.content.dialogue.DialogueFile +import rs09.game.content.global.GlobalKillCounter; import rs09.game.system.SystemLogger +import rs09.game.system.config.ItemConfigParser; import rs09.game.world.GameWorld import rs09.game.world.GameWorld.Pulser import rs09.game.world.repository.Repository @@ -1254,4 +1256,12 @@ object ContentAPI { is Graphics -> Graphics.send(gfx, location) } } + + @JvmStatic + fun announceIfRare(player: Player, item: Item) { + if (item.definition.getConfiguration(ItemConfigParser.RARE_ITEM, false)) { + ContentAPI.sendNews("${player.username} has just received: ${item.amount} x ${item.name}."); + GlobalKillCounter.incrementRareDrop(player, item); + } + } } diff --git a/Server/src/main/kotlin/rs09/Server.kt b/Server/src/main/kotlin/rs09/Server.kt index 684a7b039..075335240 100644 --- a/Server/src/main/kotlin/rs09/Server.kt +++ b/Server/src/main/kotlin/rs09/Server.kt @@ -10,6 +10,7 @@ import core.tools.TimeStamp import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.delay import kotlinx.coroutines.launch +import rs09.game.content.global.GlobalKillCounter; import rs09.game.ge.GEAutoStock import rs09.game.system.SystemLogger import rs09.game.system.config.ServerConfigParser @@ -74,6 +75,7 @@ object Server { startTime = System.currentTimeMillis() val t = TimeStamp() SystemLogger.logInfo("Initializing Server Store...") + GlobalKillCounter.init() ServerStore.init() SystemLogger.logInfo("Initialized ${ServerStore.counter} store files.") GameWorld.prompt(true) diff --git a/Server/src/main/kotlin/rs09/game/content/activity/barrows/RewardChest.kt b/Server/src/main/kotlin/rs09/game/content/activity/barrows/RewardChest.kt index 4705a3e5c..7e6d25d31 100644 --- a/Server/src/main/kotlin/rs09/game/content/activity/barrows/RewardChest.kt +++ b/Server/src/main/kotlin/rs09/game/content/activity/barrows/RewardChest.kt @@ -1,5 +1,6 @@ package rs09.game.content.activity.barrows +import api.ContentAPI import core.game.component.Component import core.game.container.access.InterfaceContainer import core.game.content.global.BossKillCounter @@ -93,9 +94,10 @@ object RewardChest { player.interfaceManager.open(Component(Components.TRAIL_REWARD_364)) BossKillCounter.addtoBarrowsCount(player) for(item in rewards){ + ContentAPI.announceIfRare(player, item); if(!player.inventory.add(item)){ GroundItemManager.create(item,player) } } } -} \ No newline at end of file +} diff --git a/Server/src/main/kotlin/rs09/game/content/global/GlobalKillCounter.kt b/Server/src/main/kotlin/rs09/game/content/global/GlobalKillCounter.kt new file mode 100644 index 000000000..9be43721d --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/global/GlobalKillCounter.kt @@ -0,0 +1,107 @@ +package rs09.game.content.global + +import core.game.node.entity.player.Player +import rs09.game.system.SystemLogger +import java.io.File +import java.io.FileReader +import java.io.FileWriter +import org.json.simple.JSONArray +import org.json.simple.JSONObject +import org.json.simple.parser.JSONParser +import rs09.ServerConstants +import core.game.node.item.Item + +object GlobalKillCounter { + val kills: HashMap> = HashMap() + val rare_drops: HashMap> = HashMap() + + fun init() { + val file = File(ServerConstants.DATA_PATH + File.separator + "global_kill_stats.json") + if(!file.exists()) { + return + } + + val reader = FileReader(file) + val parser = JSONParser() + try { + val data = parser.parse(reader) as JSONObject + val tmp_kills = data.get("kills") + populate(kills, tmp_kills) + val tmp_rare_drops = data.get("rare_drops") + populate(rare_drops, tmp_rare_drops) + } catch (e: Exception){ + SystemLogger.logErr("Failed parsing ${file.name} - stack trace below.") + e.printStackTrace() + } + } + + @JvmStatic + fun populate(field: HashMap>, obj: Any?) { + if(obj != null && obj is JSONObject) { + for((player, tmp_kc) in obj.asIterable()) { + if(player is String) { + val kc: HashMap = HashMap() + for((npc_id, count) in (tmp_kc as JSONObject).asIterable()) { + kc.put(java.lang.Long.parseLong(npc_id as String), count as Long) + } + field.put(player, kc) + } + } + } + } + + @JvmStatic + fun saveField(field: HashMap>): JSONObject { + val tmp_kills = JSONObject() + for((player, kc) in field.asIterable()) { + val tmp_kc = JSONObject() + for((id, count) in kc.asIterable()) { + tmp_kc.put(id, count) + } + tmp_kills.put(player, tmp_kc) + } + return tmp_kills + } + + @JvmStatic + fun save() { + val data = JSONObject() + data.put("kills", saveField(kills)) + data.put("rare_drops", saveField(rare_drops)) + val file = File(ServerConstants.DATA_PATH + File.separator + "global_kill_stats.json") + FileWriter(file).use { it.write(data.toJSONString()); it.flush(); it.close() } + } + + @JvmStatic + fun incrementKills(player: Player, npc_id: Int) { + val player_kills = kills.getOrPut(player.username, { HashMap() }) + val old_amount = player_kills.getOrElse(npc_id.toLong(), { 0 }) + player_kills.put(npc_id.toLong(), 1 + old_amount) + } + + @JvmStatic + fun incrementRareDrop(player: Player, item: Item) { + val player_drops = rare_drops.getOrPut(player.username, { HashMap() }) + val old_amount = player_drops.getOrElse(item.id.toLong(), { 0 }) + player_drops.put(item.id.toLong(), item.amount + old_amount) + } + + @JvmStatic + fun getKills(player: Player, npc_id: Int): Long { + return kills.getOrElse(player.username, { HashMap() }).getOrElse(npc_id.toLong(), { 0 }) + } + + @JvmStatic + fun getKills(player: Player, npc_ids: IntArray): Long { + var sum: Long = 0 + for(npc_id in npc_ids) { + sum += getKills(player, npc_id) + } + return sum + } + + @JvmStatic + fun getRareDrops(player: Player, item_id: Int): Long { + return rare_drops.getOrElse(player.username, { HashMap() }).getOrElse(item_id.toLong(), { 0 }) + } +} diff --git a/Server/src/main/kotlin/rs09/game/node/entity/player/info/stats/StatAttributeKeys.kt b/Server/src/main/kotlin/rs09/game/node/entity/player/info/stats/StatAttributeKeys.kt index bc6aa3127..ee08acd85 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/player/info/stats/StatAttributeKeys.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/player/info/stats/StatAttributeKeys.kt @@ -6,6 +6,7 @@ const val STATS_DEATHS = "deaths" const val STATS_LOGS = "logs_chopped" const val STATS_FISH = "fish_caught" const val STATS_ROCKS = "rocks_mined" +const val STATS_RC = "essence_crafted" const val STATS_ALKHARID_GATE = "alkharid_gate" const val FISHING_TRAWLER_GAMES_WON = "fishing-trawler-games" const val FISHING_TRAWLER_LEAKS_PATCHED = "fishing-trawler-leaks-patched" diff --git a/Server/src/main/kotlin/rs09/game/node/entity/player/info/stats/StatsCommandSet.kt b/Server/src/main/kotlin/rs09/game/node/entity/player/info/stats/StatsCommandSet.kt index 8ea7c07ec..fb2e5104d 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/player/info/stats/StatsCommandSet.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/player/info/stats/StatsCommandSet.kt @@ -4,10 +4,168 @@ import core.game.component.Component import core.game.content.global.BossKillCounter import core.game.node.entity.player.Player import core.plugin.Initializable +import org.rs09.consts.Items; +import org.rs09.consts.NPCs; +import rs09.game.content.global.GlobalKillCounter; +import rs09.game.interaction.InterfaceListener import rs09.game.system.command.Command import rs09.game.system.command.sets.CommandSet import rs09.game.world.repository.Repository +val TUROTH_IDS = intArrayOf(NPCs.TUROTH_1622, NPCs.TUROTH_1623, NPCs.TUROTH_1626, NPCs.TUROTH_1627, NPCs.TUROTH_1628, NPCs.TUROTH_1629, NPCs.TUROTH_1630) +val KURASK_IDS = intArrayOf(NPCs.KURASK_1608, NPCs.KURASK_1609, NPCs.KURASK_4229, NPCs.KURASK_7811) +val GARGOYLE_IDS = intArrayOf(NPCs.GARGOYLE_1610, NPCs.GARGOYLE_1827, NPCs.GARGOYLE_6389) +val SPIRITUAL_MAGE_IDS = intArrayOf(NPCs.SPIRITUAL_MAGE_6221, NPCs.SPIRITUAL_MAGE_6231, NPCs.SPIRITUAL_MAGE_6257, NPCs.SPIRITUAL_MAGE_6278) +val GREEN_DRAGON_IDS = intArrayOf(NPCs.GREEN_DRAGON_941, NPCs.GREEN_DRAGON_4677, NPCs.GREEN_DRAGON_4678, NPCs.GREEN_DRAGON_4679, NPCs.GREEN_DRAGON_4680, NPCs.BRUTAL_GREEN_DRAGON_5362) +val BLUE_DRAGON_IDS = intArrayOf(NPCs.BLUE_DRAGON_55, NPCs.BLUE_DRAGON_4681, NPCs.BLUE_DRAGON_4682, NPCs.BLUE_DRAGON_4683, NPCs.BLUE_DRAGON_4684, NPCs.BLUE_DRAGON_5178) +val RED_DRAGON_IDS = intArrayOf(NPCs.RED_DRAGON_53, NPCs.RED_DRAGON_4669, NPCs.RED_DRAGON_4670, NPCs.RED_DRAGON_4671, NPCs.RED_DRAGON_4672) +val BLACK_DRAGON_IDS = intArrayOf(NPCs.BLACK_DRAGON_54, NPCs.BLACK_DRAGON_4673, NPCs.BLACK_DRAGON_4674, NPCs.BLACK_DRAGON_4675, NPCs.BLACK_DRAGON_4676) +val BRONZE_DRAGON_IDS = intArrayOf(NPCs.BRONZE_DRAGON_1590) +val IRON_DRAGON_IDS = intArrayOf(NPCs.IRON_DRAGON_1591) +val STEEL_DRAGON_IDS = intArrayOf(NPCs.STEEL_DRAGON_1592, NPCs.STEEL_DRAGON_3590) +val MITHRIL_DRAGON_IDS = intArrayOf(NPCs.MITHRIL_DRAGON_5363, NPCs.MITHRIL_DRAGON_8424) +val SKELETAL_WYVERN_IDS = intArrayOf(NPCs.SKELETAL_WYVERN_3068, NPCs.SKELETAL_WYVERN_3069, NPCs.SKELETAL_WYVERN_3070, NPCs.SKELETAL_WYVERN_3071) + +val SPACER = " "; +val NUM_PAGES = 3 + +fun sendStats(player: Player, other: Player, page: Int){ + prepareInterface(player, other, page) + val globalData = other.savedData.globalData + for(i in (68..97)) { + when(page) { + 0 -> { + when(i) { + //Various stats + 97 -> sendLine(player,"Easy Clues: ${other.treasureTrailManager.completedClues[0]}",i) + 68 -> sendLine(player,"Medium Clues: ${other.treasureTrailManager.completedClues[1]}",i) + 69 -> sendLine(player,"Hard Clues: ${other.treasureTrailManager.completedClues[2]}",i) + 70 -> sendLine(player,SPACER,i) + 71 -> sendLine(player,"Slayer Tasks: ${other.slayer.totalTasks}",i) + 72 -> sendLine(player,"Quest Points: ${other.questRepository.points}",i) + 73 -> sendLine(player,"Ironman Mode: ${other.ironmanManager.mode.name.toLowerCase()}",i) + 74 -> sendLine(player,"Deaths: ${other.getAttribute("$STATS_BASE:$STATS_DEATHS",0)}",i) + 75 -> sendLine(player,SPACER,i) + 76 -> sendLine(player,"Logs Chopped: ${other.getAttribute("$STATS_BASE:$STATS_LOGS",0)}",i) + 77 -> sendLine(player,"Rocks Mined: ${other.getAttribute("$STATS_BASE:$STATS_ROCKS",0)}",i) + 78 -> sendLine(player,"Fish Caught: ${other.getAttribute("$STATS_BASE:$STATS_FISH",0)}",i) + 79 -> sendLine(player, "Essence Crafted: ${other.getAttribute("$STATS_BASE:$STATS_RC",0)}", i) + + //Boss KC + 82 -> sendLine(player, "KBD KC: ${globalData.bossCounters.get(BossKillCounter.KING_BLACK_DRAGON.ordinal)}",i) + 83 -> sendLine(player, "TDs KC: ${globalData.bossCounters.get(BossKillCounter.TORMENTED_DEMONS.ordinal)}",i) + 84 -> sendLine(player, "Supreme KC: ${globalData.bossCounters.get(BossKillCounter.DAGANNOTH_SUPREME.ordinal)}",i) + 85 -> sendLine(player, "Rex KC: ${globalData.bossCounters.get(BossKillCounter.DAGANNOTH_REX.ordinal)}",i) + 86 -> sendLine(player, "Prime KC: ${globalData.bossCounters.get(BossKillCounter.DAGANNOTH_PRIME.ordinal)}",i) + 87 -> sendLine(player, "Barrows KC: ${globalData.barrowsLoots}",i) + 88 -> sendLine(player, "Chaos Ele: ${globalData.bossCounters.get(BossKillCounter.CHAOS_ELEMENTAL.ordinal)}",i) + 89 -> sendLine(player, "Mole KC: ${globalData.bossCounters.get(BossKillCounter.GIANT_MOLE.ordinal)}",i) + 90 -> sendLine(player, "Sara KC: ${globalData.bossCounters.get(BossKillCounter.SARADOMIN.ordinal)}",i) + 91 -> sendLine(player, "Zammy KC: ${globalData.bossCounters.get(BossKillCounter.ZAMORAK.ordinal)}",i) + 92 -> sendLine(player, "Bandos KC: ${globalData.bossCounters.get(BossKillCounter.BANDOS.ordinal)}",i) + 93 -> sendLine(player, "Arma KC: ${globalData.bossCounters.get(BossKillCounter.ARMADYL.ordinal)}",i) + 94 -> sendLine(player, "Jad KC: ${globalData.bossCounters.get(BossKillCounter.JAD.ordinal)}",i) + 95 -> sendLine(player, "KQ KC: ${globalData.bossCounters.get(BossKillCounter.KALPHITE_QUEEN.ordinal)}",i) + 96 -> sendLine(player, "Corp KC: ${globalData.bossCounters.get(BossKillCounter.CORPOREAL_BEAST.ordinal)}",i) + else -> sendLine(player,"",i) + } + } + 1 -> { + when(i) { + 97 -> sendLine(player, "Turoths: ${GlobalKillCounter.getKills(other, TUROTH_IDS)}", i) + 68 -> sendLine(player, "Kurasks: ${GlobalKillCounter.getKills(other, KURASK_IDS)}", i) + 69 -> sendLine(player, "Leaf-bladed swords: ${GlobalKillCounter.getRareDrops(other, Items.LEAF_BLADED_SPEAR_4158)}", i) + 70 -> sendLine(player,SPACER,i) + 71 -> sendLine(player, "Gargoyles: ${GlobalKillCounter.getKills(other, GARGOYLE_IDS)}", i) + 72 -> sendLine(player, "Granite mauls: ${GlobalKillCounter.getRareDrops(other, Items.GRANITE_MAUL_4153)}", i) + 73 -> sendLine(player,SPACER,i) + 74 -> sendLine(player, "Spiritual mages: ${GlobalKillCounter.getKills(other, SPIRITUAL_MAGE_IDS)}", i) + 75 -> sendLine(player, "Dragon boots: ${GlobalKillCounter.getRareDrops(other, Items.DRAGON_BOOTS_11732)}", i) + 76 -> sendLine(player,SPACER,i) + 77 -> sendLine(player, "Abyssal demons: ${GlobalKillCounter.getKills(other, NPCs.ABYSSAL_DEMON_1615)}", i) + 78 -> sendLine(player, "Abyssal whips: ${GlobalKillCounter.getRareDrops(other, Items.ABYSSAL_WHIP_4151)}", i) + 79 -> sendLine(player,SPACER,i) + 80 -> sendLine(player, "Dark beasts: ${GlobalKillCounter.getKills(other, NPCs.DARK_BEAST_2783)}", i) + 81 -> sendLine(player, "Dark bows: ${GlobalKillCounter.getRareDrops(other, Items.DARK_BOW_11235)}", i) + + 82 -> sendLine(player, "Green Dragons: ${GlobalKillCounter.getKills(other, GREEN_DRAGON_IDS)}", i) + 83 -> sendLine(player, "Blue Dragons: ${GlobalKillCounter.getKills(other, BLUE_DRAGON_IDS)}", i) + 84 -> sendLine(player, "Red Dragons: ${GlobalKillCounter.getKills(other, RED_DRAGON_IDS)}", i) + 85 -> sendLine(player, "Black Dragons: ${GlobalKillCounter.getKills(other, BLACK_DRAGON_IDS)}", i) + 86 -> sendLine(player,SPACER,i) + 87 -> sendLine(player, "Bronze Dragons: ${GlobalKillCounter.getKills(other, BRONZE_DRAGON_IDS)}", i) + 88 -> sendLine(player, "Iron Dragons: ${GlobalKillCounter.getKills(other, IRON_DRAGON_IDS)}", i) + 89 -> sendLine(player, "Steel Dragons: ${GlobalKillCounter.getKills(other, STEEL_DRAGON_IDS)}", i) + 90 -> sendLine(player, "Mithril Dragons: ${GlobalKillCounter.getKills(other, MITHRIL_DRAGON_IDS)}", i) + 91 -> sendLine(player, "Skeletal Wyverns: ${GlobalKillCounter.getKills(other, SKELETAL_WYVERN_IDS)}", i) + 92 -> sendLine(player,SPACER,i) + 93 -> sendLine(player, "Draconic visages: ${GlobalKillCounter.getRareDrops(other, Items.DRACONIC_VISAGE_11286)}", i) + + else -> sendLine(player,"",i) + } + } + 2 -> { + when(i) { + 97 -> sendLine(player, "Ahrim's hood: ${GlobalKillCounter.getRareDrops(other, Items.AHRIMS_HOOD_4708)}", i) + 68 -> sendLine(player, "Ahrim's staff: ${GlobalKillCounter.getRareDrops(other, Items.AHRIMS_STAFF_4710)}", i) + 69 -> sendLine(player, "Ahrim's robetop: ${GlobalKillCounter.getRareDrops(other, Items.AHRIMS_ROBETOP_4712)}", i) + 70 -> sendLine(player, "Ahrim's robeskirt: ${GlobalKillCounter.getRareDrops(other, Items.AHRIMS_ROBESKIRT_4714)}", i) + 71 -> sendLine(player,SPACER,i) + 72 -> sendLine(player, "Dharok's helm: ${GlobalKillCounter.getRareDrops(other, Items.DHAROKS_HELM_4716)}", i) + 73 -> sendLine(player, "Dharok's greataxe: ${GlobalKillCounter.getRareDrops(other, Items.DHAROKS_GREATAXE_4718)}", i) + 74 -> sendLine(player, "Dharok's platebody: ${GlobalKillCounter.getRareDrops(other, Items.DHAROKS_PLATEBODY_4720)}", i) + 75 -> sendLine(player, "Dharok's platelegs: ${GlobalKillCounter.getRareDrops(other, Items.DHAROKS_PLATELEGS_4722)}", i) + 76 -> sendLine(player,SPACER,i) + 77 -> sendLine(player, "Guthan's helm: ${GlobalKillCounter.getRareDrops(other, Items.GUTHANS_HELM_4724)}", i) + 78 -> sendLine(player, "Guthan's warspear: ${GlobalKillCounter.getRareDrops(other, Items.GUTHANS_WARSPEAR_4726)}", i) + 79 -> sendLine(player, "Guthan's platebody: ${GlobalKillCounter.getRareDrops(other, Items.GUTHANS_PLATEBODY_4728)}", i) + 80 -> sendLine(player, "Guthan's chainskirt: ${GlobalKillCounter.getRareDrops(other, Items.GUTHANS_CHAINSKIRT_4730)}", i) + + 82 -> sendLine(player, "Karil's coif: ${GlobalKillCounter.getRareDrops(other, Items.KARILS_COIF_4732)}", i) + 83 -> sendLine(player, "Karil's crossbow: ${GlobalKillCounter.getRareDrops(other, Items.KARILS_CROSSBOW_4734)}", i) + 84 -> sendLine(player, "Karil's leathertop: ${GlobalKillCounter.getRareDrops(other, Items.KARILS_LEATHERTOP_4736)}", i) + 85 -> sendLine(player, "Karil's leatherskirt: ${GlobalKillCounter.getRareDrops(other, Items.KARILS_LEATHERSKIRT_4738)}", i) + 86 -> sendLine(player,SPACER,i) + 87 -> sendLine(player, "Torag's helm: ${GlobalKillCounter.getRareDrops(other, Items.TORAGS_HELM_4745)}", i) + 88 -> sendLine(player, "Torag's hammers: ${GlobalKillCounter.getRareDrops(other, Items.TORAGS_HAMMERS_4747)}", i) + 89 -> sendLine(player, "Torag's platebody: ${GlobalKillCounter.getRareDrops(other, Items.TORAGS_PLATEBODY_4749)}", i) + 90 -> sendLine(player, "Torag's platelegs: ${GlobalKillCounter.getRareDrops(other, Items.TORAGS_PLATELEGS_4751)}", i) + 91 -> sendLine(player,SPACER,i) + 92 -> sendLine(player, "Verac's helm: ${GlobalKillCounter.getRareDrops(other, Items.VERACS_HELM_4753)}", i) + 93 -> sendLine(player, "Verac's flail: ${GlobalKillCounter.getRareDrops(other, Items.VERACS_FLAIL_4755)}", i) + 94 -> sendLine(player, "Verac's brassard: ${GlobalKillCounter.getRareDrops(other, Items.VERACS_BRASSARD_4757)}", i) + 95 -> sendLine(player, "Verac's plateskirt: ${GlobalKillCounter.getRareDrops(other, Items.VERACS_PLATESKIRT_4759)}", i) + else -> sendLine(player,"",i) + } + } + } + } + player.interfaceManager.open(Component(26)) +} + +fun sendLine(player: Player, line: String, child: Int) { + player.packetDispatch.sendString(line,26,child) +} + +fun prepareInterface(player: Player,other: Player, page: Int){ + player.setAttribute("stats-page-info", StatsPageInfo(other, page)) + if(page == 0) { + player.packetDispatch.sendInterfaceConfig(26,62,true) + player.packetDispatch.sendInterfaceConfig(26,65,true) + } else { + sendLine(player, "Previous", 65) + } + if(page == NUM_PAGES - 1) { + player.packetDispatch.sendInterfaceConfig(26,64,true) + player.packetDispatch.sendInterfaceConfig(26,66,true) + } else { + sendLine(player, "Next", 66) + } + player.packetDispatch.sendString(other.username + "'s Stats - Page ${page + 1}",26,101) +} + +data class StatsPageInfo(val other: Player, val page: Int) {} + @Initializable class StatsCommandSet : CommandSet(Command.Privilege.STANDARD) { override fun defineCommands() { @@ -28,64 +186,33 @@ class StatsCommandSet : CommandSet(Command.Privilege.STANDARD) { return@define } - sendStats(player,other) + sendStats(player,other, 0) } } fun sendStats(player: Player){ - sendStats(player,player) + sendStats(player,player, 0) } - fun sendStats(player: Player, other: Player){ - prepareInterface(player,other) - val globalData = other.savedData.globalData - for(i in (67..96)){ - when(i){ - //Various stats - 67 -> sendLine(player,"Easy Clues: ${other.treasureTrailManager.completedClues[0]}",97) - 68 -> sendLine(player,"Medium Clues: ${other.treasureTrailManager.completedClues[1]}",i) - 69 -> sendLine(player,"Hard Clues: ${other.treasureTrailManager.completedClues[2]}",i) - 70 -> sendLine(player," ",i) - 71 -> sendLine(player,"Slayer Tasks: ${other.slayer.totalTasks}",i) - 72 -> sendLine(player,"Quest Points: ${other.questRepository.points}",i) - 73 -> sendLine(player,"Ironman Mode: ${other.ironmanManager.mode.name.toLowerCase()}",i) - 74 -> sendLine(player,"Deaths: ${other.getAttribute("$STATS_BASE:$STATS_DEATHS",0)}",i) - 75 -> sendLine(player," ",i) - 76 -> sendLine(player,"Logs Chopped: ${other.getAttribute("$STATS_BASE:$STATS_LOGS",0)}",i) - 77 -> sendLine(player,"Rocks Mined: ${other.getAttribute("$STATS_BASE:$STATS_ROCKS",0)}",i) - 78 -> sendLine(player,"Fish Caught: ${other.getAttribute("$STATS_BASE:$STATS_FISH",0)}",i) +} - //Boss KC - 82 -> sendLine(player, "KBD KC: ${globalData.bossCounters.get(BossKillCounter.KING_BLACK_DRAGON.ordinal)}",i) - 83 -> sendLine(player, "TDs KC: ${globalData.bossCounters.get(BossKillCounter.TORMENTED_DEMONS.ordinal)}",i) - 84 -> sendLine(player, "Supreme KC: ${globalData.bossCounters.get(BossKillCounter.DAGANNOTH_SUPREME.ordinal)}",i) - 85 -> sendLine(player, "Rex KC: ${globalData.bossCounters.get(BossKillCounter.DAGANNOTH_REX.ordinal)}",i) - 86 -> sendLine(player, "Prime KC: ${globalData.bossCounters.get(BossKillCounter.DAGANNOTH_PRIME.ordinal)}",i) - 87 -> sendLine(player, "Barrows KC: ${globalData.barrowsLoots}",i) - 88 -> sendLine(player, "Chaos Ele: ${globalData.bossCounters.get(BossKillCounter.CHAOS_ELEMENTAL.ordinal)}",i) - 89 -> sendLine(player, "Mole KC: ${globalData.bossCounters.get(BossKillCounter.GIANT_MOLE.ordinal)}",i) - 90 -> sendLine(player, "Sara KC: ${globalData.bossCounters.get(BossKillCounter.SARADOMIN.ordinal)}",i) - 91 -> sendLine(player, "Zammy KC: ${globalData.bossCounters.get(BossKillCounter.ZAMORAK.ordinal)}",i) - 92 -> sendLine(player, "Bandos KC: ${globalData.bossCounters.get(BossKillCounter.BANDOS.ordinal)}",i) - 93 -> sendLine(player, "Arma KC: ${globalData.bossCounters.get(BossKillCounter.ARMADYL.ordinal)}",i) - 94 -> sendLine(player, "Jad KC: ${globalData.bossCounters.get(BossKillCounter.JAD.ordinal)}",i) - 95 -> sendLine(player, "KQ KC: ${globalData.bossCounters.get(BossKillCounter.KALPHITE_QUEEN.ordinal)}",i) - 96 -> sendLine(player, "Corp KC: ${globalData.bossCounters.get(BossKillCounter.CORPOREAL_BEAST.ordinal)}",i) - else -> sendLine(player,"",i) +class StatsInterface : InterfaceListener() { + val COMPONENT_ID = 26 + + override fun defineListeners() { + on(COMPONENT_ID, 61) { player, _, _, _, _, _ -> + val info: StatsPageInfo? = player.getAttribute("stats-page-info", null) + if(info != null) { + sendStats(player, info.other, info.page-1) } + return@on true + } + on(COMPONENT_ID, 63) { player, _, _, _, _, _ -> + val info: StatsPageInfo? = player.getAttribute("stats-page-info", null) + if(info != null) { + sendStats(player, info.other, info.page+1) + } + return@on true } - player.interfaceManager.open(Component(26)) - } - - fun sendLine(player: Player, line: String, child: Int){ - player.packetDispatch.sendString(line,26,child) - } - - fun prepareInterface(player: Player,other: Player){ - player.packetDispatch.sendInterfaceConfig(26,64,true) - player.packetDispatch.sendInterfaceConfig(26,62,true) - player.packetDispatch.sendInterfaceConfig(26,65,true) - player.packetDispatch.sendInterfaceConfig(26,66,true) - player.packetDispatch.sendString(other.username + "'s Stats",26,101) } } From b371c89d0cf608bd7ec53fe6dcceb391a623c81e Mon Sep 17 00:00:00 2001 From: vk Date: Mon, 18 Oct 2021 19:21:34 -0700 Subject: [PATCH 05/10] add lava titan's mining boost lava titan should give an invisible +10 mining level boost. --- .../java/core/game/node/entity/npc/familiar/LavaTitanNPC.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/LavaTitanNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/LavaTitanNPC.java index 6faab4106..e9122866d 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/LavaTitanNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/LavaTitanNPC.java @@ -1,5 +1,7 @@ package core.game.node.entity.npc.familiar; +import core.game.node.entity.skill.SkillBonus; +import core.game.node.entity.skill.Skills; import core.game.node.entity.skill.summoning.familiar.Familiar; import core.game.node.entity.skill.summoning.familiar.FamiliarSpecial; import core.game.node.entity.combat.equipment.WeaponInterface; @@ -27,6 +29,7 @@ public class LavaTitanNPC extends Familiar { */ public LavaTitanNPC(Player owner, int id) { super(owner, id, 6100, 12788, 4, WeaponInterface.STYLE_AGGRESSIVE); + boosts.add(new SkillBonus(Skills.MINING, 10)); } @Override From 69f73378dc8201fba23c2e0ccd7936b58fffc2e6 Mon Sep 17 00:00:00 2001 From: skelsoft <9147770-skelsoft@users.noreply.gitlab.com> Date: Tue, 19 Oct 2021 21:14:13 +0000 Subject: [PATCH 06/10] Fix: Kurious Kalphites --- Server/data/configs/npc_configs.json | 472 ++------------------------- 1 file changed, 20 insertions(+), 452 deletions(-) diff --git a/Server/data/configs/npc_configs.json b/Server/data/configs/npc_configs.json index dc2d65078..be3c5d841 100644 --- a/Server/data/configs/npc_configs.json +++ b/Server/data/configs/npc_configs.json @@ -11977,6 +11977,8 @@ "slayer_task": "53", "melee_animation": "6223", "range_animation": "6223", + "attack_speed": "4", + "magic_level": "1", "respawn_delay": "38", "defence_animation": "6232", "weakness": "7", @@ -11998,11 +12000,14 @@ "slayer_task": "53", "melee_animation": "6224", "range_animation": "0", + "attack_speed": "4", "poisonous": "true", + "magic_level": "1", "respawn_delay": "60", "defence_animation": "6227", "weakness": "7", "slayer_exp": "90", + "poison_amount": "4", "magic_animation": "0", "death_animation": "6228", "name": "Kalphite Soldier", @@ -12021,11 +12026,13 @@ "slayer_task": "53", "melee_animation": "6223", "range_animation": "6223", - "attack_speed": "5", + "attack_speed": "4", "poisonous": "true", + "magic_level": "1", "respawn_delay": "65", "defence_animation": "6232", "weakness": "7", + "poison_amount": "6", "magic_animation": "6223", "death_animation": "6230", "name": "Kalphite Guardian", @@ -12044,6 +12051,8 @@ "slayer_task": "53", "melee_animation": "6223", "range_animation": "6223", + "attack_speed": "4", + "magic_level": "1", "respawn_delay": "38", "defence_animation": "6232", "weakness": "7", @@ -12065,11 +12074,13 @@ "slayer_task": "53", "melee_animation": "6223", "range_animation": "6223", - "attack_speed": "5", + "attack_speed": "4", "poisonous": "true", + "magic_level": "1", "respawn_delay": "65", "defence_animation": "6232", "weakness": "7", + "poison_amount": "6", "magic_animation": "6223", "death_animation": "6230", "name": "Kalphite Guardian", @@ -12146,7 +12157,7 @@ "lifepoints": "10", "strength_level": "1", "id": "1161", - "aggressive": "true", + "aggressive": "false", "range_level": "1", "attack_level": "1" }, @@ -32462,19 +32473,23 @@ "examine": "I don't think insect repellent will work...", "melee_animation": "6223", "range_animation": "0", + "attack_speed": "4", "poisonous": "true", + "magic_level": "1", "respawn_delay": "60", - "defence_animation": "0", + "defence_animation": "6227", "weakness": "6", + "poison_amount": "4", "magic_animation": "0", "death_animation": "6228", "name": "Kalphite Soldier", "defence_level": "70", "safespot": null, - "lifepoints": "114", + "lifepoints": "90", "strength_level": "70", "id": "3589", "aggressive": "true", + "bonuses": "0,0,0,0,0,25,25,5,50,50,0,0,0,0,0", "range_level": "1", "attack_level": "70" }, @@ -83563,135 +83578,6 @@ "range_level": "1", "attack_level": "1" }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "6223", - "range_animation": "6223", - "respawn_delay": "38", - "defence_animation": "6232", - "weakness": "7", - "slayer_exp": "40", - "magic_animation": "6223", - "death_animation": "6230", - "name": "Kalphite Worker", - "defence_level": "20", - "safespot": null, - "lifepoints": "40", - "strength_level": "20", - "id": "1153", - "bonuses": "0,0,0,0,0,5,5,1,10,10,0,0,0,0,0", - "range_level": "1", - "attack_level": "20" - }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "6224", - "range_animation": "0", - "poisonous": "true", - "respawn_delay": "60", - "defence_animation": "6227", - "weakness": "7", - "slayer_exp": "90", - "magic_animation": "0", - "death_animation": "6228", - "name": "Kalphite Soldier", - "defence_level": "70", - "safespot": null, - "lifepoints": "90", - "strength_level": "70", - "id": "1154", - "aggressive": "true", - "bonuses": "0,0,0,0,0,25,25,5,50,50,0,0,0,0,0", - "range_level": "1", - "attack_level": "70" - }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "6223", - "range_animation": "6223", - "attack_speed": "5", - "poisonous": "true", - "respawn_delay": "65", - "defence_animation": "6232", - "weakness": "7", - "magic_animation": "6223", - "death_animation": "6230", - "name": "Kalphite Guardian", - "defence_level": "110", - "safespot": null, - "lifepoints": "170", - "strength_level": "110", - "id": "1155", - "aggressive": "true", - "bonuses": "0,0,0,0,0,25,25,5,50,50,0,0,0,0,0", - "range_level": "1", - "attack_level": "110" - }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "6223", - "range_animation": "6223", - "respawn_delay": "38", - "defence_animation": "6232", - "weakness": "7", - "slayer_exp": "40", - "magic_animation": "6223", - "death_animation": "6230", - "name": "Kalphite Worker", - "defence_level": "20", - "safespot": null, - "lifepoints": "40", - "strength_level": "20", - "id": "1156", - "bonuses": "0,0,0,0,0,5,5,1,10,10,0,0,0,0,0", - "range_level": "1", - "attack_level": "20" - }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "6223", - "range_animation": "6223", - "attack_speed": "5", - "poisonous": "true", - "respawn_delay": "65", - "defence_animation": "6232", - "weakness": "7", - "magic_animation": "6223", - "death_animation": "6230", - "name": "Kalphite Guardian", - "defence_level": "110", - "safespot": null, - "lifepoints": "170", - "strength_level": "110", - "id": "1157", - "aggressive": "true", - "bonuses": "0,0,0,0,0,25,25,5,50,50,0,0,0,0,0", - "range_level": "1", - "attack_level": "110" - }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "0", - "range_animation": "0", - "defence_animation": "0", - "magic_animation": "0", - "death_animation": "0", - "name": "Kalphite Larva", - "defence_level": "1", - "safespot": null, - "lifepoints": "10", - "strength_level": "1", - "id": "1161", - "aggressive": "true", - "range_level": "1", - "attack_level": "1" - }, { "examine": "A huge beast", "melee_animation": "313", @@ -102214,26 +102100,6 @@ "range_level": "1", "attack_level": "40" }, - { - "examine": "I don't think insect repellent will work...", - "melee_animation": "6223", - "range_animation": "0", - "poisonous": "true", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "6", - "magic_animation": "0", - "death_animation": "6228", - "name": "Kalphite Soldier", - "defence_level": "70", - "safespot": null, - "lifepoints": "114", - "strength_level": "70", - "id": "3589", - "aggressive": "true", - "range_level": "1", - "attack_level": "70" - }, { "examine": "Its scales seem to be made of steel.", "combat_audio": "408,410,409", @@ -148314,135 +148180,6 @@ "range_level": "1", "attack_level": "1" }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "6223", - "range_animation": "6223", - "respawn_delay": "38", - "defence_animation": "6232", - "weakness": "7", - "slayer_exp": "40", - "magic_animation": "6223", - "death_animation": "6230", - "name": "Kalphite Worker", - "defence_level": "20", - "safespot": null, - "lifepoints": "40", - "strength_level": "20", - "id": "1153", - "bonuses": "0,0,0,0,0,5,5,1,10,10,0,0,0,0,0", - "range_level": "1", - "attack_level": "20" - }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "6224", - "range_animation": "0", - "poisonous": "true", - "respawn_delay": "60", - "defence_animation": "6227", - "weakness": "7", - "slayer_exp": "90", - "magic_animation": "0", - "death_animation": "6228", - "name": "Kalphite Soldier", - "defence_level": "70", - "safespot": null, - "lifepoints": "90", - "strength_level": "70", - "id": "1154", - "aggressive": "true", - "bonuses": "0,0,0,0,0,25,25,5,50,50,0,0,0,0,0", - "range_level": "1", - "attack_level": "70" - }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "6223", - "range_animation": "6223", - "attack_speed": "5", - "poisonous": "true", - "respawn_delay": "65", - "defence_animation": "6232", - "weakness": "7", - "magic_animation": "6223", - "death_animation": "6230", - "name": "Kalphite Guardian", - "defence_level": "110", - "safespot": null, - "lifepoints": "170", - "strength_level": "110", - "id": "1155", - "aggressive": "true", - "bonuses": "0,0,0,0,0,25,25,5,50,50,0,0,0,0,0", - "range_level": "1", - "attack_level": "110" - }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "6223", - "range_animation": "6223", - "respawn_delay": "38", - "defence_animation": "6232", - "weakness": "7", - "slayer_exp": "40", - "magic_animation": "6223", - "death_animation": "6230", - "name": "Kalphite Worker", - "defence_level": "20", - "safespot": null, - "lifepoints": "40", - "strength_level": "20", - "id": "1156", - "bonuses": "0,0,0,0,0,5,5,1,10,10,0,0,0,0,0", - "range_level": "1", - "attack_level": "20" - }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "6223", - "range_animation": "6223", - "attack_speed": "5", - "poisonous": "true", - "respawn_delay": "65", - "defence_animation": "6232", - "weakness": "7", - "magic_animation": "6223", - "death_animation": "6230", - "name": "Kalphite Guardian", - "defence_level": "110", - "safespot": null, - "lifepoints": "170", - "strength_level": "110", - "id": "1157", - "aggressive": "true", - "bonuses": "0,0,0,0,0,25,25,5,50,50,0,0,0,0,0", - "range_level": "1", - "attack_level": "110" - }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "0", - "range_animation": "0", - "defence_animation": "0", - "magic_animation": "0", - "death_animation": "0", - "name": "Kalphite Larva", - "defence_level": "1", - "safespot": null, - "lifepoints": "10", - "strength_level": "1", - "id": "1161", - "aggressive": "true", - "range_level": "1", - "attack_level": "1" - }, { "examine": "A huge beast", "melee_animation": "313", @@ -167111,26 +166848,6 @@ "range_level": "1", "attack_level": "40" }, - { - "examine": "I don't think insect repellent will work...", - "melee_animation": "6223", - "range_animation": "0", - "poisonous": "true", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "6", - "magic_animation": "0", - "death_animation": "6228", - "name": "Kalphite Soldier", - "defence_level": "70", - "safespot": null, - "lifepoints": "114", - "strength_level": "70", - "id": "3589", - "aggressive": "true", - "range_level": "1", - "attack_level": "70" - }, { "examine": "Its scales seem to be made of steel.", "combat_audio": "408,410,409", @@ -213892,135 +213609,6 @@ "range_level": "1", "attack_level": "1" }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "6223", - "range_animation": "6223", - "respawn_delay": "38", - "defence_animation": "6232", - "weakness": "7", - "slayer_exp": "40", - "magic_animation": "6223", - "death_animation": "6230", - "name": "Kalphite Worker", - "defence_level": "20", - "safespot": null, - "lifepoints": "40", - "strength_level": "20", - "id": "1153", - "bonuses": "0,0,0,0,0,5,5,1,10,10,0,0,0,0,0", - "range_level": "1", - "attack_level": "20" - }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "6224", - "range_animation": "0", - "poisonous": "true", - "respawn_delay": "60", - "defence_animation": "6227", - "weakness": "7", - "slayer_exp": "90", - "magic_animation": "0", - "death_animation": "6228", - "name": "Kalphite Soldier", - "defence_level": "70", - "safespot": null, - "lifepoints": "90", - "strength_level": "70", - "id": "1154", - "aggressive": "true", - "bonuses": "0,0,0,0,0,25,25,5,50,50,0,0,0,0,0", - "range_level": "1", - "attack_level": "70" - }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "6223", - "range_animation": "6223", - "attack_speed": "5", - "poisonous": "true", - "respawn_delay": "65", - "defence_animation": "6232", - "weakness": "7", - "magic_animation": "6223", - "death_animation": "6230", - "name": "Kalphite Guardian", - "defence_level": "110", - "safespot": null, - "lifepoints": "170", - "strength_level": "110", - "id": "1155", - "aggressive": "true", - "bonuses": "0,0,0,0,0,25,25,5,50,50,0,0,0,0,0", - "range_level": "1", - "attack_level": "110" - }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "6223", - "range_animation": "6223", - "respawn_delay": "38", - "defence_animation": "6232", - "weakness": "7", - "slayer_exp": "40", - "magic_animation": "6223", - "death_animation": "6230", - "name": "Kalphite Worker", - "defence_level": "20", - "safespot": null, - "lifepoints": "40", - "strength_level": "20", - "id": "1156", - "bonuses": "0,0,0,0,0,5,5,1,10,10,0,0,0,0,0", - "range_level": "1", - "attack_level": "20" - }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "6223", - "range_animation": "6223", - "attack_speed": "5", - "poisonous": "true", - "respawn_delay": "65", - "defence_animation": "6232", - "weakness": "7", - "magic_animation": "6223", - "death_animation": "6230", - "name": "Kalphite Guardian", - "defence_level": "110", - "safespot": null, - "lifepoints": "170", - "strength_level": "110", - "id": "1157", - "aggressive": "true", - "bonuses": "0,0,0,0,0,25,25,5,50,50,0,0,0,0,0", - "range_level": "1", - "attack_level": "110" - }, - { - "examine": "I don't think insect repellent will work...", - "slayer_task": "53", - "melee_animation": "0", - "range_animation": "0", - "defence_animation": "0", - "magic_animation": "0", - "death_animation": "0", - "name": "Kalphite Larva", - "defence_level": "1", - "safespot": null, - "lifepoints": "10", - "strength_level": "1", - "id": "1161", - "aggressive": "true", - "range_level": "1", - "attack_level": "1" - }, { "examine": "A huge beast", "melee_animation": "313", @@ -232543,26 +232131,6 @@ "range_level": "1", "attack_level": "40" }, - { - "examine": "I don't think insect repellent will work...", - "melee_animation": "6223", - "range_animation": "0", - "poisonous": "true", - "respawn_delay": "60", - "defence_animation": "0", - "weakness": "6", - "magic_animation": "0", - "death_animation": "6228", - "name": "Kalphite Soldier", - "defence_level": "70", - "safespot": null, - "lifepoints": "114", - "strength_level": "70", - "id": "3589", - "aggressive": "true", - "range_level": "1", - "attack_level": "70" - }, { "examine": "Its scales seem to be made of steel.", "combat_audio": "408,410,409", From 587dd05e9ebdb9abd179e91e2277d8b613591f04 Mon Sep 17 00:00:00 2001 From: skelsoft <9147770-skelsoft@users.noreply.gitlab.com> Date: Thu, 21 Oct 2021 00:27:21 +0000 Subject: [PATCH 07/10] Add: Adventure Bot Dialogue Expansion Pak --- .../ai/general/scriptrepository/Adventurer.kt | 245 ++++++++++++++++-- 1 file changed, 230 insertions(+), 15 deletions(-) diff --git a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/Adventurer.kt b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/Adventurer.kt index 241394670..b091e2d6e 100644 --- a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/Adventurer.kt +++ b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/Adventurer.kt @@ -284,10 +284,16 @@ class Adventurer(val style: CombatStyle): Script() { "no", "We are no strangers to love", "You know the rules and so do I", - "A full commitments what Im thinking of", - "You wouldnt get this from any other guy", + "A full commitment's what I'm thinking of", + "You wouldn't get this from any other guy", + "I just wanna tell you how I'm feeling", + "Gotta make you understand", "Never gonna give you up", "Never gonna let you down", + "Never gonna run around and desert you", + "Never gonna make you cry", + "Never gonna say goodbye", + "Never gonna tell a lie and hurt you", "why", "why", "why", @@ -309,7 +315,7 @@ class Adventurer(val style: CombatStyle): Script() { "A blessing in disguise ${real.username}", "Break a leg", "Cut somebody some slack", - "Youre in the right place!", + "You're in the right place!", "Thanks so much.", "I really appreciate you ${real.username}", "Excuse me ${real.username}?", @@ -318,7 +324,7 @@ class Adventurer(val style: CombatStyle): Script() { "How does that sound ${real.username}?", "That sounds great ${real.username}.", "I’m learning English.", - "I dont understand.", + "I don't understand.", "Could you repeat that please ${real.username}?", "Could you please talk slower ${real.username}?", "Thank you. That helps a lot.", @@ -376,11 +382,11 @@ class Adventurer(val style: CombatStyle): Script() { "bowdi boy", "i love bowdi... sometimes", "${real.username} = ${real.username}", - "Im bacon.. go on dad... say it", - "Im going to leave.", - "Im happy ${real.username}", - "Im not ready yet ${real.username}", - "Im very busy. I dont have time now.", + "I'm bacon.. go on dad... say it", + "I'm going to leave.", + "I'm happy ${real.username}", + "I'm not ready yet ${real.username}", + "I'm very busy. I don't have time now.", "Is that enough ${real.username}?", "I thought the clothes were cheaper ${real.username}", "Ive been here for two days ${real.username}.", @@ -395,16 +401,157 @@ class Adventurer(val style: CombatStyle): Script() { "Very good, thanks ${real.username}", "Your things are all here i think?", "Long time no see ${real.username}", - "I couldnt agree more ${real.username}", + "I couldn't agree more ${real.username}", "It cost me a fortune ${real.username}", "I am dog tired", - "Don’t take it personally", + "Dont take it personally", "We will be having a good time", "Same as always ${real.username}", "No problem", "Anyway I should get going ${real.username}", "I cant help you there ${real.username}", - "I agree 100% ${real.username}" + "I agree 100% ${real.username}", + "I've gone mentally insane", + "My descent into madness is complete", + "Get real", + "Cry about it", + "Cope", + "Seethe", + "Yes mate", + "I am mentally deranged", + "I've gone past the point of insanity", + "I am beyond the point of no return", + "Sounds tricky.", + "Guthiiiiiiiiiiiiiiiiiiiiiiiiiiiiiixxx!!!!!!", + "530 gang for life", + "${real.username}, have you read the rules?", + "${real.username}, have you checked out the Discord?", + "why are the leprechauns moving?", + "I am beyond the point of no return!", + "Nothin' personnel, kid.", + "All your base are belong to us", + "May Guthix bring you balance.", + "May Guthix bring you balance.", + "May Guthix bring you balance.", + "Thy death was not in vain, for it brought some balance to the world. May Guthix bring you rest.", + "May you walk the path, and never fall, for Guthix walks beside thee on thy journey. May Guthix bring you peace.", + "All things must end, as all begin; Only Guthix knows the role thou must play. May Guthix bring you balance.", + "In life, in death, in joy, in sorrow: May thine experience show thee balance. May Guthix bring you balance.", + "Thou must do as thou must, no matter what. Thine actions bring balance to this world. May Guthix bring you balance.", + "The river flows, the sun ignites, May you stand with Guthix in thy fights. May Guthix bring you balance.", + "A journey of a single step, May take thee over a thousand miles. May Guthix bring you balance.", + "Zamorak give me strength!", + "Zamorak give me strength!", + "Zamorak give me strength!", + "May your bloodthirst never be sated, and may all your battles be glorious. Zamorak bring you strength.", + "There is no opinion that cannot be proven true...by crushing those who choose to disagree with it. Zamorak give me strength!", + "Battles are not lost and won; They simply remove the weak from the equation. Zamorak give me strength!", + "Those who fight, then run away, shame Zamorak with their cowardice. Zamorak give me strength!", + "Battle is by those who choose to disagree with it. Zamorak give me strength!", + "Strike fast, strike hard, strike true: The strength of Zamorak will be with you. Zamorak give me strength!", + "The weak deserve to die, so the strong may flourish. This is the creed of Zamorak.", + "This is Saradomin's wisdom.", + "This is Saradomin's wisdom.", + "This is Saradomin's wisdom.", + "Go in peace in the name of Saradomin; may his glory shine upon you like the sun.", + "Thy cause was false, thy skills did lack; See you in Lumbridge when you get back.", + "Protect your self, protect your friends. Mine is the glory that never ends. This is Saradomin's wisdom.", + "The darkness in life may be avoided, by the light of wisdom shining. This is Saradomin's wisdom.", + "Show love to your friends, and mercy to your enemies, and know that the wisdom of Saradomin will follow. This is Saradomin's wisdom.", + "A fight begun, when the cause is just, will prevail over all others. This is Saradomin's wisdom.", + "The currency of goodness is honour; It retains its value through scarcity. This is Saradomin's wisdom.", + "For Camelot!", + "Firmly grasp it!", + "My legs!", + "Build more farms.", + "B sale at Varrock ${real.username}, don't miss out!", + "Drop party follow me", + "Ryan where is barbass, you said two days Ryan", + "Barbass never", + "What da dog doin' doe?", + "A", + "Ae", + "Mof", + "Moth", + "Fluff", + "Bwuh", + "I'm literally just mothin' bro", + "Certified 2009scape classic.", + "Make sure to like, comment and subscribe ${real.username} it really helps", + "Real 2009scape hours!!! Murder that like if you up!!!!", + "W00t!", + "Owned!", + "Pwned!", + "Lol n00b", + "Epic ownage ${real.username}", + "Gielinor is a strange place, ${real.username}. Best have your wits about you.", + "Mad bloggers bro", + "Vibe check", + "Drip check", + "Uhuhuhuhuhuhuhuhu", + "Ahhhhhhhhhhhhhhhh", + "yall got any deez?", + "Deez nuts", + "When she give you that yoinky sploinky", + "Sir, this is a 2009scape.", + "Oh dear! You are dead!", + "Cor blimey, mate! What are ye doing in me pockets?", + "yeah i got funnies", + "read muv luv", + "Why doesn't she love me bros?", + "${real.username} is off the goop don't listen to the clown", + "do yall got laptops", + "cfunny play the alien warp sound effect", + "Ware to all whom doom hither, where cope is all yet constant.", + "Who wants to come GWD?", + "How do I make money?", + "Ironmen stand alone together!", + "based", + "where is she", + "*S N I I I I I I I I I F F F F F F F F F F F*", + "Hey ${real.username}, who was in Paris?", + "Huh whuh?", + "who's lone?", + "who *is* he?", + "Hi ${real.username}, I'm Dad!", + "anyone wanna play melty blood after I high alch these bows?", + "buru nyaaaa", + "Number 15, Taverley Dungeon Black Dragons.", + "House party at Rimmington! Host: ${real.username}!", + "Spending 200m! Trade me, no junk!", + "Surprise exam, ${real.username}!", + "Nice outfit ${real.username}, does it come in mens?", + "Nice outfit ${real.username}, does it come in womens?", + "Nice outfit ${real.username}, does it come in children's size 12?", + ":)", + ":D", + "die screaming", + "Only on Tuesdays", + "we stan 2009scape", + "There is no spoon", + "Where's the cow level?", + "Join 2009scape Clan Chat!", + "Join 2009scape Cc!", + "Chop chop!", + "Runescape rox my sox!!!!!!1", + "Type ::scripts for all 99s", + "Help I just died to Evil Chicken and I lost my stuff!", + "Can you fight Bandos in this game?", + "one bad gloop", + "${real.username} is not cute or funny", + "You have committed crimes against Gielinor and her people. What say you?", + "Barrows trauma", + "Uhuhuhuhuhu please Barrows give me the K top ahhhhhh", + "Selling rare lobby 1m", + "Rise and grind bloatscapers, let's get this bread", + "Nice", + "Sandwiches, ${real.username}!", + "What a grand and intoxicating innocence!", + "With this character's death, the thread of prophecy is severed.", + "You must gather your party before venturing forth.", + "Praise Andrew Gower", + "Please help me I can't stop playing 2009scape", + "Are you ignoring me, ${real.username}?!" ) val current = LocalDateTime.now() @@ -513,6 +660,7 @@ class Adventurer(val style: CombatStyle): Script() { "I saw Kermit kissing santaaaa claus", "You are a mean one, Mr. Grinch", "Deck the hallsss", + "You doin' anything for Christmas, ${real.username}?", "ITS BEGINNING TO LOOK A LOT LIKE CHRISTAAMASSSSS" ) @@ -523,6 +671,8 @@ class Adventurer(val style: CombatStyle): Script() { "1 more day!!!!!", "Dont forget to put cookies and milk out tonight!!", "${real.username} do you like christmas??", + "Dont peek at your presents! Its not Christmas yet!", + "Santa's coming tonight!!!! :)", "Happy Christmas eve ${real.username} :)" ) @@ -531,6 +681,9 @@ class Adventurer(val style: CombatStyle): Script() { "What did you get for christmas ${real.username}?", "ITS CHRISTMASSSS!!!", "Christmas party time!!", + "Merry Christmas!!!", + "What presents did you get, ${real.username}?", + "36?! But last year.. last year I had 37!", "${real.username} vibing with the christmas spirit", "Cant believe its christmas!!", "We need to have a christmas party ${real.username}!!", @@ -549,7 +702,10 @@ class Adventurer(val style: CombatStyle): Script() { "We should do something for New Years eve today ${real.username}!", "Happy New Years Eve ${real.username}", "1 More day left in 2021 thank god", - "Whats your New Years resolution ${real.username}?" + "Whats your New Years resolution ${real.username}?", + "Man this sucks, I'm working on New Years...", + "You doin' anything for New Years, ${real.username}?", + "Ok who's coming to mine to get on the piss?" ) val NewYears = listOf( @@ -557,7 +713,11 @@ class Adventurer(val style: CombatStyle): Script() { "Its New Years Day ${real.username}!", "HAPPY NEW YEAR ${real.username}!!!", "2022 lets fucking gooooooo", - "What are your goals for 2022 ${real.username}?" + "What are your goals for 2022 ${real.username}?", + "I better call grandma! :)", + "Happy New Year!", + "Wooooooooooooooooooooooo!!!!", + "New year new me!" ) val Valentines = listOf( @@ -631,11 +791,66 @@ class Adventurer(val style: CombatStyle): Script() { "Who else loves easter like i do??", "${real.username} and i are going easter egg hunting", "${real.username} and i are going to look for the easter bunny!!", + "I ate so much chocolate oh god my stomach", + "Mmmmmm choccies...", + "Where did Woah hide the stash of eggs?", "Hint for anyone who sees this you must dig above eagles peak" ) - + + val Halloween = listOf( + "Trick or treat!!!", + "Boo! Hahahahaha!!", + "Have you got your costume on, ${real.username}?", + "How much candy did you get, ${real.username}?", + "Don't dead open inside", + "Costume party at my POH!! Follow me!", + "Trick, then!", + "Brrrainssssssss...", + "'Cause this is thriller, thriller night, and no one's gonna save you from the beast about to strike!", + "This is Hallowe'en, this is Hallowe'en, pumpkins scream in the dead of night!", + "This is Hallowe'en, everybody make a scene, Trick or treat till the neighbors gonna die of fright!", + "In this town we call home, everyone hail to the pumpkin song!", + "Watch out for Skeleton Jack!", + "The headless-what-man? Horse? Never heard of those.", + "Bring me their souls!", + "I'll take any sweets you don't want, ${real.username}", + "Whatever you do, don't come to Draynor Manor on this spooky night.", + "Ahhhh! ${real.username}, you scared me! :(", + "I'm making soup from some leftover pumpkins, want any?", + "I'm gonna be so sick from eating all these sweets...", + "Rise from the grave, my minions! Tis' Hallowe'en!", + "This Scream Fortress 2 update hits kinda different...", + "Nice costume Woah", + "Nice costume, ${real.username}!", + "Ooh, a piece of candy.", + "Time to join the skeleton war, ${real.username}.", + "Spooky scary skeletons!", + "Spooky scary skeletons!", + "Spooky scary skeletons!", + "Spooky scary skeletons, send shivers down your spine!", + "Shrieking skulls will shock your soul, seal your doom tonight!", + "Spooky scary skeletons, speak with such a screech!", + "You'll shake and shudder in surprise, when you hear these zombies shriek!", + "'Cause spooky scary skeletons, shout startling shrilly screams!", + "Spooky scary skeletons, will wake you with a boo!", + "*doot doot*" + ) + when { + //Celebrates Halloween + formatted.contentEquals("2021-10-31") -> { + if (Random.nextBoolean()) { + val chat = Halloween.random() + bot.sendChat(chat) + bot.updateMasks.register(ChatFlag(ChatMessage(bot, chat, 0, 0))) + }else{ + val chat = dialogue.random() + bot.sendChat(chat) + bot.updateMasks.register(ChatFlag(ChatMessage(bot, chat, 0, 0))) + } + } + //Celebrates lead up to Christmas! until in 2..24 -> { if (Random.nextBoolean()){ From cb60f2bc852640bb3164aa7d6b07d624e8c810a6 Mon Sep 17 00:00:00 2001 From: downthecrop Date: Thu, 21 Oct 2021 20:55:48 +0000 Subject: [PATCH 08/10] Edgeville Dungeon Gate --- .../interaction/city/EdgevilleNodePlugin.java | 21 ++++++++++++++++++- .../wildyditch/WildernessInterfacePlugin.java | 20 ++++++++++++++---- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/Server/src/main/java/core/game/interaction/city/EdgevilleNodePlugin.java b/Server/src/main/java/core/game/interaction/city/EdgevilleNodePlugin.java index bd570b8ad..532c83e23 100644 --- a/Server/src/main/java/core/game/interaction/city/EdgevilleNodePlugin.java +++ b/Server/src/main/java/core/game/interaction/city/EdgevilleNodePlugin.java @@ -2,7 +2,9 @@ package core.game.interaction.city; import api.ContentAPI; import core.cache.def.impl.SceneryDefinition; +import core.game.component.Component; import core.game.content.global.action.ClimbActionHandler; +import core.game.content.global.action.DoorActionHandler; import core.game.interaction.OptionHandler; import core.game.node.Node; import core.game.node.entity.player.Player; @@ -29,8 +31,12 @@ public final class EdgevilleNodePlugin extends OptionHandler { SceneryDefinition.forId(30806).getHandlers().put("option:take-seed", this); SceneryDefinition.forId(12265).getHandlers().put("option:climb", this); - SceneryDefinition.forId(12266).getHandlers().put("option:open", this); + //Dungeon Wilderness gates + SceneryDefinition.forId(29319).getHandlers().put("option:open", this); + SceneryDefinition.forId(29320).getHandlers().put("option:open", this); + + SceneryDefinition.forId(12266).getHandlers().put("option:open", this); SceneryDefinition.forId(26933).getHandlers().put("option:open", this); SceneryDefinition.forId(26934).getHandlers().put("option:close", this); SceneryDefinition.forId(26934).getHandlers().put("option:climb-down", this); @@ -72,6 +78,19 @@ public final class EdgevilleNodePlugin extends OptionHandler { ContentAPI.sendMessage(player, "You climb down through the trapdoor..."); ClimbActionHandler.climbLadder(player, (Scenery) node, option); } + break; + case 29319: + case 29320: // Edgeville Dungeon wilderness entrance + if (option.equalsIgnoreCase("open") && player.getLocation().getY() < 9918) { + Location endLocation = new Location(player.getLocation().getX(),player.getLocation().getY()+1); + player.getInterfaceManager().open(new Component(382)); + player.setAttribute("wildy_gate", node); + player.setAttribute("wildy_gate_loc",endLocation); + } + else{ // Leaving the wilderness + Location endLocation = new Location(player.getLocation().getX(),player.getLocation().getY()-1); + DoorActionHandler.handleAutowalkDoor(player, (Scenery) node,endLocation); + } } return true; } diff --git a/Server/src/main/java/core/game/interaction/object/wildyditch/WildernessInterfacePlugin.java b/Server/src/main/java/core/game/interaction/object/wildyditch/WildernessInterfacePlugin.java index 9e52435a4..6fea66824 100644 --- a/Server/src/main/java/core/game/interaction/object/wildyditch/WildernessInterfacePlugin.java +++ b/Server/src/main/java/core/game/interaction/object/wildyditch/WildernessInterfacePlugin.java @@ -3,6 +3,7 @@ package core.game.interaction.object.wildyditch; import core.game.component.Component; import core.game.component.ComponentDefinition; import core.game.component.ComponentPlugin; +import core.game.content.global.action.DoorActionHandler; import core.game.node.entity.impl.ForceMovement; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.audio.Audio; @@ -35,7 +36,10 @@ public final class WildernessInterfacePlugin extends ComponentPlugin { if (button != 18) { return true; } - handleDitch(player); + if (player.getAttribute("wildy_ditch") != null) + handleDitch(player); + else if(player.getAttribute("wildy_gate") != null) + handleGate(player); return true; } @@ -45,9 +49,6 @@ public final class WildernessInterfacePlugin extends ComponentPlugin { */ public static void handleDitch(final Player player) { Scenery ditch = player.getAttribute("wildy_ditch"); - if (ditch == null) { - return; - } player.removeAttribute("wildy_ditch"); Location l = ditch.getLocation(); int x = player.getLocation().getX(); @@ -71,4 +72,15 @@ public final class WildernessInterfacePlugin extends ComponentPlugin { ActivityManager.register(new BountyHunterActivity(CraterType.HIGH_LEVEL)); }*/ } + public static void handleGate(final Player player){ + Scenery gate = player.getAttribute("wildy_gate"); + Location endLocation = player.getAttribute("wildy_gate_loc"); + + // Cleanup + player.removeAttribute("wildy_gate"); + player.removeAttribute("wildy_gate_loc"); + + // Move player through gate/door + DoorActionHandler.handleAutowalkDoor(player,gate,endLocation); + } } From f954ec8fd22969cf5a10cfcc3114f950a707bd75 Mon Sep 17 00:00:00 2001 From: vk Date: Thu, 21 Oct 2021 20:57:29 +0000 Subject: [PATCH 09/10] change 50 kudos diary to 50 quest points --- .../quest/free/shieldofarrav/CuratorHaigHalenDialogue.java | 6 ++++++ .../core/game/node/entity/player/link/diary/DiaryType.java | 2 +- .../game/node/entity/skill/thieving/StallThiefPulse.java | 3 --- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Server/src/main/java/core/game/content/quest/free/shieldofarrav/CuratorHaigHalenDialogue.java b/Server/src/main/java/core/game/content/quest/free/shieldofarrav/CuratorHaigHalenDialogue.java index 33cb116d6..8f9b52b09 100644 --- a/Server/src/main/java/core/game/content/quest/free/shieldofarrav/CuratorHaigHalenDialogue.java +++ b/Server/src/main/java/core/game/content/quest/free/shieldofarrav/CuratorHaigHalenDialogue.java @@ -4,6 +4,7 @@ import core.game.content.dialogue.DialoguePlugin; import core.game.content.dialogue.FacialExpression; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; +import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.item.Item; /** @@ -39,6 +40,11 @@ public final class CuratorHaigHalenDialogue extends DialoguePlugin { public boolean open(Object... args) { npc = (NPC) args[0]; interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Welcome to the museum of Varrock."); + + if (player.getQuestRepository().getPoints() >= 50) { + player.getAchievementDiaryManager().finishTask(player, DiaryType.VARROCK, 0, 12); + } + stage = 0; return true; } diff --git a/Server/src/main/java/core/game/node/entity/player/link/diary/DiaryType.java b/Server/src/main/java/core/game/node/entity/player/link/diary/DiaryType.java index 4d937ebb0..dbda3a106 100644 --- a/Server/src/main/java/core/game/node/entity/player/link/diary/DiaryType.java +++ b/Server/src/main/java/core/game/node/entity/player/link/diary/DiaryType.java @@ -98,7 +98,7 @@ public enum DiaryType { "Spin a bowl on the pottery wheel and fire it in the oven in

Barbarian Village", "Enter Edgeville Dungeon using the entrance to the south of

Edgeville", "Move your player-owned house portal to a different location

using the Varrock estate agent", - "Speak to Haig Halen after obtaining at least 50 kudos", //TODO need to implement kudos + "Speak to Haig Halen after obtaining at least 50 quest points", //TODO need to changes this back to kudos when implemented "Enter the Earth Altar using an earth tiara or talisman", "Have Elsie tell you a story", "Mine some limestone near Paterdomus, the temple to the east

of Varrock", diff --git a/Server/src/main/java/core/game/node/entity/skill/thieving/StallThiefPulse.java b/Server/src/main/java/core/game/node/entity/skill/thieving/StallThiefPulse.java index 65a180905..a50388546 100644 --- a/Server/src/main/java/core/game/node/entity/skill/thieving/StallThiefPulse.java +++ b/Server/src/main/java/core/game/node/entity/skill/thieving/StallThiefPulse.java @@ -99,9 +99,6 @@ public final class StallThiefPulse extends SkillPulse { if (stall == Stall.SILK_STALL) { player.getSavedData().getGlobalData().setSilkSteal(System.currentTimeMillis() + 1800000); } - if (stall == Stall.TEA_STALL && player.getLocation().withinDistance(new Location(3266, 3413, 0))) { - player.getAchievementDiaryManager().finishTask(player,DiaryType.VARROCK,0, 12); - } if (node.isActive()) { SceneryBuilder.replace(((Scenery) node), ((Scenery) node).transform(stall.getEmpty(node.getId())), stall.getDelay()); } From f67605d742df04110f6ea7193c748c74a2021d2c Mon Sep 17 00:00:00 2001 From: vk Date: Thu, 21 Oct 2021 20:58:14 +0000 Subject: [PATCH 10/10] various clue loot fixes --- .../core/game/content/ttrail/ClueLevel.java | 660 +++++++++--------- 1 file changed, 328 insertions(+), 332 deletions(-) diff --git a/Server/src/main/java/core/game/content/ttrail/ClueLevel.java b/Server/src/main/java/core/game/content/ttrail/ClueLevel.java index 9bc32478d..85a8a76b9 100644 --- a/Server/src/main/java/core/game/content/ttrail/ClueLevel.java +++ b/Server/src/main/java/core/game/content/ttrail/ClueLevel.java @@ -8,6 +8,7 @@ import core.game.node.entity.player.Player; import core.game.node.item.ChanceItem; import core.game.node.item.Item; import core.game.node.item.WeightedChanceItem; +import org.rs09.consts.Items; import rs09.game.world.GameWorld; import core.tools.RandomFunction; @@ -25,370 +26,373 @@ import java.util.List; public enum ClueLevel { EASY(new Item(2714), 1 << 16 | 5, - new ChanceItem(2633, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2635, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2637, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2587, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLUE_BERET_2633, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_BERET_2635, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.WHITE_BERET_2637, 1, 1, DropFrequency.UNCOMMON), // black // t - new ChanceItem(2583, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2585, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(3472, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2589, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2595, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_FULL_HELMT_2587, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_PLATEBODY_T_2583, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_PLATELEGS_T_2585, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_PLATESKIRT_T_3472, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_KITESHIELD_T_2589, 1, 1, DropFrequency.UNCOMMON), // black // g - new ChanceItem(2591, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2593, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(3473, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2597, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2631, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_FULL_HELMG_2595, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_PLATEBODY_G_2591, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_PLATELEGS_G_2593, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_PLATESKIRT_G_3473, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_KITESHIELD_G_2597, 1, 1, DropFrequency.UNCOMMON), + //black h helms + new ChanceItem(Items.BLACK_HELM_H1_10306, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_HELM_H2_10308, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_HELM_H3_10310, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_HELM_H4_10312, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_HELM_H5_10314, 1, 1, DropFrequency.UNCOMMON), + //black h shields + new ChanceItem(Items.BLACK_SHIELDH1_7332, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_SHIELDH2_7338, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_SHIELDH3_7344, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_SHIELDH4_7350, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_SHIELDH5_7356, 1, 1, DropFrequency.UNCOMMON), // highway // man // mask - new ChanceItem(7392, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.HIGHWAYMAN_MASK_2631, 1, 1, DropFrequency.UNCOMMON), // wizard t - new ChanceItem(7396, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(7388, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(7390, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.WIZARD_ROBE_T_7392, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.WIZARD_HAT_T_7396, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLUE_SKIRT_T_7388, 1, 1, DropFrequency.UNCOMMON), // wizard // g - new ChanceItem(7386, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(7394, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(7362, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.WIZARD_ROBE_G_7390, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLUE_SKIRT_G_7386, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.WIZARD_HAT_G_7394, 1, 1, DropFrequency.UNCOMMON), // studded // g - new ChanceItem(7366, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(7364, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.STUDDED_BODY_G_7362, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.STUDDED_CHAPS_G_7366, 1, 1, DropFrequency.UNCOMMON), // studded // t - new ChanceItem(7368, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10404, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.STUDDED_BODY_T_7364, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.STUDDED_CHAPS_T_7368, 1, 1, DropFrequency.UNCOMMON), // red // ele // shirt - new ChanceItem(10406, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10424, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10426, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10408, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RED_ELE_SHIRT_10404, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RED_ELE_LEGS_10406, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RED_ELE_BLOUSE_10424, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RED_ELE_SKIRT_10426, 1, 1, DropFrequency.UNCOMMON), // blue // ele // shirt - new ChanceItem(10410, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10428, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10430, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10412, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLUE_ELE_SHIRT_10408, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLUE_ELE_LEGS_10410, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLUE_ELE_BLOUSE_10428, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLUE_ELE_SKIRT_10430, 1, 1, DropFrequency.UNCOMMON), // green // ele // shirt - new ChanceItem(10414, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10432, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10434, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10316, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.GREEN_ELE_SHIRT_10412, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.GREEN_ELE_LEGS_10414, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.GREEN_ELE_BLOUSE_10432, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.GREEN_ELE_SKIRT_10434, 1, 1, DropFrequency.UNCOMMON), // bob // the // cat - new ChanceItem(10318, 1, 1, DropFrequency.RARE), - new ChanceItem(10320, 1, 1, DropFrequency.RARE), - new ChanceItem(10322, 1, 1, DropFrequency.RARE), - new ChanceItem(10324, 1, 1, DropFrequency.RARE), - new ChanceItem(10392, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.BOB_SHIRT_10316, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.BOB_SHIRT_10318, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.BOB_SHIRT_10320, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.BOB_SHIRT_10322, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.BOB_SHIRT_10324, 1, 1, DropFrequency.RARE), // emote // enhancers - new ChanceItem(10394, 1, 1, DropFrequency.RARE), - new ChanceItem(10396, 1, 1, DropFrequency.RARE), - new ChanceItem(10398, 1, 1, DropFrequency.RARE), - new ChanceItem(10366, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10458, 1, 1, DropFrequency.UNCOMMON), - // vestement + new ChanceItem(Items.A_POWDERED_WIG_10392, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.FLARED_TROUSERS_10394, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.PANTALOONS_10396, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.SLEEPING_CAP_10398, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.AMULET_OF_MAGICT_10366, 1, 1, DropFrequency.UNCOMMON), + // vestment // robes(sara, // guthix, // zammy) - new ChanceItem(10464, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10462, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10466, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10460, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10468, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(13095, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.SARADOMIN_ROBE_TOP_10458, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.SARADOMIN_ROBE_LEGS_10464, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.GUTHIX_ROBE_TOP_10462, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.GUTHIX_ROBE_LEGS_10466, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ZAMORAK_ROBE_TOP_10460, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ZAMORAK_ROBE_LEGS_10468, 1, 1, DropFrequency.UNCOMMON), // black // cane - new ChanceItem(13105, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.BLACK_CANE_13095, 1, 1, DropFrequency.UNCOMMON), // spikey // helmet - new ChanceItem(1077, 1, 1, DropFrequency.COMMON), - new ChanceItem(1089, 1, 1, DropFrequency.COMMON), - new ChanceItem(1107, 1, 1, DropFrequency.COMMON), - new ChanceItem(1125, 1, 1, DropFrequency.COMMON), - new ChanceItem(1151, 1, 1, DropFrequency.COMMON), - new ChanceItem(1165, 1, 1, DropFrequency.COMMON), - new ChanceItem(1179, 1, 1, DropFrequency.COMMON), - new ChanceItem(1195, 1, 1, DropFrequency.COMMON), - new ChanceItem(1217, 1, 1, DropFrequency.COMMON), - new ChanceItem(1283, 1, 1, DropFrequency.COMMON), - new ChanceItem(1297, 1, 1, DropFrequency.COMMON), - new ChanceItem(1313, 1, 1, DropFrequency.COMMON), - new ChanceItem(1327, 1, 1, DropFrequency.COMMON), - new ChanceItem(1341, 1, 1, DropFrequency.COMMON), - new ChanceItem(1361, 1, 1, DropFrequency.COMMON), - new ChanceItem(1367, 1, 1, DropFrequency.COMMON), - new ChanceItem(1426, 1, 1, DropFrequency.COMMON), - new ChanceItem(3098, 1, 1, DropFrequency.COMMON), - new ChanceItem(4821, 1, 1, DropFrequency.COMMON), - new ChanceItem(8779, 4, 38, DropFrequency.COMMON), - new ChanceItem(850, 1, 4, DropFrequency.COMMON), - new ChanceItem(334, 4, 19, DropFrequency.COMMON), - new ChanceItem(1169, 1, 1, DropFrequency.COMMON), - new ChanceItem(1059, 1, 1, DropFrequency.COMMON), - new ChanceItem(1061, 1, 1, DropFrequency.COMMON), - new ChanceItem(1063, 1, 1, DropFrequency.COMMON), - new ChanceItem(1095, 1, 1, DropFrequency.COMMON), - new ChanceItem(1129, 1, 1, DropFrequency.COMMON), - new ChanceItem(1167, 1, 1, DropFrequency.COMMON), - new ChanceItem(1131, 1, 1, DropFrequency.COMMON), - new ChanceItem(858, 1, 4, DropFrequency.COMMON), - new ChanceItem(330, 3, 23, DropFrequency.COMMON), - new ChanceItem(1441, 1, 3, DropFrequency.COMMON), - new ChanceItem(1443, 1, 3, DropFrequency.COMMON), - new ChanceItem(1270, 1, 3, DropFrequency.COMMON), - new ChanceItem(1097, 1, 1, DropFrequency.COMMON), - new ChanceItem(1133, 1, 1, DropFrequency.COMMON)), + new ChanceItem(Items.SPIKED_HELMET_13105, 1, 1, DropFrequency.RARE), + //comp bow + new ChanceItem(Items.WILLOW_COMP_BOW_10280, 1, 1, DropFrequency.UNCOMMON), + //other common crap + new ChanceItem(Items.BLACK_PLATELEGS_1077, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_PLATESKIRT_1089, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_CHAINBODY_1107, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_PLATEBODY_1125, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_MED_HELM_1151, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_FULL_HELM_1165, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_SQ_SHIELD_1179, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_KITESHIELD_1195, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_DAGGER_1217, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_SWORD_1283, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_LONGSWORD_1297, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_2H_SWORD_1313, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_SCIMITAR_1327, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_WARHAMMER_1341, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_AXE_1361, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_BATTLEAXE_1367, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_MACE_1426, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_CLAWS_3098, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_NAILS_4821, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.OAK_PLANK_8779, 4, 38, DropFrequency.COMMON), + new ChanceItem(Items.WILLOW_SHORTBOW_850, 1, 4, DropFrequency.COMMON), + new ChanceItem(Items.TROUT_334, 4, 19, DropFrequency.COMMON), + new ChanceItem(Items.COIF_1169, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.LEATHER_GLOVES_1059, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.LEATHER_BOOTS_1061, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.LEATHER_VAMBRACES_1063, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.LEATHER_CHAPS_1095, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.LEATHER_BODY_1129, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.LEATHER_COWL_1167, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.HARDLEATHER_BODY_1131, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.YEW_SHORTBOW_858, 1, 4, DropFrequency.COMMON), + new ChanceItem(Items.SALMON_330, 3, 23, DropFrequency.COMMON), + new ChanceItem(Items.EARTH_TALISMAN_1441, 1, 3, DropFrequency.COMMON), + new ChanceItem(Items.FIRE_TALISMAN_1443, 1, 3, DropFrequency.COMMON), + new ChanceItem(Items.STEEL_PICKAXE_1270, 1, 3, DropFrequency.COMMON), + new ChanceItem(Items.STUDDED_CHAPS_1097, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.STUDDED_BODY_1133, 1, 1, DropFrequency.COMMON)), MEDIUM(new Item(2717), 1 << 16 | 6, - new ChanceItem(2605, 1, 1, DropFrequency.UNCOMMON), // Trimmed // addy // shit - new ChanceItem(2599, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2601, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2603, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(3474, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2613, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2607, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2609, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(3475, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2611, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2579, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2647, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAM_FULL_HELMT_2605, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAM_PLATEBODY_T_2599, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAM_PLATELEGS_T_2601, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAM_KITESHIELD_T_2603, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAM_PLATESKIRT_T_3474, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAM_FULL_HELMG_2613, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAM_PLATEBODY_G_2607, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAM_PLATELEGS_G_2609, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAM_PLATESKIRT_G_3475, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAM_KITESHIELD_G_2611, 1, 1, DropFrequency.UNCOMMON), // Headbands - new ChanceItem(2645, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2649, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2605, 1, 1, DropFrequency.UNCOMMON), - // addy - // trimmed - // shit - new ChanceItem(2599, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2601, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2603, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(3474, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2613, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2607, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2609, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(3475, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2611, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2577, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.BLACK_HEADBAND_2647, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RED_HEADBAND_2645, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BROWN_HEADBAND_2649, 1, 1, DropFrequency.UNCOMMON), // Boots - new ChanceItem(2579, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2647, 1, 1, DropFrequency.UNCOMMON), - // Headbands - new ChanceItem(2645, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2649, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(7319, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RANGER_BOOTS_2577, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.WIZARD_BOOTS_2579, 1, 1, DropFrequency.UNCOMMON), // Boaters - new ChanceItem(7321, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(7323, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(7325, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(7327, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(7372, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RED_BOATER_7319, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ORANGE_BOATER_7321, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.GREEN_BOATER_7323, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLUE_BOATER_7325, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_BOATER_7327, 1, 1, DropFrequency.UNCOMMON), // Trimmed // Dragonhide // shit - new ChanceItem(7380, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(7370, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(7378, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(13103, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(13097, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(13109, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.DHIDE_BODY_T_7372, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.DHIDE_CHAPS_T_7380, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.DHIDE_BODYG_7370, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.DHIDE_CHAPS_G_7378, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.PITH_HELMET_13103, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAMANT_CANE_13097, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.YEW_COMP_BOW_10282, 1, 1, DropFrequency.UNCOMMON), // animal // masks - new ChanceItem(13107, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(13111, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(13113, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(13115, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10364, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.PENGUIN_MASK_13109, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.SHEEP_MASK_13107, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BAT_MASK_13111, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.CAT_MASK_13113, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.WOLF_MASK_13115, 1, 1, DropFrequency.UNCOMMON), // ammy // of // strength // (t) - new ChanceItem(10420, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.STRENGTH_AMULETT_10364, 1, 1, DropFrequency.UNCOMMON), // white ele - new ChanceItem(10422, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10400, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.WHITE_ELE_BLOUSE_10420, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.WHITE_ELE_SKIRT_10422, 1, 1, DropFrequency.UNCOMMON), // black // ele - new ChanceItem(10402, 1, 1, DropFrequency.RARE), - new ChanceItem(10416, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLACK_ELE_SHIRT_10400, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.BLACK_ELE_LEGS_10402, 1, 1, DropFrequency.RARE), // purple // ele - new ChanceItem(10418, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10436, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10438, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10296, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.PURPLE_ELE_SHIRT_10416, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.PURPLE_ELE_LEGS_10418, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.PURPLE_ELE_BLOUSE_10436, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.PURPLE_ELE_SKIRT_10438, 1, 1, DropFrequency.UNCOMMON), // addy // heraldic // helms - new ChanceItem(10298, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10300, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10302, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10304, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10666, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAMANT_HELM_H1_10296, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAMANT_HELM_H2_10298, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAMANT_HELM_H3_10300, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAMANT_HELM_H4_10302, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAMANT_HELM_H5_10304, 1, 1, DropFrequency.UNCOMMON), // addy // heraldic // shield - new ChanceItem(10669, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10672, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10675, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10678, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10446, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAMANT_SHIELDH1_10666, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAMANT_SHIELDH2_10669, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAMANT_SHIELDH3_10672, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAMANT_SHIELDH4_10675, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ADAMANT_SHIELDH5_10678, 1, 1, DropFrequency.UNCOMMON), // cloaks - new ChanceItem(10448, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10450, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(1161, 1, 1, DropFrequency.COMMON), - new ChanceItem(1123, 1, 1, DropFrequency.COMMON), - new ChanceItem(1073, 1, 1, DropFrequency.COMMON), - new ChanceItem(1091, 1, 1, DropFrequency.COMMON), - new ChanceItem(1199, 1, 1, DropFrequency.COMMON), - new ChanceItem(1183, 1, 1, DropFrequency.COMMON), - new ChanceItem(1111, 1, 1, DropFrequency.COMMON), - new ChanceItem(1211, 1, 1, DropFrequency.COMMON), - new ChanceItem(1271, 1, 1, DropFrequency.COMMON), - new ChanceItem(1287, 1, 1, DropFrequency.COMMON), - new ChanceItem(1301, 1, 1, DropFrequency.COMMON), - new ChanceItem(1317, 1, 1, DropFrequency.COMMON), - new ChanceItem(1357, 1, 1, DropFrequency.COMMON), - new ChanceItem(1371, 1, 1, DropFrequency.COMMON), - new ChanceItem(1430, 1, 1, DropFrequency.COMMON), - new ChanceItem(4823, 10, 40, DropFrequency.COMMON), - new ChanceItem(9183, 1, 1, DropFrequency.COMMON), - new ChanceItem(1393, 1, 1, DropFrequency.COMMON), - new ChanceItem(1099, 1, 1, DropFrequency.COMMON), - new ChanceItem(1135, 1, 1, DropFrequency.COMMON), - new ChanceItem(857, 1, 1, DropFrequency.COMMON), - new ChanceItem(8781, 10, 43, DropFrequency.COMMON), - new ChanceItem(374, 6, 23, DropFrequency.COMMON), - new ChanceItem(380, 15, 43, DropFrequency.COMMON), - new ChanceItem(10452, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10454, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10456, 1, 1, DropFrequency.UNCOMMON)), + new ChanceItem(Items.SARADOMIN_CLOAK_10446, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.GUTHIX_CLOAK_10448, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ZAMORAK_CLOAK_10450, 1, 1, DropFrequency.UNCOMMON), + //mitres + new ChanceItem(Items.SARADOMIN_MITRE_10452, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.GUTHIX_MITRE_10454, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ZAMORAK_MITRE_10456, 1, 1, DropFrequency.UNCOMMON), + + new ChanceItem(Items.ADAMANT_FULL_HELM_1161, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.ADAMANT_PLATEBODY_1123, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.ADAMANT_PLATELEGS_1073, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.ADAMANT_PLATESKIRT_1091, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.ADAMANT_KITESHIELD_1199, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.ADAMANT_SQ_SHIELD_1183, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.ADAMANT_CHAINBODY_1111, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.ADAMANT_DAGGER_1211, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.ADAMANT_PICKAXE_1271, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.ADAMANT_SWORD_1287, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.ADAMANT_LONGSWORD_1301, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.ADAMANT_2H_SWORD_1317, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.ADAMANT_AXE_1357, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.ADAMANT_BATTLEAXE_1371, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.ADAMANT_MACE_1430, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.ADAMANTITE_NAILS_4823, 10, 40, DropFrequency.COMMON), + new ChanceItem(Items.ADAMANT_CROSSBOW_9183, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.FIRE_BATTLESTAFF_1393, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.GREEN_DHIDE_CHAPS_1099, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.GREEN_DHIDE_BODY_1135, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.YEW_SHORTBOW_857, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.TEAK_PLANK_8781, 10, 43, DropFrequency.COMMON), + new ChanceItem(Items.SWORDFISH_374, 6, 23, DropFrequency.COMMON), + new ChanceItem(Items.LOBSTER_380, 15, 43, DropFrequency.COMMON)), HARD(new Item(2720), 1 << 16 | 8, - new ChanceItem(13101, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(13099, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10470, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10472, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10474, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10440, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10442, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10444, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2628, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.MAGIC_COMP_BOW_10284, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.TOP_HAT_13101, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_CANE_13099, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.SARADOMIN_STOLE_10470, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.GUTHIX_STOLE_10472, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ZAMORAK_STOLE_10474, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.SARADOMIN_CROZIER_10440, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.GUTHIX_CROZIER_10442, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ZAMORAK_CROZIER_10444, 1, 1, DropFrequency.UNCOMMON), // Trimmed // rune // shit - new ChanceItem(2623, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2625, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2629, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2619, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(3477, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2615, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2617, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2628, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2628, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(3476, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2621, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2673, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_FULL_HELM_T_2627, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_PLATEBODY_T_2623, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_PLATELEGS_T_2625, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_PLATESKIRT_T_3477, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_KITESHIELD_T_2629, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_FULL_HELMG_2619, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_PLATEBODY_G_2615, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_PLATELEGS_G_2617, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_PLATESKIRT_G_3476, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_KITESHIELD_G_2621, 1, 1, DropFrequency.UNCOMMON), // God // armour // shit - new ChanceItem(2669, 1, 1, DropFrequency.RARE), - new ChanceItem(2671, 1, 1, DropFrequency.RARE), - new ChanceItem(3480, 1, 1, DropFrequency.RARE), - new ChanceItem(2675, 1, 1, DropFrequency.RARE), - new ChanceItem(2657, 1, 1, DropFrequency.RARE), - new ChanceItem(2653, 1, 1, DropFrequency.RARE), - new ChanceItem(2655, 1, 1, DropFrequency.RARE), - new ChanceItem(2659, 1, 1, DropFrequency.RARE), - new ChanceItem(2665, 1, 1, DropFrequency.RARE), - new ChanceItem(2661, 1, 1, DropFrequency.RARE), - new ChanceItem(3478, 1, 1, DropFrequency.RARE), - new ChanceItem(2663, 1, 1, DropFrequency.RARE), - new ChanceItem(2667, 1, 1, DropFrequency.RARE), - new ChanceItem(3479, 1, 1, DropFrequency.RARE), - new ChanceItem(10286, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.GUTHIX_FULL_HELM_2673, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.GUTHIX_PLATEBODY_2669, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.GUTHIX_PLATELEGS_2671, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.GUTHIX_PLATESKIRT_3480, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.GUTHIX_KITESHIELD_2675, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.ZAMORAK_FULL_HELM_2657, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.ZAMORAK_PLATEBODY_2653, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.ZAMORAK_PLATELEGS_2655, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.ZAMORAK_PLATESKIRT_3478, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.ZAMORAK_KITESHIELD_2659, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.SARADOMIN_FULL_HELM_2665, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.SARADOMIN_PLATEBODY_2661, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.SARADOMIN_PLATELEGS_2663, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.SARADOMIN_PLATESKIRT_3479, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.SARADOMIN_KITESHIELD_2667, 1, 1, DropFrequency.RARE), // heraldic // shit - new ChanceItem(10667, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10288, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10670, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10290, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10673, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10292, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10676, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10294, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10679, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(7376, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_HELM_H1_10286, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_SHIELDH1_10667, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_HELM_H2_10288, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_SHIELDH2_10670, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_HELM_H3_10290, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_SHIELDH3_10673, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_HELM_H4_10292, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_SHIELDH4_10676, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_HELM_H5_10294, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.RUNE_SHIELDH5_10679, 1, 1, DropFrequency.UNCOMMON), // Blue // dragonhide // trimmed - new ChanceItem(7384, 1, 1, DropFrequency.COMMON), - new ChanceItem(7374, 1, 1, DropFrequency.COMMON), - new ChanceItem(7382, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.DHIDE_BODY_T_7376, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.DHIDE_CHAPS_T_7384, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.DHIDE_BODY_G_7374, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.DHIDE_CHAPS_G_7382, 1, 1, DropFrequency.COMMON), // God // dhide - new ChanceItem(10368, 1, 1, DropFrequency.RARE), - new ChanceItem(10370, 1, 1, DropFrequency.RARE), - new ChanceItem(10372, 1, 1, DropFrequency.RARE), - new ChanceItem(10376, 1, 1, DropFrequency.RARE), - new ChanceItem(10378, 1, 1, DropFrequency.RARE), - new ChanceItem(10380, 1, 1, DropFrequency.RARE), - new ChanceItem(10384, 1, 1, DropFrequency.RARE), - new ChanceItem(10386, 1, 1, DropFrequency.RARE), - new ChanceItem(10388, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.ZAMORAK_COIF_10374, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.ZAMORAK_BRACERS_10368, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.ZAMORAK_DHIDE_10370, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.ZAMORAK_CHAPS_10372, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.GUTHIX_COIF_10382, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.GUTHIX_BRACERS_10376, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.GUTHIX_DRAGONHIDE_10378, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.GUTHIX_CHAPS_10380, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.SARADOMIN_COIF_10390, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.SARADOMIN_BRACERS_10384, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.SARADOMIN_DHIDE_10386, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.SARADOMIN_CHAPS_10388, 1, 1, DropFrequency.RARE), // Hats - new ChanceItem(2651, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2581, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(2639, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.PIRATES_HAT_2651, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ROBIN_HOOD_HAT_2581, 1, 1, DropFrequency.UNCOMMON), // Cavaliers - new ChanceItem(2641, 1, 1, DropFrequency.COMMON), - new ChanceItem(2643, 1, 1, DropFrequency.COMMON), - new ChanceItem(1163, 1, 1, DropFrequency.COMMON), - new ChanceItem(1127, 1, 1, DropFrequency.COMMON), - new ChanceItem(1079, 1, 1, DropFrequency.COMMON), - new ChanceItem(1093, 1, 1, DropFrequency.COMMON), - new ChanceItem(1201, 1, 1, DropFrequency.COMMON), - new ChanceItem(1185, 1, 1, DropFrequency.COMMON), - new ChanceItem(1213, 1, 1, DropFrequency.COMMON), - new ChanceItem(1275, 1, 1, DropFrequency.COMMON), - new ChanceItem(1289, 1, 1, DropFrequency.COMMON), - new ChanceItem(1303, 1, 1, DropFrequency.COMMON), - new ChanceItem(1319, 1, 1, DropFrequency.COMMON), - new ChanceItem(1359, 1, 1, DropFrequency.COMMON), - new ChanceItem(1373, 1, 1, DropFrequency.COMMON), - new ChanceItem(1432, 1, 1, DropFrequency.COMMON), - new ChanceItem(4824, 10, 43, DropFrequency.COMMON), - new ChanceItem(9144, 6, 23, DropFrequency.COMMON), - new ChanceItem(9185, 1, 1, DropFrequency.COMMON), - new ChanceItem(1747, 1, 1, DropFrequency.COMMON), - new ChanceItem(2503, 1, 1, DropFrequency.COMMON), - new ChanceItem(861, 1, 2, DropFrequency.COMMON), - new ChanceItem(859, 1, 2, DropFrequency.COMMON), - new ChanceItem(8783, 6, 27, DropFrequency.COMMON), - new ChanceItem(380, 16, 38, DropFrequency.COMMON), - new ChanceItem(386, 7, 32, DropFrequency.COMMON), - new ChanceItem(10382, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10374, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(10389, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(7398, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(7399, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(7400, 1, 1, DropFrequency.UNCOMMON)), + new ChanceItem(Items.TAN_CAVALIER_2639, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.DARK_CAVALIER_2641, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_CAVALIER_2643, 1, 1, DropFrequency.COMMON), + //rune crap + new ChanceItem(Items.RUNE_FULL_HELM_1163, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.RUNE_PLATEBODY_1127, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.RUNE_PLATELEGS_1079, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.RUNE_PLATESKIRT_1093, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.RUNE_KITESHIELD_1201, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.RUNE_SQ_SHIELD_1185, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.RUNE_DAGGER_1213, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.RUNE_PICKAXE_1275, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.RUNE_SWORD_1289, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.RUNE_LONGSWORD_1303, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.RUNE_2H_SWORD_1319, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.RUNE_AXE_1359, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.RUNE_BATTLEAXE_1373, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.RUNE_MACE_1432, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.RUNE_NAILS_4824, 10, 43, DropFrequency.COMMON), + new ChanceItem(Items.RUNE_BOLTS_9144, 6, 23, DropFrequency.COMMON), + new ChanceItem(Items.RUNE_CROSSBOW_9185, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_DHIDE_CHAPS_2497, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.BLACK_DHIDE_BODY_2503, 1, 1, DropFrequency.COMMON), + new ChanceItem(Items.MAGIC_SHORTBOW_861, 1, 2, DropFrequency.COMMON), + new ChanceItem(Items.MAGIC_LONGBOW_859, 1, 2, DropFrequency.COMMON), + //planks + new ChanceItem(Items.MAHOGANY_PLANK_8783, 6, 27, DropFrequency.COMMON), + //food + new ChanceItem(Items.LOBSTER_380, 16, 38, DropFrequency.COMMON), + new ChanceItem(Items.SHARK_386, 7, 32, DropFrequency.COMMON), + //enchanted robes + new ChanceItem(Items.ENCHANTED_ROBE_7398, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ENCHANTED_TOP_7399, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(Items.ENCHANTED_HAT_7400, 1, 1, DropFrequency.UNCOMMON)), ; @@ -396,37 +400,29 @@ public enum ClueLevel { * The default rewards. */ private static final ChanceItem[] DEFAULT_REWARDS = new ChanceItem[] { - new ChanceItem(995, 500, 7000, DropFrequency.COMMON), - new ChanceItem(10326, 15, 40, DropFrequency.UNCOMMON), - new ChanceItem(7329, 15, 40, DropFrequency.UNCOMMON), - new ChanceItem(7331, 15, 40, DropFrequency.UNCOMMON), - new ChanceItem(7330, 15, 40, DropFrequency.UNCOMMON), - new ChanceItem(10327, 15, 40, DropFrequency.UNCOMMON), - new ChanceItem(10476, 1, 27, DropFrequency.UNCOMMON), - new ChanceItem(556, 1, 228, DropFrequency.COMMON), - new ChanceItem(554, 1, 228, DropFrequency.COMMON), - new ChanceItem(557, 1, 228, DropFrequency.COMMON), - new ChanceItem(557, 1, 228, DropFrequency.COMMON), - new ChanceItem(1694, 1, 1, DropFrequency.RARE), - new ChanceItem(1696, 1, 1, DropFrequency.RARE), - new ChanceItem(1698, 1, 1, DropFrequency.RARE), - new ChanceItem(1700, 1, 1, DropFrequency.RARE), - new ChanceItem(1702, 1, 1, DropFrequency.RARE), - new ChanceItem(847, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(855, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(859, 1, 1, DropFrequency.UNCOMMON), - new ChanceItem(3827, 1, 1, DropFrequency.RARE), - new ChanceItem(3828, 1, 1, DropFrequency.RARE), - new ChanceItem(3829, 1, 1, DropFrequency.RARE), - new ChanceItem(3830, 1, 1, DropFrequency.RARE), - new ChanceItem(3831, 1, 1, DropFrequency.RARE), - new ChanceItem(3832, 1, 1, DropFrequency.RARE), - new ChanceItem(3833, 1, 1, DropFrequency.RARE), - new ChanceItem(3834, 1, 1, DropFrequency.RARE), - new ChanceItem(3835, 1, 1, DropFrequency.RARE), - new ChanceItem(3836, 1, 1, DropFrequency.RARE), - new ChanceItem(3837, 1, 1, DropFrequency.RARE), - new ChanceItem(3838, 1, 1, DropFrequency.RARE) + new ChanceItem(Items.COINS_995, 500, 7000, DropFrequency.COMMON), + new ChanceItem(Items.PURPLE_FIRELIGHTER_10326, 15, 40, DropFrequency.UNCOMMON), + new ChanceItem(Items.RED_FIRELIGHTER_7329, 15, 40, DropFrequency.UNCOMMON), + new ChanceItem(Items.BLUE_FIRELIGHTER_7331, 15, 40, DropFrequency.UNCOMMON), + new ChanceItem(Items.GREEN_FIRELIGHTER_7330, 15, 40, DropFrequency.UNCOMMON), + new ChanceItem(Items.WHITE_FIRELIGHTER_10327, 15, 40, DropFrequency.UNCOMMON), + new ChanceItem(Items.PURPLE_SWEETS_10476, 1, 27, DropFrequency.UNCOMMON), + new ChanceItem(Items.AIR_RUNE_556, 1, 228, DropFrequency.COMMON), + new ChanceItem(Items.FIRE_RUNE_554, 1, 228, DropFrequency.COMMON), + new ChanceItem(Items.EARTH_RUNE_557, 1, 228, DropFrequency.COMMON), + new ChanceItem(Items.WATER_RUNE_555, 1, 228, DropFrequency.COMMON), + new ChanceItem(Items.SARADOMIN_PAGE_1_3827, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.SARADOMIN_PAGE_2_3828, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.SARADOMIN_PAGE_3_3829, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.SARADOMIN_PAGE_4_3830, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.ZAMORAK_PAGE_1_3831, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.ZAMORAK_PAGE_2_3832, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.ZAMORAK_PAGE_3_3833, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.ZAMORAK_PAGE_4_3834, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.GUTHIX_PAGE_1_3835, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.GUTHIX_PAGE_2_3836, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.GUTHIX_PAGE_3_3837, 1, 1, DropFrequency.RARE), + new ChanceItem(Items.GUTHIX_PAGE_4_3838, 1, 1, DropFrequency.RARE) }; /** @@ -434,26 +430,26 @@ public enum ClueLevel { */ private static final WeightedChanceItem[] SUPER_RARE = new WeightedChanceItem[] { //1 Trimmed Glory = 50 = to hit 15% - new WeightedChanceItem(10362, 1, 1, 50), + new WeightedChanceItem(Items.AMULET_OF_GLORYT_10362, 1, 1, 50), //5 Gilded Items = 150 = to hit 9% - new WeightedChanceItem(3486, 1, 1, 30), - new WeightedChanceItem(3481, 1, 1, 30), - new WeightedChanceItem(3483, 1, 1, 30), - new WeightedChanceItem(3485, 1, 1, 30), - new WeightedChanceItem(3488, 1, 1, 30), + new WeightedChanceItem(Items.GILDED_FULL_HELM_3486, 1, 1, 30), + new WeightedChanceItem(Items.GILDED_PLATEBODY_3481, 1, 1, 30), + new WeightedChanceItem(Items.GILDED_PLATELEGS_3483, 1, 1, 30), + new WeightedChanceItem(Items.GILDED_PLATESKIRT_3485, 1, 1, 30), + new WeightedChanceItem(Items.GILDED_KITESHIELD_3488, 1, 1, 30), //12 3rd Age = 120 = to hit 3% - new WeightedChanceItem(10330, 1, 1, 10), - new WeightedChanceItem(10332, 1, 1, 10), - new WeightedChanceItem(10334, 1, 1, 10), - new WeightedChanceItem(10336, 1, 1, 10), - new WeightedChanceItem(10338, 1, 1, 10), - new WeightedChanceItem(10340, 1, 1, 10), - new WeightedChanceItem(10342, 1, 1, 10), - new WeightedChanceItem(10344, 1, 1, 10), - new WeightedChanceItem(10346, 1, 1, 10), - new WeightedChanceItem(10348, 1, 1, 10), - new WeightedChanceItem(10350, 1, 1, 10), - new WeightedChanceItem(10352, 1, 1, 10) }; + new WeightedChanceItem(Items.THIRD_AGE_RANGE_TOP_10330, 1, 1, 10), + new WeightedChanceItem(Items.THIRD_AGE_RANGE_LEGS_10332, 1, 1, 10), + new WeightedChanceItem(Items.THIRD_AGE_RANGE_COIF_10334, 1, 1, 10), + new WeightedChanceItem(Items.THIRD_AGE_VAMBRACES_10336, 1, 1, 10), + new WeightedChanceItem(Items.THIRD_AGE_ROBE_TOP_10338, 1, 1, 10), + new WeightedChanceItem(Items.THIRD_AGE_ROBE_10340, 1, 1, 10), + new WeightedChanceItem(Items.THIRD_AGE_MAGE_HAT_10342, 1, 1, 10), + new WeightedChanceItem(Items.THIRD_AGE_AMULET_10344, 1, 1, 10), + new WeightedChanceItem(Items.THIRD_AGE_PLATELEGS_10346, 1, 1, 10), + new WeightedChanceItem(Items.THIRD_AGE_PLATEBODY_10348, 1, 1, 10), + new WeightedChanceItem(Items.THIRD_AGE_FULL_HELMET_10350, 1, 1, 10), + new WeightedChanceItem(Items.THIRD_AGE_KITESHIELD_10352, 1, 1, 10) }; /** * The casket.