diff --git a/data/activity/event/random/surprise_exam/surprise_exam.npcs.toml b/data/activity/event/random/surprise_exam/surprise_exam.npcs.toml index bf100e9c28..e9a07ec3d6 100644 --- a/data/activity/event/random/surprise_exam/surprise_exam.npcs.toml +++ b/data/activity/event/random/surprise_exam/surprise_exam.npcs.toml @@ -8,6 +8,7 @@ examine = "If the mummy is at school, where are the kids?" [mr_mordau] id = 6117 +interacts = false examine = "Professor of Unnatural History." [zombie_surprise_exam] diff --git a/data/area/asgarnia/falador/falador.npc-spawns.toml b/data/area/asgarnia/falador/falador.npc-spawns.toml index f1ec5568c1..30f9ea3052 100644 --- a/data/area/asgarnia/falador/falador.npc-spawns.toml +++ b/data/area/asgarnia/falador/falador.npc-spawns.toml @@ -47,13 +47,12 @@ spawns = [ { id = "banker_falador", x = 2948, y = 3366, direction = "NORTH" }, { id = "banker_falador", x = 2949, y = 3366, direction = "NORTH" }, { id = "duck_swim", x = 2992, y = 3383 }, - { id = "duck_swim", x = 2977, y = 3357 }, { id = "duck_swim", x = 2981, y = 3358 }, + { id = "duck_swim", x = 2972, y = 3360 }, { id = "duck_grey_walk", x = 2990, y = 3379 }, { id = "drake", x = 2993, y = 3386 }, { id = "duck_grey_swim", x = 2989, y = 3384 }, { id = "duck_grey_swim", x = 2992, y = 3384 }, - { id = "duck_grey_swim", x = 2978, y = 3356 }, { id = "duck_grey_swim", x = 3982, y = 3357 }, { id = "chicken", x = 2966, y = 3346 }, { id = "sir_vyvin", x = 2983, y = 3335, level = 2 }, @@ -64,15 +63,15 @@ spawns = [ { id = "doric", x = 2952, y = 3451 }, { id = "musician_falador", x = 2967, y = 3412, direction = "SOUTH" }, # 12083 - { id = "cow_calf", x = 3031, y = 3312 }, - { id = "cow_calf", x = 3042, y = 3312 }, - { id = "cow_calf", x = 3029, y = 3309 }, - { id = "cow_default", x = 3025, y = 3307 }, - { id = "cow_default", x = 3029, y = 3305 }, - { id = "cow_default", x = 3033, y = 3305 }, - { id = "cow_default", x = 3037, y = 3306 }, + { id = "cow_calf", x = 3031, y = 3311 }, + { id = "cow_calf", x = 3042, y = 3311 }, + { id = "cow_calf", x = 3027, y = 3308 }, + { id = "cow_default", x = 3026, y = 3307 }, + { id = "cow_default", x = 3029, y = 3301 }, + { id = "cow_default", x = 3030, y = 3305 }, + { id = "cow_default", x = 3034, y = 3306 }, { id = "cow_brown", x = 3040, y = 3311 }, - { id = "cow_brown", x = 3030, y = 3300 }, + { id = "cow_brown", x = 3031, y = 3301 }, { id = "cow_light_spots", x = 3029, y = 3311 }, { id = "rat", x = 3015, y = 3295 }, { id = "rat", x = 3019, y = 3296 }, @@ -98,30 +97,27 @@ spawns = [ { id = "captain_korasi_falador_2", x = 2999, y = 3374, members = true }, { id = "jessika_falador_2", x = 2999, y = 3373, members = true }, { id = "idria", x = 2990, y = 3340, members = true }, - { id = "cow_light_spots", x = 3029, y = 3312, members = true }, { id = "highwayman_sinclair_mansion", x = 2988, y = 3419 }, { id = "sir_tiffy_cashien", x = 2997, y = 3373 }, { id = "sarah", x = 3038, y = 3292, members = true }, { id = "sheepdog", x = 3035, y = 3295 }, - { id = "rooster_falador", x = 3018, y = 3287, members = true }, - { id = "chicken_falador", x = 3022, y = 3284, members = true }, - { id = "chicken_falador", x = 3026, y = 3286, members = true }, + { id = "rooster_falador", x = 3014, y = 3292, members = true }, + { id = "chicken_falador", x = 3027, y = 3288, members = true }, { id = "chicken_falador", x = 3029, y = 3286, members = true }, - { id = "chicken_falador_2", x = 3022, y = 3287, members = true }, - { id = "chicken_falador_2", x = 3023, y = 3285, members = true }, - { id = "chicken_falador_2", x = 3023, y = 3289, members = true }, { id = "chicken_falador_2", x = 3031, y = 3286, members = true }, - { id = "chicken_falador_3", x = 3019, y = 3287 }, - { id = "chicken_falador_3", x = 3031, y = 3288 }, + { id = "chicken_falador_2", x = 3019,y = 3285, members = true }, + { id = "chicken_falador_3", x = 3016, y = 3287, members = true }, + { id = "chicken_falador_3", x = 3031, y = 3288, members = true }, + { id = "chicken_falador", x = 3018, y = 3283, members = true }, + { id = "chicken_falador", x = 3016, y = 3294, members = true }, + { id = "chicken_falador_2", x = 3018, y = 3289 , members = true}, + { id = "chicken_falador_2", x = 3018, y = 3295 , members = true}, { id = "elstan", x = 3053, y = 3308 }, { id = "heskel", x = 3001, y = 3373 }, { id = "mysterious_ghost_falador", x = 3053, y = 3378, level = 1, members = true }, { id = "frog_falador", x = 2918, y = 3319 }, { id = "duck_grey_swim", x = 2968, y = 3359 }, - { id = "duck_grey_swim", x = 2974, y = 3359 }, { id = "duck_grey_swim", x = 2976, y = 3359 }, - { id = "duck_grey_swim", x = 2979, y = 3359 }, - { id = "duck_grey_swim", x = 3020, y = 3284 }, { id = "fire_wizard", x = 3003, y = 3266 }, { id = "water_wizard", x = 3000, y = 3266 }, { id = "earth_wizard", x = 3003, y = 3268 }, @@ -192,7 +188,6 @@ spawns = [ { id = "sir_renitee", x = 2981, y = 3341, level = 1, direction = "WEST", members = true }, { id = "garden_supplier", x = 3014, y = 3382 }, { id = "ambassador_spanfipple_falador", x = 2984, y = 3342, level = 1 }, - { id = "duck_swim", x = 3019, y = 3284 }, { id = "rat", x = 3019, y = 3289 }, { id = "rat", x = 3023, y = 3291 }, { id = "wilfred_falador", x = 2959, y = 3415, members = true }, @@ -204,9 +199,6 @@ spawns = [ { id = "sylas_falador", x = 2912, y = 3379, members = true }, { id = "sir_amik_varze_falador", x = 2960, y = 3336, level = 2 }, { id = "ducklings", x = 2975, y = 3359 }, - { id = "ducklings", x = 2977, y = 3359 }, - { id = "ducklings", x = 2980, y = 3359 }, - { id = "ducklings", x = 2982, y = 3358 }, { id = "town_crier_falador", x = 2952, y = 3380, members = true }, { id = "party_pete", x = 3052, y = 3373 }, { id = "megan_falador", x = 3043, y = 3373, level = 1 }, @@ -232,11 +224,12 @@ spawns = [ { id = "baby_squirrel_grey", x = 2955, y = 3276, members = true }, { id = "baby_squirrel_orange", x = 2947, y = 3265, members = true }, { id = "highwayman_falador", x = 3049, y = 3276 }, + { id = "highwayman_falador", x = 3009, y = 3280 }, + { id = "highwayman_falador", x = 3007, y = 3273 }, { id = "tool_leprechaun_miscellania", x = 3056, y = 3310 }, { id = "tool_leprechaun_rimmington", x = 3004, y = 3376, members = true }, { id = "assistant_falador", x = 2996, y = 3451 }, { id = "brother_bordiss_falador", x = 2996, y = 3450, members = true }, - { id = "cow_default", x = 3027, y = 3307 }, { id = "hazelmere_falador", x = 2997, y = 3341, members = true }, { id = "ghommal_falador", x = 2994, y = 3343, members = true }, { id = "harrallak_menarous_falador", x = 2995, y = 3343, members = true }, @@ -268,9 +261,12 @@ spawns = [ { id = "guard_falador_8", x = 2964, y = 3396 }, { id = "guard_falador_8", x = 2965, y = 3398 }, { id = "guard_falador_8", x = 2967, y = 3396 }, - { id = "dog", x = 3022, y = 3288 }, + { id = "dog", x = 3014, y = 3294 }, { id = "gadrin", x = 3021, y = 3339 }, - { id = "pig_2", x = 3017, y = 3307, members = true }, + { id = "pig_3", x = 3015, y = 3307, members = true }, + { id = "pig_4", x = 3017, y = 3309, members = true }, + { id = "piglet_4", x = 3017, y = 3307, members = true }, + { id = "piglet_5", x = 3017, y = 3304, members = true }, # White Knights' Castle { id = "white_knight", x = 2956, y = 3337 }, { id = "white_knight", x = 2962, y = 3338 }, diff --git a/data/area/asgarnia/falador/falador.npcs.toml b/data/area/asgarnia/falador/falador.npcs.toml index 983b8f45e6..3ee285d548 100644 --- a/data/area/asgarnia/falador/falador.npcs.toml +++ b/data/area/asgarnia/falador/falador.npcs.toml @@ -144,24 +144,43 @@ examine = "He rules the, er, roost." [chicken_falador] id = 2313 +clone = "chicken" drop_table = "chicken" combat_def = "chicken" hitpoints = 30 [chicken_falador_2] id = 2314 +clone = "chicken" drop_table = "chicken" combat_def = "chicken" hitpoints = 30 [chicken_falador_3] id = 2315 +clone = "chicken" categories = ["birds"] examine = "Yep. Definitely a chicken." drop_table = "chicken" combat_def = "chicken" hitpoints = 30 +[pig_3] +id = 2316 +examine = "Swine." + +[pig_4] +id = 2317 +examine = "Porker." + +[piglet_4] +id = 2318 +examine = "Hog." + +[piglet_5] +id = 2319 +examine = "I shall call him, Mini Pig." + [elstan] id = 2323 north_patch = "farming_veg_patch_falador_nw" @@ -382,6 +401,7 @@ examine = "A dwarf who looks after the mining guild." [swan_falador] id = 3296 +collision = "sea" examine = "A graceful bird." [zandar_horfyre_falador] diff --git a/data/area/asgarnia/goblin_village/goblin_village.npc-spawns.toml b/data/area/asgarnia/goblin_village/goblin_village.npc-spawns.toml index 026b1fc95e..dd25a12596 100644 --- a/data/area/asgarnia/goblin_village/goblin_village.npc-spawns.toml +++ b/data/area/asgarnia/goblin_village/goblin_village.npc-spawns.toml @@ -25,7 +25,7 @@ spawns = [ { id = "goblin_staff_2_green", x = 2954, y = 3491 }, { id = "goblin_mohawk_staff_green", x = 2954, y = 3503 }, { id = "goblin_mohawk_staff_green", x = 2951, y = 3497 }, - { id = "goblin_mohawk_staff_green", x = 2955, y = 3496, level = 2 }, + { id = "goblin_mohawk_staff_green", x = 2955, y = 3497, level = 2 }, { id = "black_bear", x = 2959, y = 3471 }, { id = "black_bear", x = 2974, y = 3470 }, { id = "monk_of_zamorak_goblin_village", x = 2939, y = 3516, level = 1 }, @@ -42,9 +42,9 @@ spawns = [ { id = "goblin_shield_battleaxe_green", x = 2951, y = 3510, members = true }, { id = "goblin_shield_warhammer_green", x = 2957, y = 3507, members = true }, { id = "goblin_staff_2_green", x = 2956, y = 3499 }, - { id = "goblin_mohawk_staff_green", x = 2950, y = 3496 }, + { id = "goblin_mohawk_staff_green", x = 2950, y = 3498 }, { id = "goblin_mohawk_staff_green", x = 2951, y = 3496 }, - { id = "goblin_mohawk_staff_green", x = 2955, y = 3495, level = 2 }, + { id = "goblin_mohawk_staff_green", x = 2954, y = 3496, level = 2 }, { id = "general_bentnoze_goblin_village", x = 2958, y = 3513, members = true }, { id = "general_wartface_goblin_village", x = 2957, y = 3513 }, { id = "grubfoot_goblin_village", x = 2955, y = 3512, members = true }, diff --git a/data/area/asgarnia/mudskipper_point/mudskipper_point.npcs.toml b/data/area/asgarnia/mudskipper_point/mudskipper_point.npcs.toml index b8df16a7f5..01f4e7c2d8 100644 --- a/data/area/asgarnia/mudskipper_point/mudskipper_point.npcs.toml +++ b/data/area/asgarnia/mudskipper_point/mudskipper_point.npcs.toml @@ -19,24 +19,22 @@ id = 446 clone = "giant_rat_lumbridge_swamp" drop_table = "giant_rat" combat_def = "giant_rat" -hitpoints = 50 +hitpoints = 53 att = 2 str = 3 def = 2 max_hit_stab = 10 -hunt_mode = "cowardly" [giant_rat_mudskipper_point_2] id = 4924 clone = "giant_rat_lumbridge_swamp" drop_table = "giant_rat" combat_def = "giant_rat" -hitpoints = 50 +hitpoints = 53 att = 2 str = 3 def = 2 max_hit_stab = 10 -hunt_mode = "cowardly" [mogre] id = 114 diff --git a/data/area/kandarin/ardougne/sewers/ardougne_sewers.npcs.toml b/data/area/kandarin/ardougne/sewers/ardougne_sewers.npcs.toml index 4f6bb64ce2..f65ea111b8 100644 --- a/data/area/kandarin/ardougne/sewers/ardougne_sewers.npcs.toml +++ b/data/area/kandarin/ardougne/sewers/ardougne_sewers.npcs.toml @@ -62,22 +62,20 @@ id = 4922 clone = "giant_rat_lumbridge_swamp" drop_table = "giant_rat" combat_def = "giant_rat" -hitpoints = 50 +hitpoints = 53 att = 2 str = 3 def = 2 max_hit_stab = 10 -hunt_mode = "cowardly" [giant_rat_ardounge_sewer_stubby] id = 4923 clone = "giant_rat_lumbridge_swamp" drop_table = "giant_rat" combat_def = "giant_rat" -hitpoints = 50 +hitpoints = 53 att = 2 str = 3 def = 2 max_hit_stab = 10 -hunt_mode = "cowardly" diff --git a/data/area/kandarin/tree_gnome_stronghold/grand_tree/grand_tree_tunnels.npc-spawns.toml b/data/area/kandarin/tree_gnome_stronghold/grand_tree/grand_tree_tunnels.npc-spawns.toml index 91a4850d42..09d4741bf9 100644 --- a/data/area/kandarin/tree_gnome_stronghold/grand_tree/grand_tree_tunnels.npc-spawns.toml +++ b/data/area/kandarin/tree_gnome_stronghold/grand_tree/grand_tree_tunnels.npc-spawns.toml @@ -22,12 +22,12 @@ spawns = [ { id = "rat", x = 2489, y = 9866, members = true }, { id = "rat", x = 2488, y = 9861, members = true }, { id = "giant_rat_brimhaven", x = 2450, y = 9912, members = true }, - { id = "giant_rat_wilderness", x = 2450, y = 9903, members = true }, + { id = "giant_rat_dark_injured", x = 2450, y = 9903, members = true }, { id = "giant_rat", x = 2456, y = 9910, members = true }, { id = "giant_rat_brimhaven", x = 2464, y = 9908, members = true }, - { id = "giant_rat_wilderness", x = 2482, y = 9914, members = true }, + { id = "giant_rat_dark_injured", x = 2482, y = 9914, members = true }, { id = "giant_rat", x = 2488, y = 9912, members = true }, { id = "giant_rat_brimhaven", x = 2477, y = 9896, members = true }, { id = "giant_rat", x = 2483, y = 9888, members = true }, - { id = "giant_rat_wilderness", x = 2466, y = 9881, members = true }, + { id = "giant_rat_dark_injured", x = 2466, y = 9881, members = true }, ] \ No newline at end of file diff --git a/data/area/misthalin/draynor/draynor.item-spawns.toml b/data/area/misthalin/draynor/draynor.item-spawns.toml index 285c407096..516ac3ed2b 100644 --- a/data/area/misthalin/draynor/draynor.item-spawns.toml +++ b/data/area/misthalin/draynor/draynor.item-spawns.toml @@ -2,9 +2,10 @@ spawns = [ # 12338 { id = "cheese", x = 3083, y = 3260, delay = 100 }, { id = "tomato", x = 3085, y = 3261, delay = 100 }, +# 12339 + { id = "logs", x = 3089, y = 3265, delay = 100 }, + { id = "logs", x = 3089, y = 3266, delay = 100 }, # 12340 - { id = "logs", x = 3089, y = 3365, delay = 100 }, - { id = "logs", x = 3089, y = 3366, delay = 100 }, { id = "poison", x = 3100, y = 3364, delay = 100 }, { id = "shears", x = 3126, y = 3358, delay = 6 }, { id = "spade", x = 3121, y = 3361, delay = 100 }, diff --git a/data/area/misthalin/draynor/draynor.npc-spawns.toml b/data/area/misthalin/draynor/draynor.npc-spawns.toml index 8fb0eb8a8a..a64ab80a7f 100644 --- a/data/area/misthalin/draynor/draynor.npc-spawns.toml +++ b/data/area/misthalin/draynor/draynor.npc-spawns.toml @@ -86,7 +86,7 @@ spawns = [ { id = "fortunato", x = 3085, y = 3250 }, { id = "wise_old_man_2", x = 3088, y = 3255, members = true }, { id = "gull_draynor", x = 3085, y = 3219, members = true }, - { id = "gull_draynor_2", x = 3079, y = 3229, members = true }, + { id = "gull_draynor_2", x = 3081, y = 3234, members = true }, { id = "rat", x = 3101, y = 3355 }, { id = "ava", x = 3093, y = 3357, members = true }, { id = "scout_draynor", x = 3072, y = 3336, members = true }, @@ -99,7 +99,8 @@ spawns = [ { id = "norman", x = 3111, y = 3219 }, { id = "babe", x = 3112, y = 3220 }, { id = "shady_stranger", x = 3080, y = 3240, members = true }, - { id = "shady_stranger", x = 3099, y = 3263, members = true }, + { id = "shady_stranger", x = 3103, y = 3259, members = true }, + { id = "shady_stranger_2", x = 3077, y = 3255, members = true }, { id = "suspicious_outsider", x = 3097, y = 3253, members = true }, { id = "witch", x = 3099, y = 3370, members = true }, ] \ No newline at end of file diff --git a/data/area/misthalin/draynor/draynor.npcs.toml b/data/area/misthalin/draynor/draynor.npcs.toml index 271e7e20da..25d5126537 100644 --- a/data/area/misthalin/draynor/draynor.npcs.toml +++ b/data/area/misthalin/draynor/draynor.npcs.toml @@ -162,9 +162,13 @@ examine = "He looks as if he could do with a sip of Amontillado." [gull_draynor] id = 450 +collision = "sky" +examine = "A sea bird." [gull_draynor_2] id = 451 +collision = "sky" +examine = "A sea bird." [town_crier_draynor] id = 6136 @@ -183,15 +187,27 @@ examine = "A feisty cat." [norman] id = 8203 +examine = "A strong ox, no bones about it." [babe] id = 8204 +examine = "How can an ox without lungs sneeze like that?" [shady_stranger] id = 8339 hitpoints = 300 combat_def = "man" max_hit_crush = 60 +respawn_delay = 66 +examine = "He seems to be trying to watch everyone at once." +drop_table = "shady_stranger" + +[shady_stranger_2] +id = 8435 +hitpoints = 350 +combat_def = "man" +max_hit_crush = 60 +respawn_delay = 66 examine = "He seems to be trying to watch everyone at once." drop_table = "shady_stranger" @@ -200,6 +216,7 @@ id = 8436 hitpoints = 440 combat_def = "man" max_hit_crush = 60 +respawn_delay = 66 examine = "Haven't seen his sort around here before; what's he doing here?" drop_table = "suspicious_outsider" diff --git a/data/area/misthalin/draynor/draynor.objs.toml b/data/area/misthalin/draynor/draynor.objs.toml index c94eaa81e6..44a6a42da6 100644 --- a/data/area/misthalin/draynor/draynor.objs.toml +++ b/data/area/misthalin/draynor/draynor.objs.toml @@ -29,3 +29,51 @@ id = 14012 [cooking_range_draynor_manor] id = 47633 examine = "It smells of fried fish." + +[trinket_chest] +id = 39242 +examine = "Full of bits and bobs." + +[travelling_box] +id = 39241 +examine = "Full of clothes and collectibles." + +[caravan_draynor] +id = 39237 +examine = "A house on wheels." + +[maggies_cauldron] +id = 39233 +examine = "Something smells...interesting." + +[toy_stall] +id = 5595 +examine = "Diango's Toy Stall." + +[gag_banner] +id = 12110 +examine = "A banner for Group of Advanced Gardeners." + +[aggies_cauldron] +id = 9736 +examine = "Aggie's cooking something, probably best not to think what..." + +[magical_symbol_draynor] +id = 908 +examine = "A magical wall decoration." + +[wardrobe_draynor] +id = 5622 +examine = "I wonder what's inside..." + +[wardrobe_draynor_2] +id = 5623 +examine = "It smells a bit stuffy." + +[wardrobe_draynor_3] +id = 5624 +examine = "It smells funny in there." + +[broom_draynor] +id = 5561 +examine = "Aggie's broomstick." diff --git a/data/area/misthalin/draynor/draynor.patrols.toml b/data/area/misthalin/draynor/draynor.patrols.toml new file mode 100644 index 0000000000..81c14e93ef --- /dev/null +++ b/data/area/misthalin/draynor/draynor.patrols.toml @@ -0,0 +1,15 @@ +[gull_draynor] +points = [ + { x = 3085, y = 3219 }, + { x = 3085, y = 3224 }, + { x = 3080, y = 3224 }, + { x = 3080, y = 3219 }, +] + +[gull_draynor_2] +points = [ + { x = 3081, y = 3234 }, + { x = 3081, y = 3229 }, + { x = 3076, y = 3229 }, + { x = 3076, y = 3234 }, +] diff --git a/data/area/misthalin/edgeville/dungeon/edgeville_dungeon.npc-spawns.toml b/data/area/misthalin/edgeville/dungeon/edgeville_dungeon.npc-spawns.toml index 978dd077e9..285ea84d86 100644 --- a/data/area/misthalin/edgeville/dungeon/edgeville_dungeon.npc-spawns.toml +++ b/data/area/misthalin/edgeville/dungeon/edgeville_dungeon.npc-spawns.toml @@ -22,7 +22,7 @@ spawns = [ { id = "giant_rat", x = 3121, y = 9893 }, { id = "giant_rat_brimhaven", x = 3089, y = 9895 }, { id = "giant_rat_brimhaven", x = 3122, y = 9889 }, - { id = "giant_rat_wilderness", x = 3117, y = 9889 }, + { id = "giant_rat_dark_injured", x = 3117, y = 9889 }, { id = "hobgoblin_unarmed", x = 3122, y = 9874 }, { id = "hobgoblin_unarmed", x = 3126, y = 9875 }, { id = "hobgoblin_armed", x = 3118, y = 9871 }, diff --git a/data/area/misthalin/lumbridge/freds_farm/freds_farm.npc-spawns.toml b/data/area/misthalin/lumbridge/freds_farm/freds_farm.npc-spawns.toml index f324e88a7f..f34c699f87 100644 --- a/data/area/misthalin/lumbridge/freds_farm/freds_farm.npc-spawns.toml +++ b/data/area/misthalin/lumbridge/freds_farm/freds_farm.npc-spawns.toml @@ -49,17 +49,12 @@ spawns = [ { id = "ram_freds_farm_2", x = 3199, y = 3270 }, { id = "ram_freds_farm_3", x = 3195, y = 3265 }, { id = "beefy_bill", x = 3180, y = 3320 }, - { id = "duck_grey_swim", x = 3143, y = 3275 }, - { id = "duckling", x = 3142, y = 3273 }, - { id = "duckling", x = 3145, y = 3270 }, - { id = "duck_swim", x = 3144, y = 3269 }, { id = "black_lamb", x = 3208, y = 3260 }, { id = "larry_farmer", x = 3185, y = 3292, members = true }, - { id = "ducklings", x = 3143, y = 3271 }, - { id = "duck_grey_walk", x = 3137, y = 3274, members = true }, - { id = "duck_grey_walk", x = 3150, y = 3274, members = true }, - { id = "drake", x = 3141, y = 3266 }, - { id = "drake", x = 3146, y = 3279 }, + { id = "goblin_spear_green", x = 3161, y = 3278}, + { id = "goblin_machete_orange", x = 3142, y = 3296 }, + { id = "farmer_2", x = 3149, y = 3276 }, + { id = "farmer", x = 3154, y = 3293 }, { id = "farmer", x = 3193, y = 3323 }, { id = "milk_seller", x = 3189, y = 3293}, ] \ No newline at end of file diff --git a/data/area/misthalin/lumbridge/freds_farm/freds_farm.npcs.toml b/data/area/misthalin/lumbridge/freds_farm/freds_farm.npcs.toml index 6a63653a17..ca0223429f 100644 --- a/data/area/misthalin/lumbridge/freds_farm/freds_farm.npcs.toml +++ b/data/area/misthalin/lumbridge/freds_farm/freds_farm.npcs.toml @@ -38,6 +38,10 @@ id = 5423 id = 7 clone = "farmer_lumbridge" +[farmer_2] +id = 1760 +clone = "farmer_lumbridge" + [hay_bales_2] id = 11625 diff --git a/data/area/misthalin/lumbridge/lumbridge.npc-spawns.toml b/data/area/misthalin/lumbridge/lumbridge.npc-spawns.toml index 5eabb05a8b..7079fe9b0a 100644 --- a/data/area/misthalin/lumbridge/lumbridge.npc-spawns.toml +++ b/data/area/misthalin/lumbridge/lumbridge.npc-spawns.toml @@ -1,10 +1,12 @@ spawns = [ # 12594 - { id = "giant_rat_3", x = 3192, y = 3203 }, + { id = "giant_rat_3", x = 3190, y = 3203 }, { id = "giant_rat_3", x = 3192, y = 3211 }, { id = "giant_rat_4", x = 3197, y = 3202 }, - { id = "giant_rat_3", x = 3194, y = 3201 }, - { id = "giant_rat_4", x = 3192, y = 3208 }, + { id = "giant_rat_3", x = 3193, y = 3203 }, + { id = "giant_rat_4", x = 3194, y = 3201 }, + { id = "giant_rat_5", x = 3194, y = 3211 }, + { id = "giant_rat_5", x = 3192, y = 3208 }, { id = "giant_rat_5", x = 3195, y = 3205 }, { id = "lumbridge_guardsman_attackable", x = 3187, y = 3245 }, { id = "lumbridge_guardsman_attackable2", x = 3192, y = 3207 }, @@ -18,39 +20,60 @@ spawns = [ { id = "sheep_light_5", x = 3197, y = 3263 }, { id = "black_sheep", x = 3195, y = 3263 }, { id = "hank", x = 3195, y = 3254 }, - { id = "giant_spider", x = 3165, y = 3249 }, - { id = "giant_spider", x = 3167, y = 3247 }, - { id = "giant_spider", x = 3170, y = 3248 }, - { id = "giant_spider", x = 3170, y = 3245 }, - { id = "giant_spider", x = 3166, y = 3242 }, - { id = "giant_spider", x = 3162, y = 3225 }, - { id = "giant_spider", x = 3159, y = 3223 }, - { id = "giant_spider", x = 3163, y = 3222 }, + { id = "spider", x = 3162 , y = 3246 }, + { id = "spider", x = 3175 , y = 3248 }, + { id = "spider", x = 3171 , y = 3254 }, + { id = "spider", x = 3156 , y = 3248 }, + { id = "spider", x = 3143 , y = 3241 }, + { id = "spider", x = 3162 , y = 3226 }, + { id = "spider", x = 3157 , y = 3229 }, + { id = "spider", x = 3168 , y = 3222 }, + { id = "spider", x = 3166 , y = 3222 }, + { id = "giant_spider", x = 3164, y = 3242 }, + { id = "giant_spider", x = 3169, y = 3246 }, + { id = "giant_spider", x = 3164, y = 3249 }, + { id = "giant_spider", x = 3170, y = 3250 }, + { id = "giant_spider", x = 3166, y = 3247 }, + { id = "giant_spider", x = 3194, y = 3236 }, + { id = "giant_spider", x = 3200, y = 3238 }, + { id = "giant_spider", x = 3162, y = 3223 }, + { id = "giant_spider", x = 3164, y = 3228 }, + { id = "giant_spider", x = 3165, y = 3223 }, + { id = "giant_spider", x = 3157, y = 3226 }, + { id = "unicorn", x = 3140, y = 3209 }, { id = "rat", x = 3196, y = 3206 }, { id = "rat", x = 3193, y = 3205 }, { id = "rat", x = 3191, y = 3204 }, { id = "rat", x = 3197, y = 3204 }, { id = "goblin_light_grey_bald", x = 3141, y = 3261 }, { id = "goblin_light_grey_bald", x = 3198, y = 3257 }, + { id = "goblin_light_grey_bald", x = 3184, y = 3249 }, + { id = "goblin_light_grey_bald", x = 3184, y = 3259 }, { id = "goblin_turquoise_topless_mohawk", x = 3142, y = 3260 }, - { id = "goblin_turquoise_topless_mohawk", x = 3193, y = 3247 }, + { id = "goblin_turquoise_topless_mohawk", x = 3193, y = 3244 }, + { id = "goblin_turquoise_topless_mohawk", x = 3181, y = 3250 }, { id = "goblin_turquoise_topless_mohawk", x = 3142, y = 3230 }, { id = "goblin_light_brown_bald", x = 3141, y = 3258 }, - { id = "goblin_light_brown_bald", x = 3143, y = 3227 }, - { id = "goblin_light_brown_bald", x = 3194, y = 3248 }, - { id = "goblin_turquoise_grey_ponytail", x = 3145, y = 3229 }, + { id = "goblin_turquoise_grey_ponytail", x = 3143, y = 3234 }, + { id = "goblin_light_brown_bald", x = 3192, y = 3246 }, + { id = "goblin_light_brown_bald", x = 3179, y = 3254 }, + { id = "goblin_light_brown_bald", x = 3144, y = 3228 }, + { id = "goblin_light_brown_mohawk", x = 3184, y = 3252 }, + { id = "goblin_light_brown_mohawk", x = 3187, y = 3243 }, + { id = "goblin_turquoise_grey_ponytail", x = 3181, y = 3248 }, + { id = "goblin_turquoise_grey_ponytail", x = 3181, y = 3254 }, + { id = "goblin_turquoise_grey_ponytail", x = 3184, y = 3254 }, { id = "goblin_light_grey_helmet", x = 3144, y = 3231 }, - { id = "goblin_light_grey_helmet", x = 3185, y = 3246 }, - { id = "goblin_light_grey_helmet", x = 3183, y = 3244 }, - { id = "goblin_light_grey_helmet", x = 3192, y = 3245 }, + { id = "goblin_light_grey_helmet", x = 3182, y = 3252 }, + { id = "goblin_light_grey_helmet", x = 3188, y = 3245 }, { id = "goblin_light_grey_hat", x = 3144, y = 3259 }, { id = "goblin_light_grey_hat", x = 3146, y = 3260 }, - { id = "goblin_light_grey_hat", x = 3144, y = 3233 }, - { id = "goblin_light_grey_hat", x = 3183, y = 3246 }, - { id = "goblin_light_grey_hat", x = 3187, y = 3244 }, - { id = "goblin_light_brown_mohawk", x = 3146, y = 3234 }, - { id = "goblin_light_topless_spiked", x = 3187, y = 3246 }, - { id = "goblin_light_topless_spiked", x = 3185, y = 3244 }, + { id = "goblin_light_grey_hat", x = 3140, y = 3226 }, + { id = "goblin_light_grey_hat", x = 3181, y = 3255 }, + { id = "goblin_light_grey_hat", x = 3185, y = 3246 }, + { id = "goblin_light_brown_mohawk", x = 3140, y = 3230 }, + { id = "goblin_light_topless_spiked", x = 3183, y = 3247 }, + { id = "goblin_light_topless_spiked", x = 3180, y = 3252 }, { id = "goblin_light_grey_bald_spear", x = 3167, y = 3205 }, { id = "goblin_light_grey_bald_spear", x = 3185, y = 3202 }, # 12850 @@ -212,21 +235,23 @@ spawns = [ { id = "crow_2", x = 3260, y = 3317 }, { id = "crow_3", x = 3258, y = 3315 }, { id = "crow_4", x = 3208, y = 3300 }, - { id = "crow_5", x = 3209, y = 3299 }, + { id = "crow_5", x = 3207, y = 3293 }, { id = "goblin_light_grey_bald", x = 3217, y = 3278 }, + { id = "goblin_turquoise_topless_mohawk", x = 3215, y = 3276 }, + { id = "goblin_turquoise_topless_mohawk", x = 3226, y = 3264 }, { id = "gillie_groats", x = 3254, y = 3274 }, { id = "chief_thief_robin_lumbridge", x = 3212, y = 3208, members = true }, { id = "farmer_lumbridge", x = 3233, y = 3308 }, { id = "farmer_lumbridge_3", x = 3262, y = 3325 }, { id = "farmer_lumbridge_2", x = 3250, y = 3310 }, - { id = "crow_4", x = 3208, y = 3301, members = true }, + { id = "crow_4", x = 3204, y = 3298, members = true }, { id = "vasquen", x = 3226, y = 3311 }, { id = "fayeth", x = 3193, y = 3233 }, { id = "tool_leprechaun", x = 3196, y = 3228 }, { id = "dwarf_lumbridge", x = 3224, y = 3286, members = true }, { id = "ham_member_lumbridge", x = 3230, y = 3285, members = true }, { id = "seth_groats_lumbridge", x = 3223, y = 3293, members = true }, - { id = "crow_5", x = 3209, y = 3300, members = true }, + { id = "crow_5", x = 3201, y = 3296, members = true }, { id = "duck_swim", x = 3218, y = 3287 }, { id = "duck_swim", x = 3223, y = 3281 }, { id = "nastroth_lumbridge", x = 3223, y = 3212 }, diff --git a/data/area/misthalin/lumbridge/swamp/lumbridge_swamp.npcs.toml b/data/area/misthalin/lumbridge/swamp/lumbridge_swamp.npcs.toml index 27492598fc..2e863680b7 100644 --- a/data/area/misthalin/lumbridge/swamp/lumbridge_swamp.npcs.toml +++ b/data/area/misthalin/lumbridge/swamp/lumbridge_swamp.npcs.toml @@ -4,13 +4,12 @@ att = 2 str = 3 def = 2 combat_def = "giant_rat" -hitpoints = 50 +hitpoints = 53 slayer_xp = 5.0 respawn_delay = 30 drop_table = "giant_rat" categories = ["giant_rats", "rats"] examine = "Overgrown vermin." -hunt_mode = "cowardly" [fremennik_shipmaster_al_kharid] id = 9708 diff --git a/data/area/misthalin/varrock/varrock.npc-spawns.toml b/data/area/misthalin/varrock/varrock.npc-spawns.toml index c357703e7d..fea7f65de6 100644 --- a/data/area/misthalin/varrock/varrock.npc-spawns.toml +++ b/data/area/misthalin/varrock/varrock.npc-spawns.toml @@ -1,56 +1,29 @@ spawns = [ # 12596 - { id = "duck_swim", x = 3196, y = 3339 }, { id = "duck_swim", x = 3194, y = 3341 }, - { id = "duck_swim", x = 3194, y = 3343 }, { id = "duck_swim", x = 3191, y = 3342 }, { id = "duck_swim", x = 3183, y = 3348 }, { id = "duck_swim", x = 3181, y = 3348 }, - { id = "duck_swim", x = 3170, y = 3347 }, - { id = "duck_swim", x = 3168, y = 3347 }, - { id = "duck_swim", x = 3172, y = 3354 }, - { id = "duck_swim", x = 3171, y = 3355 }, - { id = "duck_swim", x = 3170, y = 3354 }, { id = "duck_swim", x = 3153, y = 3354 }, { id = "duck_swim", x = 3152, y = 3356 }, { id = "duck_swim", x = 3153, y = 3358 }, { id = "duck_swim", x = 3152, y = 3360 }, { id = "duck_swim", x = 3150, y = 3368 }, - { id = "duck_swim", x = 3150, y = 3371 }, { id = "duck_swim", x = 3150, y = 3373 }, - { id = "duck_swim", x = 3148, y = 3372 }, { id = "duck_swim", x = 3146, y = 3382 }, - { id = "duck_swim", x = 3143, y = 3384 }, { id = "duck_swim", x = 3140, y = 3387 }, + { id = "duck_swim", x = 3173, y = 3353 }, + { id = "duck_swim", x = 3162, y = 3350 }, { id = "duck_grey_swim", x = 3152, y = 3386 }, - { id = "duck_grey_swim", x = 3144, y = 3382 }, { id = "duck_grey_swim", x = 3147, y = 3380 }, - { id = "duck_grey_swim", x = 3148, y = 3374 }, { id = "duck_grey_swim", x = 3151, y = 3371 }, - { id = "duck_grey_swim", x = 3150, y = 3370 }, - { id = "duck_grey_swim", x = 3152, y = 3357 }, - { id = "duck_grey_swim", x = 3155, y = 3352 }, - { id = "duck_grey_swim", x = 3169, y = 3355 }, - { id = "duck_grey_swim", x = 3171, y = 3354 }, - { id = "duck_grey_swim", x = 3173, y = 3353 }, - { id = "duck_grey_swim", x = 3173, y = 3351 }, - { id = "duck_grey_swim", x = 3171, y = 3347 }, - { id = "duck_grey_swim", x = 3169, y = 3346 }, + { id = "duck_swim", x = 3152, y = 3357 }, { id = "duck_grey_swim", x = 3167, y = 3346 }, - { id = "duck_grey_swim", x = 3164, y = 3348 }, - { id = "duck_grey_swim", x = 3162, y = 3350 }, - { id = "duck_grey_swim", x = 3161, y = 3351 }, - { id = "cow_calf_2", x = 3159, y = 3340 }, - { id = "cow_calf_2", x = 3164, y = 3338 }, - { id = "cow_calf_3", x = 3159, y = 3335 }, - { id = "cow_calf_3", x = 3167, y = 3337 }, + { id = "farquie", x = 3164, y = 3337 }, { id = "cow_2", x = 3169, y = 3339 }, - { id = "cow_2", x = 3156, y = 3332 }, { id = "cow_brown_2", x = 3156, y = 3343 }, { id = "cow_brown_2", x = 3197, y = 3331 }, { id = "cow_brown_2", x = 3183, y = 3331 }, - { id = "cow_light_spots_2", x = 3155, y = 3337 }, - { id = "cow_light_spots_2", x = 3167, y = 3333 }, { id = "cow_light_spots_2", x = 3180, y = 3338 }, { id = "chicken", x = 3198, y = 3355 }, { id = "chicken", x = 3197, y = 3353 }, diff --git a/data/area/misthalin/varrock/varrock.npcs.toml b/data/area/misthalin/varrock/varrock.npcs.toml index fb08ed836d..45d18e2fa2 100644 --- a/data/area/misthalin/varrock/varrock.npcs.toml +++ b/data/area/misthalin/varrock/varrock.npcs.toml @@ -194,7 +194,7 @@ id = 2091 att = 6 str = 5 def = 2 -hitpoints = 100 +hitpoints = 133 slayer_xp = 10.0 combat_def = "giant_rat" drop_table = "giant_rat" diff --git a/data/area/morytania/meiyerditch/tunnels/meiyerditch_tunnels.npc-spawns.toml b/data/area/morytania/meiyerditch/tunnels/meiyerditch_tunnels.npc-spawns.toml index ede22fd64c..aea9331406 100644 --- a/data/area/morytania/meiyerditch/tunnels/meiyerditch_tunnels.npc-spawns.toml +++ b/data/area/morytania/meiyerditch/tunnels/meiyerditch_tunnels.npc-spawns.toml @@ -22,7 +22,7 @@ spawns = [ { id = "giant_rat", x = 3495, y = 9812, members = true }, { id = "giant_rat", x = 3502, y = 9806, members = true }, { id = "giant_rat_brimhaven", x = 3463, y = 9813, members = true }, - { id = "giant_rat_wilderness", x = 3469, y = 9816, members = true }, + { id = "giant_rat_brimhaven", x = 3469, y = 9816, members = true }, { id = "goblin_light_grey_bald_spear", x = 3465, y = 9797, members = true }, { id = "hobgoblin_unarmed", x = 3469, y = 9797, members = true }, { id = "hobgoblin_armed", x = 3469, y = 9796, members = true }, @@ -83,7 +83,7 @@ spawns = [ { id = "mutated_bloodveld_meiyerditch_tunnels_2", x = 3600, y = 9740 }, { id = "mutated_bloodveld_meiyerditch_tunnels_2", x = 3605, y = 9738 }, { id = "giant_rat", x = 3479, y = 9832 }, - { id = "giant_rat_wilderness_2", x = 3464, y = 9818, members = true }, + { id = "giant_rat_dark_injured", x = 3464, y = 9818, members = true }, { id = "dog", x = 3469, y = 9806 }, { id = "dog", x = 3470, y = 9804 }, ] diff --git a/data/area/wilderness/wilderness.npc-spawns.toml b/data/area/wilderness/wilderness.npc-spawns.toml index bb601f6779..fe495c0510 100644 --- a/data/area/wilderness/wilderness.npc-spawns.toml +++ b/data/area/wilderness/wilderness.npc-spawns.toml @@ -102,10 +102,14 @@ spawns = [ { id = "giant_spider_mid", x = 3168, y = 3877 }, { id = "giant_spider_mid", x = 3177, y = 3877 }, # 12855 - { id = "giant_rat_brimhaven", x = 3227, y = 3547 }, - { id = "giant_rat_brimhaven", x = 3251, y = 3528 }, - { id = "giant_rat_dark_injured", x = 3237, y = 3549 }, + { id = "giant_rat_wilderness", x = 3227, y = 3547 }, + { id = "giant_rat_wilderness", x = 3251, y = 3528 }, + { id = "giant_rat_wilderness", x = 3237, y = 3549 }, { id = "giant_rat_wilderness", x = 3227, y = 3533 }, + { id = "giant_rat_wilderness", x = 3236, y = 3549 }, + { id = "giant_rat_wilderness_2", x = 3242, y = 3530, members = true }, + { id = "giant_rat_wilderness_2", x = 3248, y = 3553, members = true }, + { id = "giant_rat_wilderness_2", x = 3256, y = 3541, members = true }, # 12857 { id = "rat", x = 3251, y = 3677 }, { id = "rat", x = 3252, y = 3676 }, @@ -280,7 +284,6 @@ spawns = [ { id = "hellhound", x = 3186, y = 3913 }, { id = "hellhound", x = 3193, y = 3926 }, { id = "hellhound", x = 3195, y = 3915 }, - { id = "giant_rat_wilderness", x = 3236, y = 3549 }, { id = "black_salamander", x = 3294, y = 3676 }, { id = "black_salamander", x = 3296, y = 3678 }, { id = "black_salamander", x = 3298, y = 3665 }, @@ -366,9 +369,6 @@ spawns = [ { id = "black_demon", x = 3313, y = 3824, members = true }, { id = "black_demon", x = 3314, y = 3814, members = true }, { id = "black_demon", x = 3320, y = 3823, members = true }, - { id = "giant_rat_wilderness_2", x = 3242, y = 3530, members = true }, - { id = "giant_rat_wilderness_2", x = 3248, y = 3553, members = true }, - { id = "giant_rat_wilderness_2", x = 3256, y = 3541, members = true }, { id = "goblin_musician", x = 3140, y = 3642 }, { id = "green_dragon", x = 2982, y = 3618 }, { id = "green_dragon", x = 3118, y = 3820 }, diff --git a/data/area/wilderness/wilderness.npcs.toml b/data/area/wilderness/wilderness.npcs.toml index da7d6957a7..7940e17411 100644 --- a/data/area/wilderness/wilderness.npcs.toml +++ b/data/area/wilderness/wilderness.npcs.toml @@ -104,7 +104,8 @@ combat_def = "giant_rat" drop_table = "giant_rat" categories = ["giant_rats", "rats"] examine = "Overgrown vermin." -hunt_mode = "cowardly" +hunt_mode = "aggressive" +respawn_delay = 30 [black_salamander] id = 5116 @@ -214,7 +215,8 @@ att = 6 str = 5 def = 2 max_hit_stab = 10 -hunt_mode = "cowardly" +hunt_mode = "aggressive" +respawn_delay = 30 [battle_mage_zamorak] id = 912 diff --git a/data/entity/npc/animal/cow/cow.npcs.toml b/data/entity/npc/animal/cow/cow.npcs.toml index bff657588b..1e65a95d16 100644 --- a/data/entity/npc/animal/cow/cow.npcs.toml +++ b/data/entity/npc/animal/cow/cow.npcs.toml @@ -1,6 +1,6 @@ [cow_default] id = 81 -hitpoints = 80 +hitpoints = 107 attack_bonus = -15 combat_def = "cow" immune_poison = true @@ -21,7 +21,7 @@ id = 1767 [cow_calf] id = 2310 -hitpoints = 60 +hitpoints = 69 attack_bonus = -20 combat_def = "cow" slayer_xp = 6.0 diff --git a/data/entity/npc/animal/rat/rat.npcs.toml b/data/entity/npc/animal/rat/rat.npcs.toml index e2d4669e0d..eb7614486f 100644 --- a/data/entity/npc/animal/rat/rat.npcs.toml +++ b/data/entity/npc/animal/rat/rat.npcs.toml @@ -53,44 +53,39 @@ att = 2 str = 3 def = 2 combat_def = "giant_rat" -hitpoints = 50 +hitpoints = 53 slayer_xp = 5.0 respawn_delay = 30 drop_table = "giant_rat" categories = ["giant_rats", "rats"] examine = "Overgrown vermin." -hunt_mode = "cowardly" [giant_rat_2] id = 950 categories = ["giant_rats", "rats"] clone = "giant_rat" -hunt_mode = "cowardly" [giant_rat_3] id = 12349 categories = ["giant_rats", "rats"] clone = "giant_rat" -hunt_mode = "cowardly" [giant_rat_4] id = 4924 categories = ["giant_rats", "rats"] clone = "giant_rat" -hunt_mode = "cowardly" [giant_rat_5] id = 12351 categories = ["giant_rats", "rats"] clone = "giant_rat" -hunt_mode = "cowardly" [giant_rat_dark] id = 8828 att = 6 str = 5 def = 2 -hitpoints = 100 +hitpoints = 133 slayer_xp = 10.0 respawn_delay = 30 combat_def = "giant_rat" diff --git a/data/entity/npc/humanoid/gnomes.npcs.toml b/data/entity/npc/humanoid/gnomes.npcs.toml index bbe8f7c865..7b218d738b 100644 --- a/data/entity/npc/humanoid/gnomes.npcs.toml +++ b/data/entity/npc/humanoid/gnomes.npcs.toml @@ -17,4 +17,9 @@ examine = "He seems to run the cocktail bar." [captain_daerkin] id = 4595 -examine = "A gnome pilot off duty, he looks a bit drunk." \ No newline at end of file +examine = "A gnome pilot off duty, he looks a bit drunk." + +[farquie] +id = 790 +dialogue = "old" +examine = "A gnome who's supposed to be cleaning up a mess." \ No newline at end of file diff --git a/data/entity/npc/monster/goblin/goblin.npcs.toml b/data/entity/npc/monster/goblin/goblin.npcs.toml index bf08fdd352..4598359c92 100644 --- a/data/entity/npc/monster/goblin/goblin.npcs.toml +++ b/data/entity/npc/monster/goblin/goblin.npcs.toml @@ -1,6 +1,6 @@ [goblin_orange_hat_spear] id = 3264 -hitpoints = 120 +hitpoints = 160 att = 3 def = 4 attack_bonus = 12 @@ -41,7 +41,7 @@ examine = "An ugly green creature." [goblin_mohawk_blue] id = 4262 attack_bonus = -21 -hitpoints = 50 +hitpoints = 67 combat_def = "goblin" slayer_xp = 5.0 respawn_delay = 35 @@ -86,6 +86,18 @@ id = 4270 clone = "goblin_mohawk_blue" id = 4271 +[goblin_machete_orange] +id = 444 +dialogue = "old" +clone = "goblin_orange_hat_spear" +large_head = false +examine = "An ugly green creature." + +[goblin_spear_green] +id = 445 +clone = "goblin_orange_hat_spear" +examine = "An ugly green creature." + [goblin_shield_battleaxe_red] id = 4479 clone = "goblin_orange_hat_spear" diff --git a/data/entity/npc/monster/reptile/spider/spider.npcs.toml b/data/entity/npc/monster/reptile/spider/spider.npcs.toml index b163f4514a..a5a3eed8f2 100644 --- a/data/entity/npc/monster/reptile/spider/spider.npcs.toml +++ b/data/entity/npc/monster/reptile/spider/spider.npcs.toml @@ -13,12 +13,10 @@ examine = "Incey wincey." [giant_spider] id = 59 -hitpoints = 50 +hitpoints = 67 attack_bonus = -10 combat_def = "giant_spider" drop_table = "giant_spider" -hunt_mode = "cowardly" -hunt_range = 1 slayer_xp = 5.0 respawn_delay = 45 categories = ["giant_spiders", "spiders"] diff --git a/data/entity/npc/monster/undead/skeleton/skeletons.npcs.toml b/data/entity/npc/monster/undead/skeleton/skeletons.npcs.toml index 9e6637c025..f9e06f9e23 100644 --- a/data/entity/npc/monster/undead/skeleton/skeletons.npcs.toml +++ b/data/entity/npc/monster/undead/skeleton/skeletons.npcs.toml @@ -176,7 +176,6 @@ str = 17 def = 17 combat_def = "skeleton_catacombs" respawn_delay = 3 -hunt_mode = "cowardly" drop_table = "skeleton_catacombs" categories = ["skeletons", "undead"] examine = "The bones of someone who died in Lumbridge long ago." \ No newline at end of file diff --git a/data/entity/npc/monster/undead/skoblin/skoblin.npcs.toml b/data/entity/npc/monster/undead/skoblin/skoblin.npcs.toml index 6508517af7..2098602558 100644 --- a/data/entity/npc/monster/undead/skoblin/skoblin.npcs.toml +++ b/data/entity/npc/monster/undead/skoblin/skoblin.npcs.toml @@ -6,5 +6,4 @@ max_hit_melee = 28 respawn_delay = 3 drop_table = "skoblin" categories = ["skoblin"] -examine = "A skeletal goblin. It looks like the necromancer didn't animate only human bones." -hunt_mode = "cowardly" \ No newline at end of file +examine = "A skeletal goblin. It looks like the necromancer didn't animate only human bones." \ No newline at end of file diff --git a/data/entity/npc/wander_ranges.tables.toml b/data/entity/npc/wander_ranges.tables.toml index 28a6354269..6017f628a4 100644 --- a/data/entity/npc/wander_ranges.tables.toml +++ b/data/entity/npc/wander_ranges.tables.toml @@ -945,9 +945,11 @@ wander_range = 0 wander_range = 6 [.gull_draynor] +wander_range = 0 max_range = 100 [.gull_draynor_2] +wander_range = 0 max_range = 100 [.sanfew] @@ -5247,10 +5249,10 @@ max_range = 6 max_range = 50 [.pig_2] -wander_range = 0 +wander_range = 3 [.piglet] -wander_range = 0 +wander_range = 3 [.piglet_2] wander_range = 3 @@ -5465,6 +5467,9 @@ max_range = 7 #wander_range = 0 #max_range = 0 +[.cow_calf] +wander_range = 4 + [.sheepdog] wander_range = 0 @@ -5480,21 +5485,21 @@ wander_range = 5 [.chicken_falador_3] wander_range = 5 -#[.2316] -#wander_range = 3 -#max_range = 5 +[.pig_3] +wander_range = 3 +max_range = 5 -#[.2317] -#wander_range = 3 -#max_range = 5 +[.pig_4] +wander_range = 3 +max_range = 5 -#[.2318] -#wander_range = 3 -#max_range = 5 +[.piglet_4] +wander_range = 3 +max_range = 5 -#[.2319] -#wander_range = 3 -#max_range = 5 +[.piglet_5] +wander_range = 3 +max_range = 5 [.blandebir_keldagrim] wander_range = 3 @@ -7716,6 +7721,9 @@ wander_range = 2 [.gadrin] wander_range = 2 +[.swan_falador] +wander_range = 5 + #[.3297] #max_range = 50 @@ -32711,16 +32719,16 @@ wander_range = 8 wander_range = 8 [.cow_2] -wander_range = 2 +wander_range = 4 [.cow_brown_2] -wander_range = 2 +wander_range = 4 [.cow_calf_2] -wander_range = 0 +wander_range = 4 [.cow_calf_3] -wander_range = 0 +wander_range = 4 max_range = 16 [.lumbridge_guardsman_attackable] diff --git a/data/quest/members/desert_treasure/shadow_dungeon.npc-spawns.toml b/data/quest/members/desert_treasure/shadow_dungeon.npc-spawns.toml index 47ab11d04a..dab94f76cb 100644 --- a/data/quest/members/desert_treasure/shadow_dungeon.npc-spawns.toml +++ b/data/quest/members/desert_treasure/shadow_dungeon.npc-spawns.toml @@ -13,7 +13,7 @@ spawns = [ { id = "rat", x = 2700, y = 5061, members = true }, { id = "rat", x = 2713, y = 5061, members = true }, { id = "giant_rat", x = 2721, y = 5102, members = true }, - { id = "giant_rat_wilderness", x = 2737, y = 5062, members = true }, + { id = "giant_rat_dark_injured", x = 2737, y = 5062, members = true }, { id = "giant_skeleton_shadow_dungeon", x = 2626, y = 5065, members = true }, { id = "giant_skeleton_shadow_dungeon", x = 2637, y = 5099, members = true }, { id = "giant_skeleton_shadow_dungeon", x = 2638, y = 5058, members = true }, diff --git a/data/skill/summoning/summoning.objs.toml b/data/skill/summoning/summoning.objs.toml index ede2a032a5..51d0372551 100644 --- a/data/skill/summoning/summoning.objs.toml +++ b/data/skill/summoning/summoning.objs.toml @@ -1,3 +1,7 @@ [obelisk] id = 28722 -examine = "Glowing with barely-suppressed energies." \ No newline at end of file +examine = "Glowing with barely-suppressed energies." + +[small_obelisk] +id = 29944 +examine = "Contains traces of summoning energy." \ No newline at end of file diff --git a/data/skill/thieving/pickpocket.tables.toml b/data/skill/thieving/pickpocket.tables.toml index 1b274355ff..b5db53c94b 100644 --- a/data/skill/thieving/pickpocket.tables.toml +++ b/data/skill/thieving/pickpocket.tables.toml @@ -89,6 +89,9 @@ type = "workman" [.farmer] type = "farmer" +[.farmer_2] +type = "farmer" + [.farmer_lumbridge] type = "farmer" diff --git a/engine/src/main/kotlin/world/gregs/voidps/engine/client/instruction/handle/ObjectOptionHandler.kt b/engine/src/main/kotlin/world/gregs/voidps/engine/client/instruction/handle/ObjectOptionHandler.kt index be95045b30..6470167de0 100644 --- a/engine/src/main/kotlin/world/gregs/voidps/engine/client/instruction/handle/ObjectOptionHandler.kt +++ b/engine/src/main/kotlin/world/gregs/voidps/engine/client/instruction/handle/ObjectOptionHandler.kt @@ -1,6 +1,8 @@ package world.gregs.voidps.engine.client.instruction.handle import com.github.michaelbull.logging.InlineLogger +import world.gregs.voidps.cache.Definition +import world.gregs.voidps.cache.definition.Parameterized import world.gregs.voidps.cache.definition.Transforms import world.gregs.voidps.engine.client.instruction.InstructionHandler import world.gregs.voidps.engine.client.ui.closeInterfaces @@ -78,7 +80,7 @@ class ObjectOptionHandler : InstructionHandler() { return variable.values.toInt(value) } - fun > getDefinition(player: Player, definitions: D, definition: T, def: Transforms): T { + fun > getDefinition(player: Player, definitions: D, definition: T, def: Transforms): T where T : Definition, T : Parameterized { val transforms = def.transforms ?: return definition val varbit = def.varbit if (varbit != -1) { diff --git a/engine/src/main/kotlin/world/gregs/voidps/engine/entity/character/mode/Wander.kt b/engine/src/main/kotlin/world/gregs/voidps/engine/entity/character/mode/Wander.kt index 2c0f964bf9..4e0e34fe2e 100644 --- a/engine/src/main/kotlin/world/gregs/voidps/engine/entity/character/mode/Wander.kt +++ b/engine/src/main/kotlin/world/gregs/voidps/engine/entity/character/mode/Wander.kt @@ -23,7 +23,7 @@ class Wander( private var lastTile = Tile.EMPTY override fun tick() { - if (npc.tile == lastTile) { + if (npc.tile != lastTile) { stuckCounter = 0 } else if (stuckCounter++ >= stuckLimit) { npc.tele(spawn) @@ -60,4 +60,4 @@ class Wander( } } } -} +} \ No newline at end of file diff --git a/engine/src/main/kotlin/world/gregs/voidps/engine/entity/character/player/Teleport.kt b/engine/src/main/kotlin/world/gregs/voidps/engine/entity/character/player/Teleport.kt index 38464f6cf3..4ed46e9139 100644 --- a/engine/src/main/kotlin/world/gregs/voidps/engine/entity/character/player/Teleport.kt +++ b/engine/src/main/kotlin/world/gregs/voidps/engine/entity/character/player/Teleport.kt @@ -79,8 +79,33 @@ interface Teleport { } suspend fun takeOff(player: Player, target: GameObject, option: String): Int { - val handler = objectTakeOff["$option:${target.id}"] ?: objectTakeOff["*:${target.id}"] ?: objectTakeOff["$option:*"] ?: objectTakeOff["*:*"] ?: return CONTINUE - return handler.invoke(player, target, option) + var handler = objectTakeOff["$option:${target.id}"] + var result = CONTINUE + if (handler != null) { + result = handler.invoke(player, target, option) + } + if (result != CONTINUE) { + return result + } + handler = objectTakeOff["*:${target.id}"] + if (handler != null) { + result = handler.invoke(player, target, option) + } + if (result != CONTINUE) { + return result + } + handler = objectTakeOff["$option:*"] + if (handler != null) { + result = handler.invoke(player, target, option) + } + if (result != CONTINUE) { + return result + } + handler = objectTakeOff["*:*"] + if (handler != null) { + result = handler.invoke(player, target, option) + } + return result } suspend fun land(player: Player, target: GameObject, option: String) { diff --git a/game/src/main/kotlin/content/area/asgarnia/falador/Highwayman.kt b/game/src/main/kotlin/content/area/asgarnia/falador/Highwayman.kt new file mode 100644 index 0000000000..4e168b2cea --- /dev/null +++ b/game/src/main/kotlin/content/area/asgarnia/falador/Highwayman.kt @@ -0,0 +1,15 @@ +package content.area.asgarnia.falador + +import world.gregs.voidps.engine.Script +import world.gregs.voidps.engine.entity.character.player.Player + +class Highwayman : Script { + + init { + npcCombatStart { target -> + if (id.startsWith("highwayman") && target is Player) { + say("Stand and deliver!") + } + } + } +} diff --git a/game/src/main/kotlin/content/area/kandarin/tree_gnome_stronghold/Farquie.kt b/game/src/main/kotlin/content/area/kandarin/tree_gnome_stronghold/Farquie.kt new file mode 100644 index 0000000000..84cfc4bf24 --- /dev/null +++ b/game/src/main/kotlin/content/area/kandarin/tree_gnome_stronghold/Farquie.kt @@ -0,0 +1,14 @@ +package content.area.kandarin.tree_gnome_stronghold + +import content.entity.player.dialogue.Idle +import content.entity.player.dialogue.type.npc +import world.gregs.voidps.engine.Script + +class Farquie : Script { + + init { + npcOperate("Talk-to", "farquie") { + npc("Everyone has gone away on a honeymoon and left me here to clean up their mess.") + } + } +} diff --git a/game/src/main/kotlin/content/area/misthalin/draynor_village/DraynorGulls.kt b/game/src/main/kotlin/content/area/misthalin/draynor_village/DraynorGulls.kt new file mode 100644 index 0000000000..96a5d74e62 --- /dev/null +++ b/game/src/main/kotlin/content/area/misthalin/draynor_village/DraynorGulls.kt @@ -0,0 +1,26 @@ +package content.area.misthalin.draynor_village + +import world.gregs.voidps.engine.Script +import world.gregs.voidps.engine.data.definition.PatrolDefinitions +import world.gregs.voidps.engine.entity.character.mode.Patrol + +class DraynorGulls(val patrols: PatrolDefinitions) : Script { + + init { + npcSpawn("gull_draynor") { + val patrol = patrols.get("gull_draynor") + if (tile != patrol.waypoints.first().first) { + return@npcSpawn + } + mode = Patrol(this, patrol.waypoints) + } + + npcSpawn("gull_draynor_2") { + val patrol = patrols.get("gull_draynor_2") + if (tile != patrol.waypoints.first().first) { + return@npcSpawn + } + mode = Patrol(this, patrol.waypoints) + } + } +} diff --git a/game/src/main/kotlin/content/area/misthalin/draynor_village/ShadyStranger.kt b/game/src/main/kotlin/content/area/misthalin/draynor_village/ShadyStranger.kt index 8d2c1bc2dd..7f6f3c6b9e 100644 --- a/game/src/main/kotlin/content/area/misthalin/draynor_village/ShadyStranger.kt +++ b/game/src/main/kotlin/content/area/misthalin/draynor_village/ShadyStranger.kt @@ -1,18 +1,69 @@ package content.area.misthalin.draynor_village -import content.entity.player.dialogue.Confused +import content.entity.combat.attackers +import content.entity.combat.damageDealers +import content.entity.effect.clearTransform import content.entity.player.dialogue.Quiz import content.entity.player.dialogue.Shifty import content.entity.player.dialogue.type.npc import content.entity.player.dialogue.type.player import world.gregs.voidps.engine.Script +import world.gregs.voidps.engine.entity.character.mode.EmptyMode +import world.gregs.voidps.engine.entity.character.mode.PauseMode +import world.gregs.voidps.engine.entity.character.npc.NPC +import world.gregs.voidps.engine.entity.character.player.skill.Skill +import world.gregs.voidps.engine.entity.character.sound +import world.gregs.voidps.engine.queue.queue class ShadyStranger : Script { + private val strangers = "shady_stranger,shady_stranger_2,suspicious_outsider" + private val escapeHealth = 100 + init { - npcOperate("Talk-to", "shady_stranger,suspicious_outsider") { (target) -> - player("Hello there. What are you doing here?") - npc("Oh, nothing much. I'd just heard Draynor was a nice place to visit.") - player("Fair enough.") + npcOperate("Talk-to", strangers) { (target) -> + player("Hello, what are you doing here?") + npc("Err, nothing much, I'm just here on business. Heard Draynor's a nice place to visit.") + } + + npcCombatDamage(strangers) { attack -> + if (queue.contains("shady_escape") || attack.damage <= 0) { + return@npcCombatDamage + } + val currentHealth = levels.get(Skill.Constitution) + if (currentHealth > escapeHealth && currentHealth - attack.damage <= escapeHealth) { + set("shady_escape_pending", true) + escape(this) + } + } + + npcCanDie(strangers) { + !get("shady_escape_pending", false) + } + } + + private fun escape(npc: NPC) { + for (attacker in npc.attackers) { + attacker.mode = EmptyMode + } + npc.attackers.clear() + npc.damageDealers.clear() + npc.mode = PauseMode + npc.steps.clear() + npc.clearWatch() + npc.queue("shady_escape") { + npc.say("Uh oh, time to go!") + npc.anim("teleport_modern") + npc.gfx("teleport_modern") + npc.sound("teleport") + npc.delay(3) + npc.queue.clear() + npc.attackers.clear() + npc.damageDealers.clear() + npc.softTimers.stopAll() + npc.clearTransform() + npc.hide = true + clear("shady_escape_pending") + respawn(get("respawn_delay", 66)) } } } diff --git a/game/src/main/kotlin/content/area/misthalin/lumbridge/castle/LumbridgeGuardsmanAttackble.kt b/game/src/main/kotlin/content/area/misthalin/lumbridge/castle/LumbridgeGuardsmanAttackble.kt index b9c0927d42..3b392c1dbd 100644 --- a/game/src/main/kotlin/content/area/misthalin/lumbridge/castle/LumbridgeGuardsmanAttackble.kt +++ b/game/src/main/kotlin/content/area/misthalin/lumbridge/castle/LumbridgeGuardsmanAttackble.kt @@ -10,8 +10,10 @@ import world.gregs.voidps.engine.queue.queue class LumbridgeGuardsmanAttackble : Script { init { + val ratTargets = setOf("giant_rat", "giant_rat_3", "giant_rat_4", "giant_rat_5") + huntNPC("aggressive_npcs") { target -> - if (id == "lumbridge_guardsman_attackable2" && target.id.endsWith("rat")) { + if (id == "lumbridge_guardsman_attackable2" && (target.id.endsWith("rat") || target.id in ratTargets)) { interactNpc(target, "Attack") } if (id == "lumbridge_guardsman_attackable" && target.id.contains("goblin")) { @@ -19,11 +21,11 @@ class LumbridgeGuardsmanAttackble : Script { } } - npcDeath("goblin*,giant_rat") { + npcDeath("goblin*,giant_rat,giant_rat_3,giant_rat_4,giant_rat_5") { val guard = killer as? NPC ?: return@npcDeath when { // Guard attacked rats and giant rats, but only healed when giant rat was killed https://youtu.be/qC_XoAQK6Cs?si=VH9tOmKXu-_Bgjnr&t=137 - id == ("giant_rat") && guard.id == "lumbridge_guardsman_attackable2" -> { + id in ratTargets && guard.id == "lumbridge_guardsman_attackable2" -> { guard.queue("rat_killer") { guard.delay(2) guard.anim("eat_drink") diff --git a/game/src/main/kotlin/content/area/misthalin/lumbridge/farm/Cows.kt b/game/src/main/kotlin/content/area/misthalin/lumbridge/farm/Cows.kt index 2908ce0226..306cb26def 100644 --- a/game/src/main/kotlin/content/area/misthalin/lumbridge/farm/Cows.kt +++ b/game/src/main/kotlin/content/area/misthalin/lumbridge/farm/Cows.kt @@ -6,6 +6,7 @@ import content.quest.questCompleted import world.gregs.voidps.engine.Script import world.gregs.voidps.engine.client.message import world.gregs.voidps.engine.entity.character.mode.EmptyMode +import world.gregs.voidps.engine.entity.character.mode.Wander import world.gregs.voidps.engine.entity.character.player.skill.Skill import world.gregs.voidps.engine.entity.character.player.skill.level.Level import world.gregs.voidps.engine.entity.character.player.skill.level.Level.has @@ -22,15 +23,16 @@ class Cows : Script { } npcTimerStart("eat_grass") { - mode = EmptyMode random.nextInt(50, 200) } npcTimerTick("eat_grass") { - if (mode == EmptyMode) { - say("Moo") - anim("cow_eat_grass") + if (mode != EmptyMode && mode !is Wander) { + return@npcTimerTick Timer.CONTINUE } + mode = EmptyMode + say("Moo") + anim("cow_eat_grass") Timer.CONTINUE } diff --git a/game/src/main/kotlin/content/area/misthalin/lumbridge/farm/FredsFarmGoblin.kt b/game/src/main/kotlin/content/area/misthalin/lumbridge/farm/FredsFarmGoblin.kt new file mode 100644 index 0000000000..c549878137 --- /dev/null +++ b/game/src/main/kotlin/content/area/misthalin/lumbridge/farm/FredsFarmGoblin.kt @@ -0,0 +1,22 @@ +package content.area.misthalin.lumbridge.farm + +import content.entity.player.dialogue.Angry +import content.entity.player.dialogue.type.npc +import world.gregs.voidps.engine.Script +import world.gregs.voidps.engine.client.instruction.handle.interactPlayer +import world.gregs.voidps.engine.entity.character.npc.NPC +import world.gregs.voidps.engine.entity.character.player.Player + +class FredsFarmGoblin : Script { + + init { + npcOperate("Talk-to", "goblin_machete_orange") { (target) -> + talk(target) + } + } + + suspend fun Player.talk(target: NPC) { + npc("I kill you human!") + target.interactPlayer(this, "Attack") + } +} diff --git a/game/src/test/kotlin/content/achievement/LumbridgeBeginnerTasksTest.kt b/game/src/test/kotlin/content/achievement/LumbridgeBeginnerTasksTest.kt index 953509aed8..d9f915474e 100644 --- a/game/src/test/kotlin/content/achievement/LumbridgeBeginnerTasksTest.kt +++ b/game/src/test/kotlin/content/achievement/LumbridgeBeginnerTasksTest.kt @@ -1179,7 +1179,7 @@ internal class LumbridgeBeginnerTasksTest : WorldTest() { skeleton.levels.set(Skill.Constitution, 150) player.npcOption(skeleton, "Attack") - tick(2) + tick(1) player.levels.drain(Skill.Constitution, 5) tick(30) diff --git a/game/src/test/kotlin/content/entity/npc/combat/HuntModeTest.kt b/game/src/test/kotlin/content/entity/npc/combat/HuntModeTest.kt index 1e6da0da01..9d75c0b926 100644 --- a/game/src/test/kotlin/content/entity/npc/combat/HuntModeTest.kt +++ b/game/src/test/kotlin/content/entity/npc/combat/HuntModeTest.kt @@ -25,7 +25,7 @@ internal class HuntModeTest : WorldTest() { @Test fun `Cowardly attack low level player when in range`() { val player = createPlayer(emptyTile) - val npc = createNPC("giant_spider", emptyTile.addY(2)) + val npc = createNPC("highwayman_no_hood", emptyTile.addY(2)) assertFalse(player.underAttack) assertTrue(Settings["world.npcs.aggression", false]) @@ -39,8 +39,8 @@ internal class HuntModeTest : WorldTest() { @Test fun `Cowardly doesn't attack high level player when in range`() { val player = createPlayer(emptyTile) - val npc = createNPC("giant_spider", emptyTile.addY(1)) - player.combatLevel = 5 + val npc = createNPC("highwayman_no_hood", emptyTile.addY(1)) + player.combatLevel = 11 assertFalse(player.underAttack) tick(6) diff --git a/game/src/test/kotlin/content/quest/member/zogre_flesh_eaters/ZogreFleshEatersTest.kt b/game/src/test/kotlin/content/quest/member/zogre_flesh_eaters/ZogreFleshEatersTest.kt index 448ff8c82b..7e67a4111b 100644 --- a/game/src/test/kotlin/content/quest/member/zogre_flesh_eaters/ZogreFleshEatersTest.kt +++ b/game/src/test/kotlin/content/quest/member/zogre_flesh_eaters/ZogreFleshEatersTest.kt @@ -197,7 +197,7 @@ class ZogreFleshEatersTest : WorldTest() { player.tele(2597, 3108, 0) val ladder = GameObjects.find(Tile(2597, 3107), "basic_ladder_bottom") player.objectOption(ladder, "Climb-up") - tick(2) + tick(4) assertEquals(1, player["thzfe_sithik_transformed", 0]) player.tele(2593, 3103, 1)