diff --git a/data/src/scripts/_test/scripts/cheats/cheat_interactions.rs2 b/data/src/scripts/_test/scripts/cheats/cheat_interactions.rs2 index d471a1deef..064aa6f574 100644 --- a/data/src/scripts/_test/scripts/cheats/cheat_interactions.rs2 +++ b/data/src/scripts/_test/scripts/cheats/cheat_interactions.rs2 @@ -85,6 +85,7 @@ mes("Test 1: AP to OP Switching"); npc_add(movecoord(coord, 0, 0, 5), cow, 10); %npc_lastcombat = add(map_clock, 10); npc_setmode(none); +npc_walk(npc_coord); queue(reset_itest, 10); p_delay(2); p_opnpc(2); @@ -93,6 +94,7 @@ p_opnpc(2); mes("Test 2: Blocking an Npc and then unblocking"); npc_add(movecoord(coord, -5, 0, -1), goblin, 10); npc_setmode(none); +npc_walk(npc_coord); npc_walk(movecoord(npc_coord, 10, 0, 0)); p_delay(2); p_walk(movecoord(coord, 0, 0, -1)); @@ -119,6 +121,7 @@ queue(reset_itest, 15); mes("Test 6 (manual): Clicking an Npc then clicking away before reaching"); npc_add(movecoord(coord, 0, 0, 5), goblin, 10); npc_setmode(none); +npc_walk(npc_coord); [proc,clicking_an_obj_then_clicking_away_before_reaching] mes("Test 7 (manual): Clicking an obj then clicking away before reaching"); @@ -179,6 +182,7 @@ queue(reset_itest, 10); mes("Test 16 (manual): Magic Fire Bolt while underneath the Npc"); npc_add(movecoord(coord, 0, 0, 1), goblin, 10); npc_setmode(none); +npc_walk(npc_coord); inv_clear(inv); @@ -194,6 +198,7 @@ p_teleport(movecoord(coord, 0, 0, 1)); mes("Test 17 (manual): Not blocking Npcs when logged in without moving"); npc_add(movecoord(coord, -5, 0, 0), goblin, 10); npc_setmode(none); +npc_walk(npc_coord); npc_walk(movecoord(npc_coord, 10, 0, 0)); queue(reset_itest, 12); @@ -203,6 +208,7 @@ p_delay(12); mes("Test 18 (manual): Npc Modes in action."); npc_add(movecoord(coord, 0, 0, 1), civilian_blonde, 30); npc_setmode(none); +npc_walk(npc_coord); p_opnpc(1); world_delay(0); npc_walk(movecoord(npc_coord, 0, 0, 1)); @@ -239,6 +245,7 @@ queue(reset_itest, 20); mes("Test 21 (manual): Walking and equipping an Obj continues walking while targetting"); npc_add(movecoord(coord, 0, 0, 7), goblin, 20); npc_setmode(none); +npc_walk(npc_coord); inv_clear(inv); inv_add(inv, bronze_axe, 1); @@ -264,6 +271,7 @@ if_settabactive(^tab_wornitems); npc_add(movecoord(coord, 0, 0, 7), goblin, 20); npc_setmode(none); +npc_walk(npc_coord); queue(reset_itest, 20); [proc,walking_and_unequipping_obj_continues_walk] @@ -306,6 +314,7 @@ p_opnpc(2); mes("Test 28: Pathing to an Npc as it does changetype command"); npc_add(movecoord(coord, 0, 0, 10), goblin, 10); npc_setmode(none); +npc_walk(npc_coord); queue(reset_itest, 10); @@ -321,6 +330,7 @@ npc_changetype_keepall(cow, 400); mes("Test 29: Repathing to an Npc on your last waypoint"); npc_add(movecoord(coord, 12, 0, 3), goblin, 20); npc_setmode(none); +npc_walk(npc_coord); queue(reset_itest, 20); @@ -342,6 +352,7 @@ if (loc_find(0_50_50_38_10, loc_1533) = true) { } npc_add(movecoord(coord, 3, 0, 0), goblin, 20); npc_setmode(none); +npc_walk(npc_coord); queue(reset_itest, 20); @@ -394,6 +405,7 @@ if (p_finduid(uid) = true) { mes("Test 33: opnpc to p_walk"); npc_add(movecoord(coord, -1, 0, -1), gnome_cheerleader, 10); npc_setmode(none); +npc_walk(npc_coord); queue(reset_itest, 10); p_delay(1); p_opnpc(1); @@ -402,6 +414,7 @@ p_opnpc(1); mes("Test 34: apnpc to p_walk"); npc_add(movecoord(coord, -1, 0, -1), savage_bird, 10); npc_setmode(none); +npc_walk(npc_coord); queue(reset_itest, 10); p_delay(1); p_opnpc(2); diff --git a/data/src/scripts/areas/area_mage_arena/scripts/kolodion_fight.rs2 b/data/src/scripts/areas/area_mage_arena/scripts/kolodion_fight.rs2 index c411ff67e0..d776b4c1e5 100644 --- a/data/src/scripts/areas/area_mage_arena/scripts/kolodion_fight.rs2 +++ b/data/src/scripts/areas/area_mage_arena/scripts/kolodion_fight.rs2 @@ -29,6 +29,7 @@ if (npc_findhero = ^false) { } %magearena = 2; npc_setmode(none); +npc_walk(npc_coord); npc_anim(human_castteleport, 30); npc_delay(2); @@ -52,6 +53,7 @@ if (npc_findhero = ^false) { } %magearena = 3; npc_setmode(none); +npc_walk(npc_coord); npc_anim(giant_teleport, 30); npc_delay(2); @@ -75,6 +77,7 @@ if (npc_findhero = ^false) { } %magearena = 4; npc_setmode(none); +npc_walk(npc_coord); npc_anim(giantspider_teleport, 30); npc_delay(2); @@ -98,6 +101,7 @@ if (npc_findhero = ^false) { } %magearena = 5; npc_setmode(none); +npc_walk(npc_coord); npc_anim(human_castteleport, 30); npc_delay(2); @@ -124,6 +128,7 @@ npc_delay(0); %magearena = ^mage_arena_complete; npc_delay(1); npc_setmode(none); +npc_walk(npc_coord); npc_anim(demon_portalend, 30); spotanim_map(smokepuff_large, npc_coord, 124, 90); npc_delay(2); diff --git a/data/src/scripts/macro events/scripts/general/macro_event_triffid.rs2 b/data/src/scripts/macro events/scripts/general/macro_event_triffid.rs2 index 3a48f1c628..9c41752151 100644 --- a/data/src/scripts/macro events/scripts/general/macro_event_triffid.rs2 +++ b/data/src/scripts/macro events/scripts/general/macro_event_triffid.rs2 @@ -1,5 +1,6 @@ [proc,macro_event_triffid_spawn] npc_setmode(none); +npc_walk(npc_coord); npc_anim(triffid_grow, 0); %npc_int = ^triffid_growing; %npc_macro_event_target = uid; diff --git a/data/src/scripts/minigames/game_trawler/scripts/murphy_at_sea.rs2 b/data/src/scripts/minigames/game_trawler/scripts/murphy_at_sea.rs2 index 7a836eaccc..1ed20c2870 100644 --- a/data/src/scripts/minigames/game_trawler/scripts/murphy_at_sea.rs2 +++ b/data/src/scripts/minigames/game_trawler/scripts/murphy_at_sea.rs2 @@ -46,6 +46,7 @@ if (~inzone_coord_pair_table(trawler_nonflood_zones, coord) = true) { [label,murphy_cry] npc_setmode(none); +npc_walk(npc_coord); npc_delay(0); npc_anim(emote_cry, 0); npc_delay(1); @@ -53,6 +54,7 @@ npc_setmode(patrol); [label,murphy_cheer] npc_setmode(none); +npc_walk(npc_coord); npc_delay(0); npc_anim(emote_cheer, 0); npc_delay(2); diff --git a/data/src/scripts/quests/quest_arena/scripts/hengrad.rs2 b/data/src/scripts/quests/quest_arena/scripts/hengrad.rs2 index 5f47659ef2..476d694eb2 100644 --- a/data/src/scripts/quests/quest_arena/scripts/hengrad.rs2 +++ b/data/src/scripts/quests/quest_arena/scripts/hengrad.rs2 @@ -19,6 +19,7 @@ if(%arena_progress = ^arena_sent_jail) { // https://youtu.be/NHsQfeSPUb0?si=c_S0jTnjDBF0xilE&t=189 npc_add(0_40_49_26_4, khazard_guard_cutscene, 100); npc_setmode(none); + npc_walk(npc_coord); p_delay(0); // https://youtu.be/Y6eWjQnV4Mo?si=7aaHIhL6qoxCuntZ&t=170 the guard can get stuck at any point, doesnt interrupt anything npc_walk(0_40_49_39_5); diff --git a/data/src/scripts/quests/quest_arena/scripts/jeremy_servil.rs2 b/data/src/scripts/quests/quest_arena/scripts/jeremy_servil.rs2 index bf0e9d7cc6..1cc4ea37a3 100644 --- a/data/src/scripts/quests/quest_arena/scripts/jeremy_servil.rs2 +++ b/data/src/scripts/quests/quest_arena/scripts/jeremy_servil.rs2 @@ -70,6 +70,7 @@ facesquare(movecoord(coord, 0, 0, -16)); // idk if this is how they checked it, maybe there's a bettter way if(npc_getmode ! none & inzone(0_40_49_54_30, 0_40_49_56_34, npc_coord) = true) { npc_setmode(none); + npc_walk(npc_coord); npc_queue(10, $delay, 0); } npc_setmode(null); diff --git a/data/src/scripts/quests/quest_chompybird/scripts/chompy_bird.rs2 b/data/src/scripts/quests/quest_chompybird/scripts/chompy_bird.rs2 index 661e25f87f..2b34e973dc 100644 --- a/data/src/scripts/quests/quest_chompybird/scripts/chompy_bird.rs2 +++ b/data/src/scripts/quests/quest_chompybird/scripts/chompy_bird.rs2 @@ -20,6 +20,7 @@ if (.npc_find(npc_coord, bloated_toad, 2, ^vis_lineofwalk) = true) { npc_sethuntmode(null); npc_setmode(none); + npc_walk(npc_coord); npc_facesquare(.npc_coord); npc_queue(5, 0, 0); .npc_queue(5, 0, 0); diff --git a/data/src/scripts/quests/quest_chompybird/scripts/rantz.rs2 b/data/src/scripts/quests/quest_chompybird/scripts/rantz.rs2 index 4a0e839ff6..35b626bd82 100644 --- a/data/src/scripts/quests/quest_chompybird/scripts/rantz.rs2 +++ b/data/src/scripts/quests/quest_chompybird/scripts/rantz.rs2 @@ -350,6 +350,7 @@ if (.npc_find(npc_coord, chompy_bird, 17, ^vis_lineofsight) = true) { npc_say("Hey, dere's da chompy, I's gonna shoot it."); npc_facesquare(.npc_coord); npc_setmode(none); + npc_walk(npc_coord); npc_queue(11, 0, 2); npc_settimer(calc(10 + (random(6) * 2))); return; diff --git a/data/src/scripts/quests/quest_fluffs/scripts/quest_fluffs.rs2 b/data/src/scripts/quests/quest_fluffs/scripts/quest_fluffs.rs2 index 2dd1868d7b..2a8b0843be 100644 --- a/data/src/scripts/quests/quest_fluffs/scripts/quest_fluffs.rs2 +++ b/data/src/scripts/quests/quest_fluffs/scripts/quest_fluffs.rs2 @@ -230,8 +230,10 @@ if (last_useitem = bucket_milk) { inv_del(inv, gertrudekittens, 1); anim(human_pickupfloor, 0); npc_setmode(none); + npc_walk(npc_coord); .npc_add(coord, lost_kitten, ^max_32bit_int); .npc_setmode(none); + .npc_walk(.npc_coord); p_delay(1); npc_say("Purr..."); p_delay(0); @@ -298,6 +300,7 @@ mes("You can hear kittens mewing close by..."); inv_delslot(inv, last_slot); npc_add(coord, lost_kitten, 10); npc_setmode(none); +npc_walk(npc_coord); p_delay(0); mes("You place the kitten on the floor."); p_delay(0); diff --git a/data/src/scripts/quests/quest_grandtree/scripts/foreman.rs2 b/data/src/scripts/quests/quest_grandtree/scripts/foreman.rs2 index a3c58ec641..5d04e1dbf6 100644 --- a/data/src/scripts/quests/quest_grandtree/scripts/foreman.rs2 +++ b/data/src/scripts/quests/quest_grandtree/scripts/foreman.rs2 @@ -15,6 +15,7 @@ if(inzone(0_46_47_0_0, 0_46_47_32_63, npc_coord) = true) { ~chatnpc("Follow me."); if_close; npc_setmode(none); +npc_walk(npc_coord); p_delay(0); npc_walk(0_46_47_45_40); p_delay(1); diff --git a/data/src/scripts/quests/quest_grandtree/scripts/glough.rs2 b/data/src/scripts/quests/quest_grandtree/scripts/glough.rs2 index eb025d5dab..e68cae97ca 100644 --- a/data/src/scripts/quests/quest_grandtree/scripts/glough.rs2 +++ b/data/src/scripts/quests/quest_grandtree/scripts/glough.rs2 @@ -95,6 +95,7 @@ p_delay(distance($start, coord)); // walking dist + 1 tick ~chatnpc("Bah! Well, soon you'll see, the gnomes are ready to fight, in three weeks this tree will be dead wood, in ten weeks it will be 30 battleships! Finally we will rid the world of the disease called humanity!"); ~chatplayer("What makes you think I'll let you get away with it?"); npc_setmode(none); +npc_walk(npc_coord); ~chatnpcnoturn("Fool...meet my little friend!"); if_close; def_coord $demon_spawn = 0_38_154_47_11; diff --git a/data/src/scripts/quests/quest_grandtree/scripts/king_narnode.rs2 b/data/src/scripts/quests/quest_grandtree/scripts/king_narnode.rs2 index 3d7610f894..b3db61d4ac 100644 --- a/data/src/scripts/quests/quest_grandtree/scripts/king_narnode.rs2 +++ b/data/src/scripts/quests/quest_grandtree/scripts/king_narnode.rs2 @@ -206,6 +206,7 @@ switch_int(%grandtree_progress) { ~chatnpc("Traveller, Can I speak to you in strictest confidence?"); ~chatplayer("Of course sire."); npc_setmode(none); + npc_walk(npc_coord); ~chatnpcnoturn("Not here, follow me."); if_close; def_int $npc_dist = ~total_distance(npc_coord, ^narnode_trapdoor_coord); @@ -244,6 +245,7 @@ switch_int(%grandtree_progress) { [label,king_narnode_back_up] npc_setmode(none); +npc_walk(npc_coord); ~chatnpcnoturn("I'll show you the way back up."); if_close; def_coord $up_coord = movecoord(^narnode_trapdoor_coord, 0, 0, 6400); diff --git a/data/src/scripts/quests/quest_ikov/scripts/ikov_dungeon.rs2 b/data/src/scripts/quests/quest_ikov/scripts/ikov_dungeon.rs2 index 64691cc80b..9c5f23be84 100644 --- a/data/src/scripts/quests/quest_ikov/scripts/ikov_dungeon.rs2 +++ b/data/src/scripts/quests/quest_ikov/scripts/ikov_dungeon.rs2 @@ -190,15 +190,18 @@ if(npc_find(coord, fire_warrior_of_lesarkus, 5, 0) = false) { // will spawn anot sound_synth(fire_teleport, 0, 0); npc_add(0_41_154_22_10, fire_warrior_of_lesarkus, 500); npc_setmode(none); + npc_walk(npc_coord); npc_anim(human_smokepuff_tele_appear, 0); p_delay(1); } npc_setmode(none); +npc_walk(npc_coord); npc_say("You will not pass!"); p_delay(0); npc_say("Amitus! Setitii!"); -npc_setmode(playerface); +npc_facesquare(coord); npc_setmode(none); +npc_walk(npc_coord); npc_anim(human_caststrike, 0); spotanim_npc(fireblast_casting, 92, 0); sound_synth(fire_blast_all, 0, 0); // area sound in osrs, uses fireblast_cast_and_fire diff --git a/data/src/scripts/quests/quest_ikov/scripts/lucien.rs2 b/data/src/scripts/quests/quest_ikov/scripts/lucien.rs2 index c81697b021..7613156306 100644 --- a/data/src/scripts/quests/quest_ikov/scripts/lucien.rs2 +++ b/data/src/scripts/quests/quest_ikov/scripts/lucien.rs2 @@ -109,6 +109,7 @@ if(%ikov_progress <= ^ikov_helping_armadyl) { // guessing... if(npc_findhero = ^true & %ikov_progress = ^ikov_helping_armadyl) { if_close; npc_setmode(none); + npc_walk(npc_coord); queue(queue_defeat_lucien, 0, npc_uid); return; } diff --git a/data/src/scripts/quests/quest_legends/scripts/gujuo.rs2 b/data/src/scripts/quests/quest_legends/scripts/gujuo.rs2 index 896ca2197b..28c0e4f533 100644 --- a/data/src/scripts/quests/quest_legends/scripts/gujuo.rs2 +++ b/data/src/scripts/quests/quest_legends/scripts/gujuo.rs2 @@ -5,6 +5,7 @@ [ai_opplayer2,gujuo] mes("Gujuo approaches."); npc_setmode(none); +npc_walk(npc_coord); @gujuo_start; [opnpcu,gujuo] diff --git a/data/src/scripts/quests/quest_legends/scripts/irvig_senay.rs2 b/data/src/scripts/quests/quest_legends/scripts/irvig_senay.rs2 index 64e6f28408..1da1c4dc20 100644 --- a/data/src/scripts/quests/quest_legends/scripts/irvig_senay.rs2 +++ b/data/src/scripts/quests/quest_legends/scripts/irvig_senay.rs2 @@ -62,6 +62,7 @@ if(finduid(%npc_aggressive_player) = true) { } // doesn't queue, the npc will sit at 0 hp if no prot access npc_setmode(none); + npc_walk(npc_coord); npc_del; if(%legends_progress < ^legends_heart_in_recess & ~obj_gettotal(heartcrystal_sectionb) = 0 & ~obj_gettotal(heartcrystal) = 0 & ~obj_gettotal(heartcrystal_glow) = 0 & testbit(%legends_bits, ^legends_smelting_hunk) = ^false) { diff --git a/data/src/scripts/quests/quest_legends/scripts/nezikchened.rs2 b/data/src/scripts/quests/quest_legends/scripts/nezikchened.rs2 index e881161963..111d41ddaf 100644 --- a/data/src/scripts/quests/quest_legends/scripts/nezikchened.rs2 +++ b/data/src/scripts/quests/quest_legends/scripts/nezikchened.rs2 @@ -174,6 +174,7 @@ if(testbit(%legends_bits, ^legends_defeated_san_final) = ^false) { if(npc_finduid(%aggressive_npc) = true & npc_type = nezikchened) { npc_sethuntmode(null); npc_setmode(none); + npc_walk(npc_coord); p_stopaction; if (inzone(0_43_145_0_0, 0_43_145_63_63, coord) = true & %legends_progress = ^legends_summoned_nezikchened_fire) { %legends_progress = ^legends_defeated_nezikchened_fire; diff --git a/data/src/scripts/quests/quest_legends/scripts/ranalph_devere.rs2 b/data/src/scripts/quests/quest_legends/scripts/ranalph_devere.rs2 index 2f7d6f77da..aeccefad95 100644 --- a/data/src/scripts/quests/quest_legends/scripts/ranalph_devere.rs2 +++ b/data/src/scripts/quests/quest_legends/scripts/ranalph_devere.rs2 @@ -61,6 +61,7 @@ if(finduid(%npc_aggressive_player) = true) { } // doesn't queue, the npc will sit at 0 hp if no prot access npc_setmode(none); + npc_walk(npc_coord); npc_del; if(%legends_progress < ^legends_heart_in_recess & ~obj_gettotal(heartcrystal_sectionc) = 0 & ~obj_gettotal(heartcrystal) = 0 & ~obj_gettotal(heartcrystal_glow) = 0 & testbit(%legends_bits, ^legends_smelting_lump) = ^false) { diff --git a/data/src/scripts/quests/quest_legends/scripts/san_tojalon.rs2 b/data/src/scripts/quests/quest_legends/scripts/san_tojalon.rs2 index e0a1db15a3..b7ada089b4 100644 --- a/data/src/scripts/quests/quest_legends/scripts/san_tojalon.rs2 +++ b/data/src/scripts/quests/quest_legends/scripts/san_tojalon.rs2 @@ -65,6 +65,7 @@ if(finduid(%npc_aggressive_player) = true) { } // doesn't queue, the npc will sit at 0 hp if no prot access npc_setmode(none); + npc_walk(npc_coord); npc_del; if(%legends_progress < ^legends_heart_in_recess & ~obj_gettotal(heartcrystal_sectiona) = 0 & ~obj_gettotal(heartcrystal) = 0 & ~obj_gettotal(heartcrystal_glow) = 0 & testbit(%legends_bits, ^legends_smelting_chunk) = ^false) { diff --git a/data/src/scripts/quests/quest_legends/scripts/ungadulu.rs2 b/data/src/scripts/quests/quest_legends/scripts/ungadulu.rs2 index e804f47840..1084ab16b7 100644 --- a/data/src/scripts/quests/quest_legends/scripts/ungadulu.rs2 +++ b/data/src/scripts/quests/quest_legends/scripts/ungadulu.rs2 @@ -450,6 +450,7 @@ if (last_useitem = book_of_binding) { [ai_queue10,ungadulu] npc_anim(human_death_backwards, 0); // seems like the last frame of this seq is broken... npc_setmode(none); +npc_walk(npc_coord); npc_delay(10); // delay 11t npc_setmode(null); npc_anim(null, 0); diff --git a/data/src/scripts/quests/quest_mcannon/scripts/npcs/dwarfchildtw1.rs2 b/data/src/scripts/quests/quest_mcannon/scripts/npcs/dwarfchildtw1.rs2 index b709f8ebaa..33bc08ebb8 100644 --- a/data/src/scripts/quests/quest_mcannon/scripts/npcs/dwarfchildtw1.rs2 +++ b/data/src/scripts/quests/quest_mcannon/scripts/npcs/dwarfchildtw1.rs2 @@ -15,6 +15,7 @@ if (%mcannon_progress = ^mcannon_tasked_with_finding_gilobs_son) { %mcannon_progress = ^mcannon_return_to_dwarf_commander; } npc_setmode(none); +npc_walk(npc_coord); p_delay(0); npc_facesquare(0_40_153_7_56); npc_queue(10, 0, 0); diff --git a/data/src/scripts/quests/quest_sheepherder/scripts/npcs/diseased_sheep.rs2 b/data/src/scripts/quests/quest_sheepherder/scripts/npcs/diseased_sheep.rs2 index 57339c6bc7..89fbea53de 100644 --- a/data/src/scripts/quests/quest_sheepherder/scripts/npcs/diseased_sheep.rs2 +++ b/data/src/scripts/quests/quest_sheepherder/scripts/npcs/diseased_sheep.rs2 @@ -95,6 +95,7 @@ if (~inzone_coord_pair_table(sheepherder_pen_gate, npc_coord) = true) { npc_add($npc_coord, $npc, 150); npc_facesquare(movecoord(npc_coord, 0, 0, -1)); npc_setmode(none); + npc_walk(npc_coord); %sheepherder_disposal = setbit(%sheepherder_disposal, $npc_start_bit); mes("The sheep obligingly jumps over the gate and into the enclosure."); } diff --git a/data/src/scripts/quests/quest_vampire/scripts/count_draynor.rs2 b/data/src/scripts/quests/quest_vampire/scripts/count_draynor.rs2 index caca72ae29..6ca75e6f81 100644 --- a/data/src/scripts/quests/quest_vampire/scripts/count_draynor.rs2 +++ b/data/src/scripts/quests/quest_vampire/scripts/count_draynor.rs2 @@ -73,6 +73,7 @@ mes("You hammer the stake into the vampire's chest!"); inv_del(inv, stake, 1); anim(human_stake, 0); npc_setmode(none); +npc_walk(npc_coord); npc_queue(4, 0, 0); if (%vampire_progress < ^vampire_complete) { queue(quest_vampire_complete, 3);