diff --git a/scripts/login_logout/login.rs2 b/scripts/login_logout/login.rs2 index cbd12e2a25..d18271cfc3 100644 --- a/scripts/login_logout/login.rs2 +++ b/scripts/login_logout/login.rs2 @@ -77,13 +77,13 @@ if(inzone(movecoord(^grandtree_jail_coord, 0, 0, -2), movecoord(^grandtree_jail_ ~grandtree_spawn_charlie; } +~initalltabs; ~castlewars_login; ~update_all(inv_getobj(worn, ^wearpos_rhand)); cam_reset; if (%tutorial < ^tutorial_complete & ~in_tutorial_island(coord) = true) { @start_tutorial; } -~initalltabs; queue(follower_login, 0, 0); if (map_live = true) { last_login_info; diff --git a/scripts/quests/quest_mm/configs/quest_mm.enum b/scripts/quests/quest_mm/configs/quest_mm.enum index 6f0d68b279..b865438058 100644 --- a/scripts/quests/quest_mm/configs/quest_mm.enum +++ b/scripts/quests/quest_mm/configs/quest_mm.enum @@ -9,3 +9,20 @@ val=5,mm_monkey_greegree_for_normal_monkey val=6,mm_monkey_greegree_for_small_zombie_monkey val=7,mm_monkey_greegree_for_large_zombie_monkey val=8,mm_monkey_greegree_for_ancient_monkey_skull + +[mm_jail_patrol_route] +inputtype=int +outputtype=coord +val=0,0_43_43_16_46 +val=1,0_43_43_18_46 +val=2,0_43_43_20_49 +val=3,0_43_43_20_44 +val=4,0_43_43_19_44 +val=5,0_43_43_20_44 +val=6,0_43_43_20_49 +val=7,0_43_43_20_44 +val=8,0_43_43_19_44 +val=9,0_43_43_20_44 +val=10,0_43_43_20_49 +val=11,0_43_43_18_46 +val=12,0_43_43_16_46 diff --git a/scripts/quests/quest_mm/configs/quest_mm.inv b/scripts/quests/quest_mm/configs/quest_mm.inv index 94ef324eb7..f05c14201c 100644 --- a/scripts/quests/quest_mm/configs/quest_mm.inv +++ b/scripts/quests/quest_mm/configs/quest_mm.inv @@ -6,44 +6,44 @@ size=25 [mm_magic_shop] size=8 -stock0=firerune,1000,10 -stock1=waterrune,1000,10 -stock2=airrune,1000,10 -stock3=earthrune,1000,10 -stock4=lawrune,250,300 -stock5=mm_eye_of_gnome,10,100 -stock6=mm_monkey_dentures,100,100 -stock7=mm_monkey_talisman,50,100 +stock1=firerune,1000,10 +stock2=waterrune,1000,10 +stock3=airrune,1000,10 +stock4=earthrune,1000,10 +stock5=lawrune,250,300 +stock6=mm_eye_of_gnome,10,100 +stock7=mm_monkey_dentures,100,100 +stock8=mm_monkey_talisman,50,100 [mm_scimitar_shop] size=4 -stock0=bronze_scimitar,10,100 -stock1=iron_scimitar,10,200 -stock2=steel_scimitar,8,600 -stock3=mithril_scimitar,6,400 +stock1=bronze_scimitar,10,100 +stock2=iron_scimitar,10,200 +stock3=steel_scimitar,8,600 +stock4=mithril_scimitar,6,400 [mm_food_shop] size=4 -stock0=mm_monkey_nuts,200,100 -stock1=banana,10,1000 -stock2=mm_banana_stew,10,100 -stock3=mm_monkey_bar,20,100 +stock1=mm_monkey_nuts,200,100 +stock2=banana,10,1000 +stock3=mm_banana_stew,10,100 +stock4=mm_monkey_bar,20,100 [mm_crafting_shop] size=8 -stock0=chisel,2,100 -stock1=ring_mould,4,100 -stock2=necklace_mould,2,100 -stock3=mm_monkey_amulet_mould,2,100 -stock4=needle,3,100 -stock5=thread,100,5 -stock6=ball_of_wool,100,5 +stock1=chisel,2,100 +stock2=ring_mould,4,100 +stock3=necklace_mould,2,100 +stock4=mm_monkey_amulet_mould,2,100 +stock5=needle,3,100 +stock6=thread,100,5 +stock7=ball_of_wool,100,5 [mm_general_shop] size=40 -stock0=pot_empty,3,50 -stock1=jug_empty,2,50 -stock2=rope,8,50 -stock3=bucket_empty,2,50 -stock4=tinderbox,2,50 -stock5=hammer,5,50 +stock1=pot_empty,3,50 +stock2=jug_empty,2,50 +stock3=rope,8,50 +stock4=bucket_empty,2,50 +stock5=tinderbox,2,50 +stock6=hammer,5,50 diff --git a/scripts/quests/quest_mm/configs/quest_mm.loc b/scripts/quests/quest_mm/configs/quest_mm.loc index 036fa146b0..9f7d7cdae7 100644 --- a/scripts/quests/quest_mm/configs/quest_mm.loc +++ b/scripts/quests/quest_mm/configs/quest_mm.loc @@ -1043,6 +1043,8 @@ ambient=40 op1=Chop-down op3=hidden mapscene=5 +category=tree +param=next_loc_stage,mm_bush_kharazi_jungle_tree1_stump [mm_bush_kharazi_jungle_tree1_stump] name=Jungle Tree Stump @@ -1059,6 +1061,8 @@ op3=hidden width=2 length=2 mapscene=5 +category=tree +param=next_loc_stage,mm_bush_kharazi_jungle_tree2_stump [mm_bush_kharazi_jungle_tree2_stump] name=Jungle Tree Stump diff --git a/scripts/quests/quest_mm/configs/quest_mm.npc b/scripts/quests/quest_mm/configs/quest_mm.npc index 700eb55c59..a1a190b927 100644 --- a/scripts/quests/quest_mm/configs/quest_mm.npc +++ b/scripts/quests/quest_mm/configs/quest_mm.npc @@ -1570,6 +1570,7 @@ recol1s=15648 recol1d=12037 recol2s=16801 recol2d=26149 +moverestrict=outdoors wanderrange=16 maxrange=16 attack=10 @@ -1601,6 +1602,7 @@ recol1s=15648 recol1d=13949 recol2s=16801 recol2d=31528 +moverestrict=outdoors wanderrange=64 maxrange=64 attack=5 diff --git a/scripts/quests/quest_mm/scripts/aa_monkey_guard.rs2 b/scripts/quests/quest_mm/scripts/aa_monkey_guard.rs2 index 15c5c6fdc5..d4ea4bf269 100644 --- a/scripts/quests/quest_mm/scripts/aa_monkey_guard.rs2 +++ b/scripts/quests/quest_mm/scripts/aa_monkey_guard.rs2 @@ -28,11 +28,16 @@ obj_addall(npc_coord, npc_param(death_drop), 1, ^lootdrop_duration); if(~mm_wearing_greegree = true | %mm_player_is_unconscious = ^true) { npc_del; spotanim_map(smokepuff, npc_coord, 50, 0); + sound_synth(smokepuff, 0, 0); return; } // regular guards dont always knockout, named guards will always knockout -if(npc_type = mm_monkey_guard & random(10) = 0) queue(aa_knockout, 0, 0); -else gosub(npc_default_attack); +if(npc_type ! mm_monkey_guard) { + strongqueue(aa_guard_knockout, 0, 0); +} else { + if(random(10) = 0) strongqueue(aa_guard_knockout, 0, 0); + else gosub(npc_default_attack); +} [ai_opplayer2,mm_religious_guard] @mm_religious_guard_attack; [ai_opplayer2,mm_religious_trapdoor_guard] @mm_religious_guard_attack; @@ -49,3 +54,23 @@ if(npc_stat(hitpoints) <= 30 & random(12) = 0) { return; } gosub(npc_default_attack); + +[queue,aa_guard_knockout] +p_stopaction; +%mm_player_is_unconscious = ^true; +~update_bas; +anim(human_death, 0); +p_delay(2); +~fade_out; +p_delay(2); +~fade_in; +p_teleport(movecoord(0_43_43_18_41, randominc(6), 0, randominc(1))); +walktrigger(wake_up); +~combat_clearqueue; +clearqueue(aa_archer_knockout); +clearqueue(aa_guard_knockout); +clearqueue(aa_jail_knockout); +queue(lumo_jailed_dialogue, 10, 0); +queue(fade_clear, 0, 0); +if(%mm_jail_count < 255) %mm_jail_count = add(%mm_jail_count, 1); +~objbox(steel_scimitar, "You are knocked unconscious by a blow to the head!", 250, 0, 0); \ No newline at end of file diff --git a/scripts/quests/quest_mm/scripts/debug_mm.rs2 b/scripts/quests/quest_mm/scripts/debug_mm.rs2 index 8fa952d924..9d60ffa187 100644 --- a/scripts/quests/quest_mm/scripts/debug_mm.rs2 +++ b/scripts/quests/quest_mm/scripts/debug_mm.rs2 @@ -20,4 +20,4 @@ if(p_finduid(uid) = true) @mm_ch2_cutscene; if(p_finduid(uid) = true) queue(mm_ch3_cutscene, 0, 0); [debugproc,mmch4] -if(p_finduid(uid) = true) @mm_ch2_cutscene; +if(p_finduid(uid) = true) @mm_ch4_cutscene; diff --git a/scripts/quests/quest_mm/scripts/mm_archer.rs2 b/scripts/quests/quest_mm/scripts/mm_archer.rs2 index 7505160f85..a1f1e750c6 100644 --- a/scripts/quests/quest_mm/scripts/mm_archer.rs2 +++ b/scripts/quests/quest_mm/scripts/mm_archer.rs2 @@ -2,23 +2,25 @@ [ai_opplayer2,mm_posted_archer] npc_setmode(applayer2); [ai_applayer2,mm_posted_archer] // archers can not attack you in the long grass or if in monkey form, they will still try to though -if(~mm_wearing_greegree = true | %mm_player_is_unconscious = ^true | loc_find(coord, mm_long_jungle_grass1) = true | loc_find(coord, mm_long_jungle_grass2) = true | loc_find(coord, mm_long_jungle_grass3) = true) { +if(%mm_player_is_unconscious = ^true | loc_find(coord, mm_long_jungle_grass1) = true | loc_find(coord, mm_long_jungle_grass2) = true | loc_find(coord, mm_long_jungle_grass3) = true) { return; } -~npc_rangeattack; +~mm_archer_attack; [ai_queue1,mm_monkey_archer] ~npc_default_retaliate_ap; [ai_opplayer2,mm_monkey_archer] npc_setmode(applayer2); [ai_applayer2,mm_monkey_archer] // archers can not attack you in the long grass or if in monkey form, they will still try to though -if(~mm_wearing_greegree = true | %mm_player_is_unconscious = ^true | loc_find(coord, mm_long_jungle_grass1) = true | loc_find(coord, mm_long_jungle_grass2) = true | loc_find(coord, mm_long_jungle_grass3) = true) { +if(%mm_player_is_unconscious = ^true | loc_find(coord, mm_long_jungle_grass1) = true | loc_find(coord, mm_long_jungle_grass2) = true | loc_find(coord, mm_long_jungle_grass3) = true) { return; } -~npc_rangeattack; +~mm_archer_attack; [ai_queue1,mm_ravine_archer] ~npc_default_retaliate_ap; [ai_opplayer2,mm_ravine_archer] npc_setmode(applayer2); -[ai_applayer2,mm_ravine_archer] +[ai_applayer2,mm_ravine_archer] ~mm_archer_attack; + +[proc,mm_archer_attack] if(~mm_wearing_greegree = true) { return; } @@ -44,11 +46,12 @@ spotanim_npc(npc_param(proj_launch), npc_param(proj_height), 0); %npc_action_delay = add(map_clock, npc_param(attackrate)); def_int $duration = 64; -$duration = ~player_projectile(npc_coord, coord, uid, npc_param(proj_travel), 40, 36, 32, 15, 0, 11, 5); +$duration = ~player_projectile(npc_coord, coord, uid, npc_param(proj_travel), 15, 36, 41, 15, 5, 11, 5); -if(random(20) = 0) { // testing with 1 archer aggroed, it seems like about 1 in every 20 attacks, and its only when the arrow lands - queue(aa_knockout, 0, calc($duration / 30)); +if(npc_type = mm_ravine_archer & %mm_player_is_unconscious = ^false & random(20) = 0) { // testing with 1 archer aggroed, it seems like about 1 in every 20 attacks, and its only when the arrow lands + strongqueue(aa_archer_knockout, 0, calc($duration / 30)); } + if (randominc($attack_roll) > randominc($defence_roll)) { ~playerhit_n_ranged(true, randominc($maxhit), $duration, npc_param(attackrate)); ~npc_poison_player; @@ -60,7 +63,7 @@ if (randominc($attack_roll) > randominc($defence_roll)) { %mm_player_is_unconscious = ^false; anim(null, 0); -[queue,aa_knockout] +[queue,aa_archer_knockout] p_stopaction; %mm_player_is_unconscious = ^true; ~update_bas; @@ -68,13 +71,27 @@ anim(human_death, 0); p_delay(2); ~fade_out; p_delay(3); +p_teleport(movecoord(0_43_43_18_41, randominc(6), 0, randominc(1))); walktrigger(wake_up); ~combat_clearqueue; -clearqueue(aa_knockout); +clearqueue(aa_archer_knockout); +clearqueue(aa_guard_knockout); clearqueue(aa_jail_knockout); -p_teleport(movecoord(0_43_43_18_41, randominc(6), 0, randominc(1))); queue(lumo_jailed_dialogue, 10, 0); +if(%mm_jail_count < 255) %mm_jail_count = add(%mm_jail_count, 1); ~fade_in; p_delay(4); -if(%mm_jail_count < 255) %mm_jail_count = add(%mm_jail_count, 1); +def_int $severity = ~random_range(10, 20); +if(random(10) = 0) { // seems random originally? only have one video of it: youtube.com/watch?si=-n3GpFUbwPR5L3PB&t=32&v=YGXz6CqRqig&feature=youtu.be + // assume the severity should be the same as the rest of the ape atoll stuff, maybe thats why it doesnt happen everytime? + // its not wrapped in the antipsn check, the player in the video is antipoisoned (same behaviour as osrs in this case) + if (%poison > -1) { + if (%poison > $severity) { + mes("You have been poisoned!"); + ~set_poison_timer; + %poison = $severity; + } + } + ~objbox(iron_arrow_p, "You have been hit by poisoned arrows and knocked out!", 250, 0, 0); +} if_openoverlay(null); diff --git a/scripts/quests/quest_mm/scripts/mm_awowogei.rs2 b/scripts/quests/quest_mm/scripts/mm_awowogei.rs2 index 45828bc1f4..9260cc6b56 100644 --- a/scripts/quests/quest_mm/scripts/mm_awowogei.rs2 +++ b/scripts/quests/quest_mm/scripts/mm_awowogei.rs2 @@ -77,7 +77,7 @@ switch_int(%mm_awowogei) { facesquare(loc_coord); ~chatnpc_specific(nc_name(mm_awowogei_cutscene), mm_awowogei_cutscene, "
I must admit, I have always regarded your kind as our inferior cousins, visitor."); ~chatnpc_specific(nc_name(mm_awowogei_cutscene), mm_awowogei_cutscene, "
However, I am well aware that you may have a few things to offer."); - ~chatnpc("
Don't listen to him, Awowogei!"); + ~chatnpc("
Don't listen to him Awowogei!"); facesquare(loc_coord); ~chatnpc_specific(nc_name(mm_awowogei_cutscene), mm_awowogei_cutscene, "
Be silent, Uwogo."); ~chatnpc_specific(nc_name(mm_awowogei_cutscene), mm_awowogei_cutscene, "
I have heard your kind are exceptionally resourceful. I wish to put this reputation to the test."); @@ -87,6 +87,7 @@ switch_int(%mm_awowogei) { ~chatnpc_specific(nc_name(mm_awowogei_cutscene), mm_awowogei_cutscene, "
There are several of your kind kept captive there. I challenge you to free one and return it to me."); ~chatplayer("
How am I meant to free one of them?"); ~chatnpc_specific(nc_name(mm_awowogei_cutscene), mm_awowogei_cutscene, "
This is for you to decide, visitor."); + // https://youtu.be/CrIK9wa_6j0?si=TP_5XVR8Ap397MAf&t=1820 ~chatplayer("
Very well. I will be back later, with one of the captives."); } } @@ -110,3 +111,5 @@ loc_anim(m_monkey_ape_ruler_nod); ~chatplayer("
Thank you."); ~chatnpc_specific(nc_name(mm_awowogei_cutscene), mm_awowogei_cutscene, "
You are clearly well acquainted with the ways of this world. We will talk more on this later."); ~chatnpc_specific(nc_name(mm_awowogei_cutscene), mm_awowogei_cutscene, "
In the meantime, feel free to remain as long as you like on my island."); +~chatplayer("
What about the proposed alliance, Awowogei?"); +~chatnpc_specific(nc_name(mm_awowogei_cutscene), mm_awowogei_cutscene, "
I must think upon it some more and discuss the matter with my advisers. We will contact you when we are ready."); \ No newline at end of file diff --git a/scripts/quests/quest_mm/scripts/mm_caranock.rs2 b/scripts/quests/quest_mm/scripts/mm_caranock.rs2 index 5ca82db719..8561140c28 100644 --- a/scripts/quests/quest_mm/scripts/mm_caranock.rs2 +++ b/scripts/quests/quest_mm/scripts/mm_caranock.rs2 @@ -40,7 +40,7 @@ else if(%mm_caranock = ^mm_asked_caranock) { [label,mm_caranock_p3] %mm_caranock = ^mm_caranock_p3; -~chatnpc("
I shall personally see to the decommission. You should report to the King immediately."); +~chatnpc("
I shall see personally to the decommission. You should report to the King immediately."); [label,mm_shipyardworker_dialogue] ~chatplayer("
I am on a special mission for King Narnode of the Gnomes."); diff --git a/scripts/quests/quest_mm/scripts/mm_daero.rs2 b/scripts/quests/quest_mm/scripts/mm_daero.rs2 index 2a4cc615f1..9a2f581b97 100644 --- a/scripts/quests/quest_mm/scripts/mm_daero.rs2 +++ b/scripts/quests/quest_mm/scripts/mm_daero.rs2 @@ -6,6 +6,13 @@ if(%mm_narnode < ^narnode_received_orders) { ~mesbox("Daero seems like he is enjoying himself too much to talk."); return; } +if(%mm_main = ^mm_complete_training) { + ~chatplayer("
I need to return to Crash Island."); + ~chatnpc("
You know the routine..."); + ~objbox(eye_patch, "You wear the blindfold Daero hands you.", 250, 0, 0); + ~daero_move_hangar; + return; +} if(%mm_main = ^mm_complete) { @daero_training; } else if(%mm_daero >= ^daero_left_grandtree) { @@ -73,7 +80,8 @@ switch_int(%mm_daero) { .npc_setmode(apnpc1); ~chatnpc_specific(nc_name(mm_daero), mm_daero, "
Not just any old visitor Waydar; this is the person who exposed Glough and defeated his demon."); ~chatnpc_specific(nc_name(mm_waydar), mm_waydar, "
I see. Well, there are no more demons left here."); - ~chatnpc_specific(nc_name(mm_daero), mm_daero, "
Quite. He is now on a secret mission for the King."); + ~chatnpc_specific(nc_name(mm_daero), mm_daero, "
Quite. As you know, the 10th squad went missing during their mission to decommission the eastern shipyard of Karamja.");
~chatnpc_specific(nc_name(mm_daero), mm_daero, " We still do not know what happened, but evidence suggests they were blown far off course to the south.");
~chatnpc_specific(nc_name(mm_waydar), mm_waydar, " Their standard gliders must have fallen prey to the tropical weather.");
~chatnpcnoturn(" When reinitialisation has been completed, you are to fly to the south of Karamja with Thank you.");
}
~chatnpc(" You should report to King Narnode immediately. Tell him that the 10th squad still survives and has suffered no casualties.");
-~chatplayer(" Rest assured, I will do so. How do I leave this place?");
+// https://youtu.be/Qr9nNWqN6Y8?si=07TYRisnQ7ak9jmU&t=4256
+~chatplayer(" Rest assured, I will do so.");
+~chatplayer(" How do I leave this place?");
if(%mm_garkor < ^garkor_finished_mission) %mm_garkor = ^garkor_finished_mission;
~chatnpc(" Speak to Zooknock. He will arrange for you to leave.");
+if(npc_find(coord, mm_zooknock_final_battle, 15, 0) = true) {
+ hint_npc;
+}
[opnpc1,mm_zooknock_final_battle]
if(%mm_main < ^mm_defeated_demon) {
diff --git a/scripts/quests/quest_mm/scripts/mm_garkor.rs2 b/scripts/quests/quest_mm/scripts/mm_garkor.rs2
index 600073b2f4..d0dc093273 100644
--- a/scripts/quests/quest_mm/scripts/mm_garkor.rs2
+++ b/scripts/quests/quest_mm/scripts/mm_garkor.rs2
@@ -95,12 +95,12 @@ switch_int(%mm_garkor) {
case ^mm_not_started :
~chatplayer(" Hello?");
~chatnpc(" A fine day you have chosen to visit this hellish island, human.");
- ~chatplayer(" Good day to you too Sergeant. I've been sent by your King Narnode to -");
+ ~chatplayer(" Good day to you to Sergeant. I've been sent by your King Narnode to -");
~chatnpc(" Investigate the circumstances surrounding the mysterious disappearance of my squad. Yes, I know.");
~chatplayer(" How did you know that?");
~chatnpc(" The King and I are still in communication, albeit sporadic. I decided I need a human of your calibre to assist me. It is pleasing to see you are still alive.");
~chatplayer(" Why do you need a human?");
- ~chatnpc(" There is more going on than meets your eye, human. Did you not find it strange that an entire squad be sent to decommission a shipyard?");
+ ~chatnpc(" There is more going on than meets your eye, human. Did you not find it strange that an entire squad be sent to decomission a shipyard?");
~chatplayer(" Well -");
~chatnpc(" Indeed. But there are more pressing matters at hand. Three of my squad have been captured and placed in the jail. They are watched over by somewhat overpowering guards.");
~chatnpc(" Before we can resume our original mission we must rescue them.");
diff --git a/scripts/quests/quest_mm/scripts/mm_jail.rs2 b/scripts/quests/quest_mm/scripts/mm_jail.rs2
index bea86ac4c2..6a0f5edbf8 100644
--- a/scripts/quests/quest_mm/scripts/mm_jail.rs2
+++ b/scripts/quests/quest_mm/scripts/mm_jail.rs2
@@ -29,8 +29,12 @@ if(inv_total(worn, mm_amulet_of_monkey_speak) = 0) {
~chatnpc(" Grr ... Get out of my way...");
}
+[ai_spawn,mm_aberab]
+%npc_int = 0;
+%npc_int2 = map_clock;
+
[ai_spawn,mm_trefaji]
-%npc_int = 101;
+%npc_int = 100;
[ai_timer,mm_aberab]
~mm_jail_patrol;
@@ -42,14 +46,15 @@ if(inv_total(worn, mm_amulet_of_monkey_speak) = 0) {
%mm_player_is_unconscious = ^true;
~fade_out;
p_delay(3);
+p_teleport(movecoord(0_43_43_18_41, randominc(6), 0, randominc(1)));
walktrigger(wake_up);
-clearqueue(aa_knockout);
+clearqueue(aa_archer_knockout);
+clearqueue(aa_guard_knockout);
clearqueue(aa_jail_knockout);
-p_teleport(movecoord(0_43_43_18_41, randominc(6), 0, randominc(1)));
queue(lumo_jailed_dialogue, 10, 0);
+if(%mm_jail_count < 255) %mm_jail_count = add(%mm_jail_count, 1);
~fade_in;
p_delay(4);
-if(%mm_jail_count < 255) %mm_jail_count = add(%mm_jail_count, 1);
if_openoverlay(null);
[queue,mm_jail_guard_attack](npc_uid $npc_uid)
@@ -79,8 +84,44 @@ if(npc_finduid($npc_uid) = true) {
$dist = sub($dist, 1);
}
}
+ } else if(coordx(coord) > coordx($npc_center) & coordz(coord) < coordz($npc_center)) {
+ // southwest
+ $dir = ^exact_west;
+ $dist = 7;
+ while($dist > 0) {
+ $dest = movecoord(coord, $dist, 0, multiply($dist, -1));
+ if(lineofwalk(coord, $dest) = true & coord ! $dest) {
+ $dist = 0;
+ } else {
+ $dist = sub($dist, 1);
+ }
+ }
+ } else if(coordx(coord) < coordx($npc_center) & coordz(coord) > coordz($npc_center)) {
+ // northeast
+ $dir = ^exact_east;
+ $dist = 7;
+ while($dist > 0) {
+ $dest = movecoord(coord, multiply($dist, -1), 0, $dist);
+ if(lineofwalk(coord, $dest) = true & coord ! $dest) {
+ $dist = 0;
+ } else {
+ $dist = sub($dist, 1);
+ }
+ }
+ } else if(coordx(coord) > coordx($npc_center) & coordz(coord) > coordz($npc_center)) {
+ // northwest
+ $dir = ^exact_west;
+ $dist = 7;
+ while($dist > 0) {
+ $dest = movecoord(coord, $dist, 0, $dist);
+ if(lineofwalk(coord, $dest) = true & coord ! $dest) {
+ $dist = 0;
+ } else {
+ $dist = sub($dist, 1);
+ }
+ }
} else if(coordx(coord) < coordx($npc_center)) {
- // east
+ // west
$dir = ^exact_east;
$dist = 7;
while($dist > 0) {
@@ -91,6 +132,18 @@ if(npc_finduid($npc_uid) = true) {
$dist = sub($dist, 1);
}
}
+ } else if(coordx(coord) > coordx($npc_center)) {
+ // east
+ $dir = ^exact_west;
+ $dist = 7;
+ while($dist > 0) {
+ $dest = movecoord(coord, $dist, 0, 0);
+ if(lineofwalk(coord, $dest) = true & coord ! $dest) {
+ $dist = 0;
+ } else {
+ $dist = sub($dist, 1);
+ }
+ }
} else if(coordz(coord) < coordz($npc_center)) {
// south
$dir = ^exact_north;
@@ -103,24 +156,32 @@ if(npc_finduid($npc_uid) = true) {
$dist = sub($dist, 1);
}
}
+ } else if(coordz(coord) > coordz($npc_center)) {
+ // north
+ $dir = ^exact_south;
+ $dist = 7;
+ while($dist > 0) {
+ $dest = movecoord(coord, 0, 0, $dist);
+ if(lineofwalk(coord, $dest) = true & coord ! $dest) {
+ $dist = 0;
+ } else {
+ $dist = sub($dist, 1);
+ }
+ }
}
anim(human_mm_flyback, 20);
~damage_self(divide(stat(hitpoints), 5)); // 1/5th of hp?
if(lineofwalk(coord, $dest) = true & coord ! $dest) {
p_exactmove(coord, $dest, 20, 40, $dir);
}
- queue(aa_jail_knockout, 0, 0);
+ strongqueue(aa_jail_knockout, 0, 0);
p_delay(0);
}
[proc,mm_jail_patrol]
-def_coord $dest;
-def_coord $npc_center;
-def_int $dir;
-def_int $dist;
huntall(npc_coord, 1, ^vis_lineofsight);
while(huntnext = true) {
- if(~mm_wearing_greegree = false & getqueue(aa_jail_knockout) = 0) {
+ if(~mm_wearing_greegree = false & %mm_player_is_unconscious = ^false) {
if (%npc_action_delay <= map_clock) {
if_close;
%npc_action_delay = add(map_clock, 4);
@@ -131,7 +192,7 @@ while(huntnext = true) {
huntall(coord, 1, ^vis_lineofsight);
if(huntnext = true) {
if_close;
- if(busy = false & ~mm_wearing_greegree = false) {
+ if(busy = false & ~mm_wearing_greegree = false & %mm_player_is_unconscious = ^false) {
clearqueue(lumo_jailed_dialogue); // you can stack this queue, but not from getting hit by jail guard multiple times
queue*(mm_jail_guard_attack, 0)(npc_uid);
}
@@ -141,147 +202,58 @@ while(huntnext = true) {
}
}
-if(%npc_int < 3) {
- npc_setmode(none);
- npc_walk(npc_coord);
- npc_walk(0_43_43_18_46);
-} else if(%npc_int < 7) {
- if(%npc_int = 3 & npc_coord ! 0_43_43_18_46) {
- npc_tele(0_43_43_18_46);
- npc_walk(npc_coord);
- return;
- }
- npc_setmode(none);
- npc_walk(npc_coord);
- npc_walk(0_43_43_20_49);
-} else if(%npc_int < 12) {
- if(%npc_int = 7 & npc_coord ! 0_43_43_20_49) {
- npc_tele(0_43_43_20_49);
- }
- npc_setmode(none);
- npc_walk(npc_coord);
-} else if(%npc_int < 15) {
- if(%npc_int = 12 & npc_coord ! 0_43_43_20_49) {
- npc_tele(0_43_43_20_49);
- }
- npc_setmode(none);
- npc_walk(0_43_43_20_44);
-} else if(%npc_int < 21) {
- if(%npc_int = 15 & npc_coord ! 0_43_43_20_44) {
- npc_tele(0_43_43_20_44);
- }
- npc_setmode(none);
- npc_walk(npc_coord);
-} else if(%npc_int < 24) {
- if(%npc_int = 21 & npc_coord ! 0_43_43_20_44) {
- npc_tele(0_43_43_20_44);
- }
- npc_setmode(none);
- npc_walk(0_43_43_19_44);
-} else if(%npc_int < 27) {
- if(%npc_int = 24 & npc_coord ! 0_43_43_19_44) {
- npc_tele(0_43_43_19_44);
- }
- npc_setmode(none);
- npc_walk(npc_coord);
-} else if(%npc_int < 30) {
- if(%npc_int = 27 & npc_coord ! 0_43_43_19_44) {
- npc_tele(0_43_43_19_44);
- }
- npc_setmode(none);
- npc_walk(0_43_43_20_44);
-} else if(%npc_int < 33) {
- if(%npc_int = 30 & npc_coord ! 0_43_43_20_44) {
- npc_tele(0_43_43_20_44);
- }
- npc_setmode(none);
- npc_walk(npc_coord);
-} else if(%npc_int < 36) {
- if(%npc_int = 33 & npc_coord ! 0_43_43_20_44) {
- npc_tele(0_43_43_20_44);
- }
- npc_setmode(none);
- npc_walk(0_43_43_20_49);
-} else if(%npc_int < 42) {
- if(%npc_int = 36 & npc_coord ! 0_43_43_20_49) {
- npc_tele(0_43_43_20_49);
- }
- npc_setmode(none);
- npc_walk(npc_coord);
-} else if(%npc_int < 45) {
- if(%npc_int = 42 & npc_coord ! 0_43_43_20_49) {
- npc_tele(0_43_43_20_49);
- }
- npc_setmode(none);
- npc_walk(0_43_43_20_44);
-} else if(%npc_int < 51) {
- if(%npc_int = 45 & npc_coord ! 0_43_43_20_44) {
- npc_tele(0_43_43_20_44);
- }
- npc_setmode(none);
- npc_walk(npc_coord);
-} else if(%npc_int < 54) {
- if(%npc_int = 51 & npc_coord ! 0_43_43_20_44) {
- npc_tele(0_43_43_20_44);
- }
- npc_setmode(none);
- npc_walk(0_43_43_19_44);
-} else if(%npc_int < 57) {
- if(%npc_int = 54 & npc_coord ! 0_43_43_19_44) {
- npc_tele(0_43_43_19_44);
- }
- npc_setmode(none);
- npc_walk(npc_coord);
-} else if(%npc_int < 60) {
- if(%npc_int = 57 & npc_coord ! 0_43_43_19_44) {
- npc_tele(0_43_43_19_44);
- }
- npc_setmode(none);
- npc_walk(0_43_43_20_44);
-} else if(%npc_int < 63) {
- if(%npc_int = 60 & npc_coord ! 0_43_43_20_44) {
- npc_tele(0_43_43_20_44);
- }
- npc_setmode(none);
- npc_walk(npc_coord);
-} else if(%npc_int < 66) {
- if(%npc_int = 63 & npc_coord ! 0_43_43_20_44) {
- npc_tele(0_43_43_20_44);
- }
- npc_setmode(none);
- npc_walk(0_43_43_20_49);
-} else if(%npc_int < 69) {
- if(%npc_int = 66 & npc_coord ! 0_43_43_20_49) {
- npc_tele(0_43_43_20_49);
- }
- npc_setmode(none);
- npc_walk(npc_coord);
-} else if(%npc_int < 72) {
- if(%npc_int = 69 & npc_coord ! 0_43_43_20_49) {
- npc_tele(0_43_43_20_49);
- }
- npc_setmode(none);
- npc_walk(npc_coord);
- npc_walk(0_43_43_18_46);
-} else if(%npc_int < 75) {
- if(%npc_int = 72 & npc_coord ! 0_43_43_18_46) {
- npc_tele(0_43_43_18_46);
- npc_walk(npc_coord);
- return;
+if(%npc_int = 100) {
+ return;
+}
+
+def_coord $dest;
+if(%npc_int < 13) {
+ $dest = enum(int, coord, mm_jail_patrol_route, %npc_int);
+ if(npc_coord = $dest) {
+ %npc_int = add(%npc_int, 1);
+ %npc_int2 = add(map_clock, ~mm_jail_patrol_pause($dest, ^false));
+ } else if(map_clock >= add(%npc_int2, 6)) { // doesnt arrive 6t after starting -> tele there
+ npc_tele($dest);
+ %npc_int = add(%npc_int, 1);
+ %npc_int2 = add(map_clock, ~mm_jail_patrol_pause($dest, ^true));
}
+}
+
+if(map_clock < %npc_int2) {
npc_setmode(none);
npc_walk(npc_coord);
- npc_walk(0_43_43_15_50);
-} else if(%npc_int = 100) {
- if(npc_getmode = none) npc_tele(0_43_43_15_50);
+ return;
}
-%npc_int = add(%npc_int, 1);
-if(inzone(0_43_43_12_48, 0_43_43_17_52, npc_coord) = true) {
- if(npc_getmode = none & %npc_int >= 72) {
+if(%npc_int = 13) {
+ npc_setmode(none);
+ npc_walk(0_43_43_15_50);
+ if(map_clock >= add(%npc_int2, 50)) {
+ npc_tele(0_43_43_15_50);
+ }
+ if(inzone(0_43_43_12_48, 0_43_43_17_52, npc_coord) = true) {
if(.npc_find(npc_coord, npc_param(next_npc_type), 5, 0) = true) {
.%npc_int = 0;
+ .%npc_int2 = map_clock;
+ %npc_int = 100;
npc_setmode(wander);
}
}
+ return;
+}
+
+npc_setmode(none);
+npc_walk(enum(int, coord, mm_jail_patrol_route, %npc_int));
+
+
+[proc,mm_jail_patrol_pause](coord $coord, int $teleported)(int)
+// will not stop at these 2 points unless teleported there
+// this will always end up happening on the 2nd last point with the old pathing :)
+// https://youtu.be/ZVGTjCbg0lA?si=sdUSoSYwzqWM_Nmv&t=167 (notice the pause)
+if($coord = 0_43_43_16_46 | $coord = 0_43_43_18_46) {
+ if($teleported = ^false) {
+ return(0);
+ }
+ return(2);
}
+return(6);
diff --git a/scripts/quests/quest_mm/scripts/mm_journal.rs2 b/scripts/quests/quest_mm/scripts/mm_journal.rs2
index 2dee4dee0f..8ece4ebee5 100644
--- a/scripts/quests/quest_mm/scripts/mm_journal.rs2
+++ b/scripts/quests/quest_mm/scripts/mm_journal.rs2
@@ -1,7 +1,7 @@
[if_button,questlist:mm]
def_string $text;
if(%mm_main = ^mm_not_started) {
- $text = "@dbl@In @dre@The Grand Tree@dbl@, I exposed the treachery of @dre@King Narnode Shareen's@dbl@ then High Tree Guardian, @dre@Glough@dbl@. @dre@Glough@dbl@ has since been deposed. To start this quest I must check how @dre@King Shareen@dbl@ is fairing.";
+ $text = "@dbl@In @dre@The Grand Tree@dbl@, I exposed the treachery of @dre@King Narnode Shareen's@dbl@ then High Tree Guardian, @dre@Glough@dbl@. @dre@Glough@dbl@ has since been deposed. To start this quest I must check how @dre@King Shareen@dbl@ is faring.";
$text = append($text, "||@dbl@To complete this quest I need:|@dbl@- To be able to defeat a @dre@level 195 Jungle Demon");
~quest_journal("Monkey Madness", $text);
return;
@@ -317,7 +317,7 @@ if(%mm_main > ^mm_reported_narnode) {
if(%mm_main >= ^mm_complete) $text = append($text, "||@red@QUEST COMPLETE!");
if(%mm_main > ^mm_complete) {
- $text = append($text, "||@str@I found Daero and enrolled in the Royal Guard training@str@programme. I underwent a series of exercises designed to@str@increase strength and stamina. This was followed by training@str@my attack and defence techniques.");
+ $text = append($text, "||@str@I found Daero and enrolled in the Royal Guard training @str@programme. I underwent a series of exercises designed to @str@increase strength and stamina. This was followed by training @str@my attack and defence techniques.");
} else if(%mm_main = ^mm_complete) {
$text = append($text, "||@dbl@I should find Daero and enroll with the Royal Guard training programme.");
}
diff --git a/scripts/quests/quest_mm/scripts/mm_kruk.rs2 b/scripts/quests/quest_mm/scripts/mm_kruk.rs2
index 771bebdd43..003980a3ce 100644
--- a/scripts/quests/quest_mm/scripts/mm_kruk.rs2
+++ b/scripts/quests/quest_mm/scripts/mm_kruk.rs2
@@ -7,6 +7,10 @@ if(inv_total(worn, mm_amulet_of_monkey_speak) = 0) {
return;
}
~chatplayer(" Hello?");
+if(%mm_kruk = ^kruk_spoken) {
+ ~chatnpc(" Sorry, I am far too busy dealing with the invaders right now.");
+ return;
+}
~chatnpc(" What brings you up here, monkey?");
if(%mm_elder_guard = ^elder_guard_spoken) {
~chatplayer(" I have come to seek audience with Awowogei. I am told I need your permission to do so.");
diff --git a/scripts/quests/quest_mm/scripts/mm_lumo.rs2 b/scripts/quests/quest_mm/scripts/mm_lumo.rs2
index 8d895428be..f376bbd5bc 100644
--- a/scripts/quests/quest_mm/scripts/mm_lumo.rs2
+++ b/scripts/quests/quest_mm/scripts/mm_lumo.rs2
@@ -164,7 +164,8 @@ switch_int(%mm_lumo) {
~chatnpc(" So human, what can we do for you?");
}
~chatplayer(" Well I suppose I ought to help you escape.");
-~chatnpc_specific(nc_name(mm_bunkdo), mm_bunkdo, " No, it's alright, No it's alright Do your best to ignore him...");
if(inzone(0_43_43_18_41, 0_43_43_24_43, coord) = false) {
~chatnpc(" Not all of us were captured. If you have not done so, you should make contact with those of us who escaped.");
diff --git a/scripts/quests/quest_mm/scripts/mm_monkey_child.rs2 b/scripts/quests/quest_mm/scripts/mm_monkey_child.rs2
index 8307ebd065..c1a0f9e9e7 100644
--- a/scripts/quests/quest_mm/scripts/mm_monkey_child.rs2
+++ b/scripts/quests/quest_mm/scripts/mm_monkey_child.rs2
@@ -43,7 +43,7 @@ if(%mm_monkey_child = ^mm_not_started) {
@mm_child_give_bananas;
} else if(%mm_monkey_child = ^monkey_child_given_bananas) {
~chatplayer(" Has Aunty given you the toy yet?");
- if(%mm_monkey_child_waiting_for_talisman = ^false) {
+ if(gettimer(mm_give_child_toy) < 1) {
~chatnpc(" Yeah - it's really neat!");
~chatplayer(" Can I borrow it now then?");
~chatnpc(" But I only just got it!");
@@ -126,6 +126,7 @@ if(%mm_monkey_child > ^monkey_child_asked_who) {
[timer,mm_give_child_toy]
%mm_monkey_child_waiting_for_talisman = ^false;
+cleartimer(mm_give_child_toy);
// not setting anything here its just for the check (seems like only the one varb exists for this)
[timer,mm_child_crying]
diff --git a/scripts/quests/quest_mm/scripts/mm_narnode.rs2 b/scripts/quests/quest_mm/scripts/mm_narnode.rs2
index 390ad26767..b4aa91f816 100644
--- a/scripts/quests/quest_mm/scripts/mm_narnode.rs2
+++ b/scripts/quests/quest_mm/scripts/mm_narnode.rs2
@@ -185,7 +185,7 @@ while($op ! null) {
[label,mm_narnode_p5]
%mm_narnode = ^narnode_southern_winds;
-~chatplayer(" Caranock suggested they were blown off course by extreme southern winds.");
+~chatplayer(" Caranock suggested they were blown off course by extreme southerly winds.");
~chatnpc(" Do you believe him?");
@mm_narnode_p6;
@@ -198,3 +198,5 @@ p_delay(3);
%mm_narnode = ^narnode_received_orders;
inv_add(inv, mm_narnode_orders, 1);
~objbox(mm_narnode_orders, "Narnode hands you some handwritten orders.", 250, 0, 0);
+~chatplayer(" Where will I find Daero?");
+~chatnpc(" You will find him attending to business somewhere on the Grand Tree.");
diff --git a/scripts/quests/quest_mm/scripts/mm_zooknock.rs2 b/scripts/quests/quest_mm/scripts/mm_zooknock.rs2
index a9fbc12c8e..18ab302ee7 100644
--- a/scripts/quests/quest_mm/scripts/mm_zooknock.rs2
+++ b/scripts/quests/quest_mm/scripts/mm_zooknock.rs2
@@ -27,7 +27,7 @@ switch_int(%mm_zooknock) {
@mm_zooknock_p2;
case ^mm_not_started :
~chatplayer(" Hello?");
- ~chatnpcnoturn(" A human... here? What business have you on Ape Atoll?");
+ ~chatnpcnoturn(" A human ... here? What business have you on Ape Atoll?");
~chatplayer(" I am on a mission for King Narnode Shareen of the Gnomes.");
~chatplayer(" I have been sent to investigate the whereabouts of the 10th squad of his Royal Guard, which went missing during a recent mission to Karamja.");
~chatnpcnoturn(" Well you've found us - what's left of us, that is.");
@@ -37,6 +37,14 @@ switch_int(%mm_zooknock) {
@mm_zooknock_p2;
}
+[proc,zooknock_handed_item_line]
+switch_int(random(4)) {
+ case 0 : ~chatnpc(" Nicely done.");
+ case 1 : ~chatnpc(" Well done, human.");
+ case 2 : ~chatnpc(" Good work.");
+ case default : ~chatnpc(" Excellent.");
+}
+
[opnpcu,mm_zooknock]
if(%mm_zooknock < ^zooknock_need_items) {
~displaymessage(^dm_default);
@@ -55,7 +63,7 @@ switch_obj(last_useitem) {
%mm_zooknock_has_dentures = ^true;
inv_del(inv, mm_monkey_dentures, 1);
~objbox(mm_monkey_dentures, "You hand Zooknock the magical monkey dentures.", 250, 0, ^objbox_height);
- ~chatnpc(" Nicely done.");
+ ~zooknock_handed_item_line;
}
~mm_zooknock_amulet_check;
case gold_bar :
@@ -69,7 +77,7 @@ switch_obj(last_useitem) {
%mm_zooknock_has_gold_bar = ^true;
inv_del(inv, gold_bar, 1);
~objbox(gold_bar, "You hand Zooknock the gold bar.", 250, 0, 0);
- ~chatnpc(" Good work.");
+ ~zooknock_handed_item_line;
}
~mm_zooknock_amulet_check;
case mm_monkey_amulet_mould :
@@ -83,7 +91,7 @@ switch_obj(last_useitem) {
%mm_zooknock_has_amulet_mould = ^true;
inv_del(inv, mm_monkey_amulet_mould, 1);
~objbox(mm_monkey_amulet_mould, "You hand Zooknock the monkey amulet mould.", 250, 0, divide(^objbox_height, 2));
- ~chatnpc(" Well done, human.");
+ ~zooknock_handed_item_line;
}
~mm_zooknock_amulet_check;
case mm_small_ninja_monkey_bones, mm_medium_ninja_monkey_bones, mm_normal_gorilla_monkey_bones, mm_bearded_gorilla_monkey_bones, mm_normal_monkey_bones, mm_small_zombie_monkey_bones, mm_large_zombie_monkey_bones :
@@ -98,6 +106,7 @@ switch_obj(last_useitem) {
~chatplayer(" Yes.");
%mm_zooknock_has_monkey_relic = ^true;
%mm_zooknock_monkey_relic = oc_param($last_useitem, mm_bones_type);
+ inv_del(inv, $last_useitem, 1);
~objbox($last_useitem, "You hand Zooknock the monkey remains.", 250, 0, 0);
case 2 :
~chatplayer(" Actually, no.");
@@ -108,7 +117,7 @@ switch_obj(last_useitem) {
%mm_zooknock_monkey_relic = oc_param($last_useitem, mm_bones_type);
inv_del(inv, $last_useitem, 1);
~objbox(last_useitem, "You hand Zooknock the monkey remains.", 250, 0, 0);
- ~chatnpc(" Excellent.");
+ ~zooknock_handed_item_line;
~mm_zooknock_talisman_check;
}
case mm_monkey_talisman :
@@ -122,7 +131,7 @@ switch_obj(last_useitem) {
%mm_zooknock_has_magical_talisman = ^true;
inv_del(inv, last_useitem, 1);
~objbox(last_useitem, "You hand Zooknock the monkey talisman.", 250, 0, 0);
- ~chatnpc(" Well done, human.");
+ ~zooknock_handed_item_line;
}
~mm_zooknock_talisman_check;
case mm_monkey_greegree_for_small_ninja_monkey, mm_monkey_greegree_for_medium_ninja_monkey, mm_monkey_greegree_for_normal_gorilla, mm_monkey_greegree_for_bearded_gorilla,
@@ -263,6 +272,7 @@ while($op ! null) {
} else if($op = 3) {
~chatplayer(" Where do I find something to do with monkey speech?");
~chatnpc(" I don't know. I'm sure you'll think of something.");
+ $op = ~p_choice4("Where do I find a gold bar?", 1, "Where do I find a monkey amulet mould?", 2, "Where do I find something to do with monkey speech?", 3, "I'll be back later.", 4);
} else if($op = 4) {
~chatplayer(" I'll be back later.");
$op = null;
@@ -322,7 +332,7 @@ while($op ! null) {
[label,mm_zooknock_p2]
~chatnpcnoturn(" Your story first, human. What possessed you to travel to this forsaken island?");
~chatplayer(" I am currently in the service of your King. I was the human who exposed Glough's warfaring plans and defeated his demon.");
-~chatplayer(" As far as I understand, the 10th squad were sent to oversee the decommission of Glough's shipyard in east Karamja.");
+~chatplayer(" As far as I understand, the 10th squad were sent to oversee the decomission of Glough's shipyard in east Karamja.");
~chatplayer(" Rumour has it you were blown off course. The King worried as to your fate, and sent me to investigate.");
~chatnpcnoturn(" You were sent alone?");
~chatplayer(" No, I have been accompanied by Flight Commander Waydar. We flew south on a special type of glider and landed on a small island to our east.");
diff --git a/scripts/quests/quest_mm/scripts/quest_mm.rs2 b/scripts/quests/quest_mm/scripts/quest_mm.rs2
index 6e789ce0f9..679a1faffb 100644
--- a/scripts/quests/quest_mm/scripts/quest_mm.rs2
+++ b/scripts/quests/quest_mm/scripts/quest_mm.rs2
@@ -234,7 +234,9 @@ if_openmain(inter_199);
p_delay(4);
if_close;
if(npc_findexact(1_41_71_54_35, mm_awowogei_cutscene) = true) {
- p_teleport(1_41_71_47_28);
+ // https://youtu.be/Qr9nNWqN6Y8?si=g2jLc94-ao414-5r&t=3784
+ // cutscene start and facing is different compared to osrs
+ p_teleport(1_41_71_47_35);
npc_facesquare(1_41_71_53_35);
if_settab(null, ^tab_magic);
p_delay(0);
@@ -246,8 +248,8 @@ if(npc_findexact(1_41_71_54_35, mm_awowogei_cutscene) = true) {
walktrigger(mm_ch4_walktrigger);
if_settext(music:com_177, "Suspicious");
midi_song("suspicious");
- cam_moveto(1_41_71_47_36, 600, 232, 232);
- cam_lookat(1_41_71_53_35, 160, 232, 232);
+ cam_moveto(1_41_71_47_35, 740, 232, 232);
+ cam_lookat(1_41_71_53_35, 240, 232, 232);
@mm_ch4_cutscene_dialogue;
}
}
@@ -268,6 +270,9 @@ walktrigger(mm_ch2_walktrigger);
queue(mm_ch2_cutscene_queue, 0, 0);
[queue,mm_ch2_cutscene_queue]
+if(inzone(0_40_71_0_0, 0_40_71_63_63, coord) = false) {
+ return;
+}
%mm_cutscene_part = add(%mm_cutscene_part, 1);
@mm_ch2_cutscene_dialogue;
@@ -368,6 +373,9 @@ walktrigger(mm_ch3_walktrigger);
queue(mm_ch3_cutscene_queue, 0, 0);
[queue,mm_ch3_cutscene_queue]
+if(inzone(0_41_71_0_0, 0_41_71_63_63, coord) = false) {
+ return;
+}
%mm_cutscene_part = add(%mm_cutscene_part, 1);
@mm_ch3_cutscene_dialogue;
@@ -493,6 +501,9 @@ walktrigger(mm_ch4_walktrigger);
queue(mm_ch4_cutscene_queue, 0, 0);
[queue,mm_ch4_cutscene_queue]
+if(inzone(1_41_71_0_0, 1_41_71_63_63, coord) = false) {
+ return;
+}
%mm_cutscene_part = add(%mm_cutscene_part, 1);
@mm_ch4_cutscene_dialogue;
@@ -582,7 +593,7 @@ if(npc_findexact(1_41_71_53_34, mm_waydar_cutscene) = true & .npc_findexact(1_41
}
if(%mm_cutscene_part = 20) {
%mm_cutscene_part = add(%mm_cutscene_part, 1);
- ~chatnpc(" Ignore Ignore