From e172c4365d4680fbc7c797a4a7fdb9bd88105d3c Mon Sep 17 00:00:00 2001 From: Atemo Date: Tue, 2 Apr 2019 02:12:10 +0200 Subject: [PATCH] Added setpcblock to some official scripts (#4067) * Added setpcblock to official scripts to mimic some npc interaction. * Clean-up the docs. * Added the WORK_IN_PROGRESS message when PCBLOCK_USEITEM and PCBLOCK_SKILL are enabled. Thanks to @aleos89 for the review! --- doc/script_commands.txt | 25 +++++------ npc/re/custom/lasagna/lasagna_npcs.txt | 30 +++++++++++++- npc/re/instances/DevilTower.txt | 16 +++++--- npc/re/instances/HorrorToyFactory.txt | 6 +-- npc/re/instances/MorseCave.txt | 49 +++++++++++++--------- npc/re/instances/SarahAndFenrir.txt | 27 ++++++++---- npc/re/merchants/nightmare_biolab.txt | 2 - npc/re/quests/quests_15_2.txt | 2 - npc/re/quests/quests_16_1.txt | 57 +++++++++++++++++++++----- npc/re/quests/quests_rockridge.txt | 26 ++++++++---- src/map/clif.cpp | 12 ++++-- src/map/script.hpp | 1 + src/map/script_constants.hpp | 1 + 13 files changed, 177 insertions(+), 77 deletions(-) diff --git a/doc/script_commands.txt b/doc/script_commands.txt index e9349a0279..84f473e531 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -6145,18 +6145,19 @@ The action is blocked when the is true, while false allows the action ag 'getpcblock' command return the bit-mask value of the currently enabled block flags. -The available are: - PCBLOCK_MOVE - PCBLOCK_ATTACK - PCBLOCK_SKILL - PCBLOCK_USEITEM - PCBLOCK_CHAT - PCBLOCK_IMMUNE - PCBLOCK_SITSTAND - PCBLOCK_COMMANDS - PCBLOCK_NPCCLICK - PCBLOCK_EMOTION - PCBLOCK_ALL +Available : + PCBLOCK_MOVE Prevent the player from moving. + PCBLOCK_ATTACK Prevent the player from attacking. + PCBLOCK_SKILL Prevent the player from using skills/itemskills. + PCBLOCK_USEITEM Prevent the player from using usable items. + PCBLOCK_CHAT Prevent the player from sending global/guild/party/whisper messages. + PCBLOCK_IMMUNE Prevent the player from being hit by monsters. + PCBLOCK_SITSTAND Prevent the player from sitting/standing. + PCBLOCK_COMMANDS Prevent the player from using atcommands/charcommands. + PCBLOCK_NPCCLICK Prevent the player from clicking/touching any NPC/shop/warp. + PCBLOCK_EMOTION Prevent the player from using emotions. + PCBLOCK_NPC Simulate NPC interaction. Useful for NPC with no mes window. Sum of PCBLOCK_MOVE|PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_COMMANDS|PCBLOCK_NPCCLICK. + PCBLOCK_ALL Sum of all the flags. Examples: diff --git a/npc/re/custom/lasagna/lasagna_npcs.txt b/npc/re/custom/lasagna/lasagna_npcs.txt index a0d07b3c2c..6288a05ab5 100644 --- a/npc/re/custom/lasagna/lasagna_npcs.txt +++ b/npc/re/custom/lasagna/lasagna_npcs.txt @@ -15,7 +15,9 @@ lasa_fild01,47,297,0 script #doint_evt01 HIDDEN_WARP_NPC,1,1,{ end; OnTouch: if (Class == Job_Summoner && isbegin_quest(7711) == 0) { + setpcblock PCBLOCK_NPC, true; sleep2 100; + setpcblock PCBLOCK_NPC, false; npctalk "Hey, newbie! Get over here!", "Vigilante Ajegna#doram0", bc_self; npctalk "Come on over here! Click me, quick!", "Vigilante Ajegna#doram0", bc_self; setquest 7711;// Beginning @@ -151,10 +153,12 @@ lasa_fild01,53,322,3 script Applicant Paul#doramt13 4_M_MERCAT1,4,4,{ } OnTouch: if (Class == Job_Summoner && isbegin_quest(7723) == 0) { + setpcblock PCBLOCK_NPC, true; npctalk "You, dimwit! Nothing beats damage! You should boost your STR first!", "Applicant Paul#doramt13", bc_self; sleep2 2000; npctalk "You have no idea! DEX comes first if you want your attack to be successful!!", "Applicant MacCarnie#doramt13", bc_self; sleep2 1000; + setpcblock PCBLOCK_NPC, false; emotion ET_STARE, getnpcid(0, "Applicant Paul#doramt13"); emotion ET_OHNO, getnpcid(0, "Applicant MacCarnie#doramt13"); } @@ -774,6 +778,7 @@ lasa_fild01,103,344,3 script Well-known Troublemaker 4_DR_KID_01,3,3,{ completequest 7721;// Cat showoff contest getexp 120,120; close2; + setpcblock PCBLOCK_NPC, true; classchange( 4_DR_AGLIO, "Vigilante Aglio#doram12", bc_self ); sleep2 1000; npctalk "You! You're picking a fight with another innocent passerby?", "Vigilante Aglio#doram12", bc_self; @@ -791,6 +796,7 @@ lasa_fild01,103,344,3 script Well-known Troublemaker 4_DR_KID_01,3,3,{ sleep2 2000; npctalk "You're just full of it.", "Well-known Troublemaker", bc_self; classchange( HIDDEN_WARP_NPC, "Vigilante Aglio#doram12", bc_self ); + setpcblock PCBLOCK_NPC, false; end; case 2: mes "[Well-known Kittie]"; @@ -1911,6 +1917,7 @@ lasagna,186,231,3 script Youngster meow#dorcon05 4_DR_KID_01,{ } lasagna,226,196,5 script Aram#dorcon01 4_DR_F_02,{ + setpcblock PCBLOCK_NPC, true; npctalk "Is this the famous Pub-Oven?", "Tos#dorcon01", bc_self; sleep2 2000; npctalk "Stop looking around like a hillbilly!", "", bc_self; @@ -1954,10 +1961,12 @@ lasagna,226,196,5 script Aram#dorcon01 4_DR_F_02,{ npctalk "......", "", bc_self; sleep2 2000; npctalk "Cheesy...", "", bc_self; + setpcblock PCBLOCK_NPC, false; end; } lasagna,228,193,5 script Porto#dorcon01 4_DR_M_01,{ + setpcblock PCBLOCK_NPC, true; npctalk "Since I've come all the way here, I should try the kaluna milk!", "", bc_self; sleep2 2000; npctalk "Don't be so loud! Everyone is looking!", "Aram#dorcon01", bc_self; @@ -1965,13 +1974,16 @@ lasagna,228,193,5 script Porto#dorcon01 4_DR_M_01,{ npctalk "You know, you're the one who's louder.", "", bc_self; sleep2 2000; npctalk "Right, right.", "Tos#dorcon01", bc_self; + setpcblock PCBLOCK_NPC, false; end; } lasagna,229,197,5 script Tos#dorcon01 4_DR_M_02,{ + setpcblock PCBLOCK_NPC, true; npctalk "Befitting to its fame, this place is packed with people.", "", bc_self; sleep2 2000; npctalk "Stop looking around like a hillbilly!", "Aram#dorcon01", bc_self; + setpcblock PCBLOCK_NPC, false; end; } @@ -1983,6 +1995,7 @@ lasagna,230,192,3 script Perky Doram#do_hint03 4_CAT_ADV2,{ } lasagna,235,193,3 script Customer#dorcon02 4_DR_TORTEL,{ + setpcblock PCBLOCK_NPC, true; npctalk "Always right-click when it comes to information! Right-click a human, item and cat to know more about them!", "", bc_self; sleep2 1000; emotion ET_THROB; @@ -1990,6 +2003,7 @@ lasagna,235,193,3 script Customer#dorcon02 4_DR_TORTEL,{ sleep2 2000; emotion ET_SLEEPY; npctalk "We're full, so there's only one thing to do. Sleep.", "", bc_self; + setpcblock PCBLOCK_NPC, false; end; } @@ -4463,7 +4477,6 @@ lasa_in01,61,91,5 script Basilisk Prisoner#lasai 4_BASIL_SLAVE,{ next; mes "[Enriched Foxtail]"; mes "MATK + 70, MSP + 50."; - mes ""; mes "[Long Foxtail]"; mes "Ranged physical ATK +5%, MHP + 200."; next; @@ -10090,7 +10103,7 @@ conch_in,122,61,5 script Crewman#dorcon01 4_CAT_ADV1,{ // in C_D conch_in,59,29,5 script Engineer#dorcon01 4_CAT_SAILOR5,{ - // pcblocknpc + setpcblock PCBLOCK_NPC, true; npctalk "Are you an adventurer heading to the new world? Welcome. Have you heard about how our ship moves?", "", bc_self; sleep2 2000; unittalk getcharid(3), "" + strcharinfo(0) + " : No, I have not.", bc_self; @@ -10104,24 +10117,29 @@ conch_in,59,29,5 script Engineer#dorcon01 4_CAT_SAILOR5,{ sleep2 1000; emotion ET_SWEAT; npctalk "Oh, wait. You're not taking me seriously, are you? It's a joke, a joke!", "", bc_self; + setpcblock PCBLOCK_NPC, false; end; } // in E_F conch_in,59,91,5 script Passenger#dorcon04 4_F_ALCHE_A,{ + setpcblock PCBLOCK_NPC, true; npctalk "Heading to Midgard? It's my first time in Lasagna and It's great, really! So I'm just going to stay here for good. I found a place to live and signed the papers, too!", "", bc_self; sleep2 2000; npctalk "I'm on my way to pack up my stuff in Midgard. It's great, really.", "", bc_self; + setpcblock PCBLOCK_NPC, false; end; } // in_I_J conch_in,97,96,5 script Merchant#dorcon01 4_M_MERCAT2,{ + setpcblock PCBLOCK_NPC, true; npctalk "You can tell from this bundle, right? I'm not a rookie adventurer. I'm a merchant who travels to different places and sells stuff.", "", bc_self; sleep2 2000; npctalk "I heard that Igdrasil is rare in the new world since there are none. So I'm going to try selling it over there.", "", bc_self; sleep2 2000; npctalk "If there is anything else that might sell, I'm going to buy some and sell them there. I'm going be a millionaire.", "", bc_self; + setpcblock PCBLOCK_NPC, false; end; } @@ -10131,20 +10149,25 @@ conch_in,135,91,5 script Passenger#dorcon01 4_CAT_ADV2,{ end; } conch_in,135,93,5 script Passenger#dorcon03 4_DR_TORTEL,{ + setpcblock PCBLOCK_NPC, true; npctalk "Is this your first time on Con-Chliina? I was on this ship before to get to the new world once my training was over. Back then, the food was really good, so...", "", bc_self; sleep2 2000; npctalk "The minute I landed on the new world, I went right back to the boat. Just loved the food...", "", bc_self; + setpcblock PCBLOCK_NPC, false; end; } conch_in,137,98,3 script Passenger#dorcon02 4_DR_F_01,{ + setpcblock PCBLOCK_NPC, true; npctalk "It's my first time in the new world and I'm really excited. Did you decide what you'll do first when you get there? I want to go to the Mjolnir Mountains first!", "", bc_self; sleep2 2000; npctalk "The minute I saw it on [A Guide for New Adventurers to the New World], I promised myself that I would go! I heard It's got wonderful landscapes!", "", bc_self; + setpcblock PCBLOCK_NPC, false; end; } // in_P_O conch_in,169,70,3 script Crewman#dorcon02 4_CAT_SAILOR2,{ + setpcblock PCBLOCK_NPC, true; npctalk "Midgard has been discovered, so I wonder if there's any other place out there. Place where we've never been to and not on the map.", "", bc_self; sleep2 2000; npctalk "You think there's such a place?", "Crewman#dorcon03", bc_self; @@ -10154,13 +10177,16 @@ conch_in,169,70,3 script Crewman#dorcon02 4_CAT_SAILOR2,{ npctalk "Do you think It's looking for us too?", "Crewman#dorcon03", bc_self; sleep2 2000; npctalk "Oh, my heart is beating just from the thought of it.", "", bc_self; + setpcblock PCBLOCK_NPC, false; end; } conch_in,166,68,6 script Crewman#dorcon03 4_CAT_SAILOR1,{ + setpcblock PCBLOCK_NPC, true; npctalk "You know, I think First Officer Stello may be able to find another sea route to the new world That's not on the map.", "", bc_self; sleep2 2000; npctalk "Indeed, if it does exist then we can find it and sail on it someday!", "Crewman#dorcon02", bc_self; sleep2 2000; npctalk "I should stay on Con-Chliina for a long time and witness the moment when we make a discovery.", "", bc_self; + setpcblock PCBLOCK_NPC, false; end; } diff --git a/npc/re/instances/DevilTower.txt b/npc/re/instances/DevilTower.txt index 3903d78fd9..19dfae549c 100644 --- a/npc/re/instances/DevilTower.txt +++ b/npc/re/instances/DevilTower.txt @@ -466,12 +466,14 @@ OnTimer26000: mes "Do you hear that?"; mes "Help Fama take care of the injured soldiers."; mes "Fama will give you first aid-kits, use it to help the injured people."; - // close2;// still attached + close2; + setpcblock PCBLOCK_NPC, true; npctalk "Officer Heim: Do you hear that?"; sleep2 2000; npctalk "Officer Heim: Help Fama take care of the injured soldiers."; sleep2 2000; npctalk "Healer Fama: Okay~ You are going to help me? Come here and receive the first aid kit~!"; + setpcblock PCBLOCK_NPC, false; end; case 1: mes "[Officer Heim]"; @@ -648,7 +650,7 @@ OnTouch: .@lucile$ = instance_npcname("Lucile#tnm01"); .@heim$ = instance_npcname("Officer Heim#heim"); 'devil_tower = 3; - mes ""; // todo fix me "workinprogress" + setpcblock PCBLOCK_NPC, true; cutin "tnm_lucile01.bmp",2; sleep2 1500; npctalk "Lucile: I am Lucile from the Assassin Guild.", .@lucile$; @@ -699,6 +701,7 @@ OnTouch: npctalk "Officer Heim: They are so unpredictable. You know what is going on right? Back them up...", .@heim$; sleep2 2500; npctalk "Officer Heim: Help us take care of the demons coming down from upstairs.", .@heim$; + setpcblock PCBLOCK_NPC, false; end; } } @@ -1413,13 +1416,14 @@ OnTimer7000: OnTouch: if ('devil_tower != 9) end; - mes ""; // todo fix me "workinprogress" + setpcblock PCBLOCK_NPC, true; disablenpc instance_npcname("#tnm3event01"); enablenpc instance_npcname("Young Girl#tnm01"); sleep2 4000; mapannounce 'map_tnm3$, "Young Girl: Odin Preserve me! A demon!! Help me!", bc_map,0xFF00; 'mob_count = 12; initnpctimer; + setpcblock PCBLOCK_NPC, false; end; OnTimer1000: monster 'map_tnm3$,33,171,"Evil Shadow",2939,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW1 @@ -1596,7 +1600,7 @@ OnMobDead: OnTouch_: if ('devil_tower == 11) { 'devil_tower = 12; - mes ""; // todo fix me "workinprogress" + setpcblock PCBLOCK_NPC, true; sleep2 1000; npctalk "Evil Shadow: I thought I smelled rats sneaking in here. I was right!!"; sleep2 3000; @@ -1605,6 +1609,7 @@ OnTouch_: npctalk "Evil Shadow: I summon the Darkness!!"; disablenpc instance_npcname("Evil Shadow#tnm3mob01"); donpcevent instance_npcname("Evil Shadow kill#tnm3mob01") + "::OnSummon"; + setpcblock PCBLOCK_NPC, false; } end; } @@ -1647,7 +1652,7 @@ OnTouch_:// possibility to skip this step end; if ('shade == 0) { 'shade = 1; - mes ""; // todo fix me "workinprogress" + setpcblock PCBLOCK_NPC, true; sleep2 1000; npctalk "Demonic Shade: So you are the trouble makers!"; sleep2 2000; @@ -1656,6 +1661,7 @@ OnTouch_:// possibility to skip this step npctalk "Demonic Shade: The eternal truth is I will turn your deaths into the Demon's life with your hearts' blood!!!"; disablenpc instance_npcname("Demonic Shade#mobmaster"); donpcevent instance_npcname("#mobmaster_kill") + "::OnSummon"; + setpcblock PCBLOCK_NPC, false; } end; } diff --git a/npc/re/instances/HorrorToyFactory.txt b/npc/re/instances/HorrorToyFactory.txt index 5234fad42d..412d2f165b 100644 --- a/npc/re/instances/HorrorToyFactory.txt +++ b/npc/re/instances/HorrorToyFactory.txt @@ -701,8 +701,7 @@ OnStart: close; } close2; - pcblockmove getcharid(3),1;// todo : not able to talk to npc - pcblockskill getcharid(3),1; + setpcblock PCBLOCK_NPC, true; switch(.@num) { case 1: npctalk "Worker: Ah! Grandpa? He's a real good man. He oiled us everyday and cleaned the dust very often."; @@ -760,8 +759,7 @@ OnStart: 'worker[.@num] = 1; donpcevent instance_npcname("#fac2wpc") + "::OnStart"; } - pcblockmove getcharid(3),0; - pcblockskill getcharid(3),0; + setpcblock PCBLOCK_NPC, false; end; } mes "[Worker]"; diff --git a/npc/re/instances/MorseCave.txt b/npc/re/instances/MorseCave.txt index 4068041b8b..3a99bea9fb 100644 --- a/npc/re/instances/MorseCave.txt +++ b/npc/re/instances/MorseCave.txt @@ -224,7 +224,7 @@ OnTouch: // note : party member can also trigger this event disablenpc instance_npcname("#RZ Memorial Start"); 'soul_name$ = strcharinfo(0); // name displayed on soul is defined at entrance - mes ""; + setpcblock PCBLOCK_NPC, true; sleep2 500; mapannounce 'map_rev$, "Morocc: Who dares to disrupt my sleep?!", bc_map,0xEBFF; unittalk getcharid(3), "" + strcharinfo(0) + " : We came to the right place!"; @@ -234,6 +234,7 @@ OnTouch: specialeffect2 EF_LOCKON; unittalk getcharid(3), "" + strcharinfo(0) + " : Are these hideous monsters Morocc's lackeys?"; donpcevent instance_npcname("#RZ Event_1") + "::OnStart"; + setpcblock PCBLOCK_NPC, false; end; } @@ -291,7 +292,7 @@ OnStart: 1@rev,104,176,0 script #RZ Event_3 HIDDEN_WARP_NPC,4,4,{ end; OnTouch: // note : party member can also trigger this event - mes ""; // fix me + setpcblock PCBLOCK_NPC, true; disablenpc instance_npcname("#RZ Event_3"); enablenpc instance_npcname("Weakened Morocc#RZ1"); unittalk getcharid(3), "" + strcharinfo(0) + " : Finally, here we are, Morocc."; @@ -301,7 +302,8 @@ OnTouch: // note : party member can also trigger this event unittalk getcharid(3), "" + strcharinfo(0) + " : but it doesn't matter; you'll die today!"; sleep2 3000; specialeffect2 EF_LOCKON; - donpcevent instance_npcname("Weakened Morocc#RZ1") + "::OnTalk1"; + donpcevent instance_npcname("Weakened Morroc#RZ1") + "::OnTalk1"; + setpcblock PCBLOCK_NPC, false; end; } @@ -392,11 +394,13 @@ OnMobDead: 1@rev,35,119,0 script #Battle_1RZ1 HIDDEN_WARP_NPC,2,2,{ end; OnTouch: - pcblockmove 0, true; - if ('status_battle[0] == 0) { + if ('status_battle[0] != 0) + setpcblock PCBLOCK_MOVE, true; + else { 'status_battle[0] = 1; donpcevent instance_npcname("#RZ Memorial Effect 1") + "::OnStart"; - mapannounce 'map_rev$, "Morocc: How do you like to be separated from each other and have your bodies and minds bound?", bc_map,0xEBFF; + setpcblock PCBLOCK_NPC, true; + mapannounce 'map_rev$, "Morroc: How do you like to be separated from each other and have your bodies and minds bound?", bc_map,0xEBFF; sleep2 3000; mapannounce 'map_rev$, "Morocc: You're trespassing! Riff-raff like you have no business in here!", bc_map,0xEBFF; sleep2 3000; @@ -406,6 +410,7 @@ OnTouch: sleep2 3000; mapannounce 'map_rev$, "Morocc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF; donpcevent instance_npcname("#morse_cave_wave_1") + "::OnStart"; + setpcblock (PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_COMMANDS|PCBLOCK_NPCCLICK), false; } end; } @@ -415,7 +420,7 @@ OnTouch: 1@rev,112,116,0 script #Battle_1RZ2 HIDDEN_WARP_NPC,2,2,{ end; OnTouch: - pcblockmove 0, true; + setpcblock PCBLOCK_MOVE, true; if ('status_battle[1] == 0) { 'status_battle[1] = 1; donpcevent instance_npcname("#RZ Memorial Effect 2") + "::OnStart"; @@ -497,7 +502,7 @@ OnStart: if (isloggedin(.@account_id[.@i],.@char_id[.@i]) == false) continue; if (strcharinfo(3,.@char_id[.@i]) == 'map_rev$) - pcblockmove .@account_id[.@i], false; + setpcblock PCBLOCK_MOVE, false, .@account_id[.@i]; } mapwarp 'map_rev$,"prontera",97,167; } @@ -573,9 +578,9 @@ OnTouch: specialeffect EF_ICEWALL; initnpctimer; } - pcblockmove 0, true; + setpcblock PCBLOCK_MOVE, true; if (.@num < 7 && 'status_battle[0] == 0) { - mes ""; // fix me + setpcblock PCBLOCK_NPC, true; 'status_battle[0] = 1; donpcevent instance_npcname("#RZ Memorial Effect 1") + "::OnStart"; mapannounce 'map_rev$, "Morocc: How do you like to be separated from each other and have your bodies and minds bound?", bc_map,0xEBFF; @@ -588,13 +593,14 @@ OnTouch: sleep2 3000; mapannounce 'map_rev$, "Morocc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF; donpcevent instance_npcname("#morse_cave_wave_1") + "::OnStart"; + setpcblock (PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_COMMANDS|PCBLOCK_NPCCLICK), false; } else if (.@num >= 7 && .@num < 13 && 'status_battle[1] == 0) { 'status_battle[1] = 1; donpcevent instance_npcname("#RZ Memorial Effect 2") + "::OnStart"; } else if (.@num >= 21 && .@num < 33 && 'status_battle[2] == 0) { - mes ""; // fix me + setpcblock PCBLOCK_NPC, true; 'status_battle[2] = 1; donpcevent instance_npcname("#RZ Memorial Effect 3") + "::OnStart"; mapannounce 'map_rev$, "Morocc: This world of mine is evolving.", bc_map,0xEBFF; @@ -605,6 +611,7 @@ OnTouch: sleep2 3000; mapannounce 'map_rev$, "Morocc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF; donpcevent instance_npcname("#morse_cave_wave_2") + "::OnStart"; + setpcblock (PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_COMMANDS|PCBLOCK_NPCCLICK), false; } end; OnTimer30000: @@ -648,10 +655,10 @@ OnStop: 1@rev,33,111,0 script #RZ Debuff_1 HIDDEN_WARP_NPC,12,4,{ end; OnTouch: - pcblockmove 0, true; .@num = atoi( replacestr( strnpcinfo(2), "RZ Debuff_", "" ) ); + setpcblock PCBLOCK_MOVE, true; if (.@num < 5 && 'status_battle[0] == 0) { - mes ""; // fix me + setpcblock PCBLOCK_NPC, true; 'status_battle[0] = 1; donpcevent instance_npcname("#RZ Memorial Effect 1") + "::OnStart"; mapannounce 'map_rev$, "Morocc: How do you like to be separated from each other and have your bodies and minds bound?", bc_map,0xEBFF; @@ -664,13 +671,14 @@ OnTouch: sleep2 3000; mapannounce 'map_rev$, "Morocc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF; donpcevent instance_npcname("#morse_cave_wave_1") + "::OnStart"; + setpcblock (PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_COMMANDS|PCBLOCK_NPCCLICK), false; } else if (.@num >= 5 && .@num < 9 && 'status_battle[1] == 0) { 'status_battle[1] = 1; donpcevent instance_npcname("#RZ Memorial Effect 2") + "::OnStart"; } else if (.@num >= 9 && .@num < 16 && 'status_battle[2] == 0) { - mes ""; // fix me + setpcblock PCBLOCK_NPC, true; 'status_battle[2] = 1; donpcevent instance_npcname("#RZ Memorial Effect 3") + "::OnStart"; mapannounce 'map_rev$, "Morocc: This world of mine is evolving.", bc_map,0xEBFF; @@ -681,6 +689,7 @@ OnTouch: sleep2 3000; mapannounce 'map_rev$, "Morocc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF; donpcevent instance_npcname("#morse_cave_wave_2") + "::OnStart"; + setpcblock (PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_COMMANDS|PCBLOCK_NPCCLICK), false; } end; } @@ -732,7 +741,7 @@ OnTouch: 1@rev,34,47,0 script #Battle_2RZ1 HIDDEN_WARP_NPC,3,3,{ end; OnTouch: - pcblockmove 0, true; + setpcblock PCBLOCK_MOVE, true; if ('status_battle[2] == 0) { 'status_battle[2] = 1; donpcevent instance_npcname("#RZ Memorial Effect 3") + "::OnStart"; @@ -832,7 +841,7 @@ OnStart: if (isloggedin(.@account_id[.@i],.@char_id[.@i]) == false) continue; if (strcharinfo(3,.@char_id[.@i]) == 'map_rev$) - pcblockmove .@account_id[.@i], false; + setpcblock PCBLOCK_MOVE, false, .@account_id[.@i]; } mapwarp 'map_rev$,"prontera",97,167; } @@ -849,7 +858,7 @@ OnStart: if (isloggedin(.@account_id[.@i],.@char_id[.@i]) == false) continue; if (strcharinfo(3,.@char_id[.@i]) == 'map_rev$) - pcblockmove .@account_id[.@i], false; + setpcblock PCBLOCK_MOVE, false, .@account_id[.@i]; } // enablenpc instance_npcname("#RZ Debuff Recovery_1"); // enablenpc instance_npcname("#RZ Debuff Recovery_2"); @@ -919,7 +928,8 @@ OnStop: end; OnTouch: disablenpc instance_npcname("#Battle_3RZ1"); - mapannounce 'map_rev$, "Morocc: I can't let you go unscathed!", bc_map,0xEBFF; + setpcblock PCBLOCK_NPC, true; + mapannounce 'map_rev$, "Morroc: I can't let you go unscathed!", bc_map,0xEBFF; sleep2 3000; mapannounce 'map_rev$, "Morocc: Hah hah, my Necromancer. I'll leave them to you.", bc_map,0xEBFF; sleep2 3000; @@ -942,6 +952,7 @@ OnTouch: sleep2 3000; disablenpc .@necromancer$; donpcevent instance_npcname("#morse_cave_3") + "::OnStart"; + setpcblock PCBLOCK_NPC, false; end; } @@ -1162,7 +1173,7 @@ OnInstanceInit: if (isloggedin(.@account_id[.@i],.@char_id[.@i]) == false) continue; if (strcharinfo(3,.@char_id[.@i]) == 'map_rev$) - pcblockmove .@account_id[.@i], false; + setpcblock PCBLOCK_MOVE, false, .@account_id[.@i]; } } end; diff --git a/npc/re/instances/SarahAndFenrir.txt b/npc/re/instances/SarahAndFenrir.txt index 1348f1ae3e..36285cdcd4 100644 --- a/npc/re/instances/SarahAndFenrir.txt +++ b/npc/re/instances/SarahAndFenrir.txt @@ -500,7 +500,7 @@ dali02,93,146,6 script Assistant Professor#a1 4_M_REPAIR,{ end; OnTouch: disablenpc instance_npcname("#glast_event_1"); - mes ""; + setpcblock PCBLOCK_NPC, true; specialeffect2 EF_HIT2; unittalk getcharid(3), "" + strcharinfo(0) + " : Huh? Somebody there? Hello~ You must be a traveler."; sleep2 3000; @@ -525,6 +525,7 @@ OnTouch: npctalk "Fenrith Fenrir: Buy me some time while I cast magic! I will handle this!", 'fenrir_1$; donpcevent instance_npcname("#glast_event_1") + "::OnBar"; donpcevent instance_npcname("#glast_event_1") + "::OnEvent"; + setpcblock PCBLOCK_NPC, false; end; OnBar: progressbar_npc "000000",10, 'fenrir_1$; @@ -563,7 +564,7 @@ OnMobDead: end; OnTouch: disablenpc instance_npcname("#glast_event_3"); - mes ""; + setpcblock PCBLOCK_NPC, true; cutin "fenrir_a.bmp",2; npctalk "Fenrith Fenrir: By the way, I know it was sudden but thank you for helping.", 'fenrir_1$; sleep2 2000; @@ -593,6 +594,7 @@ OnTouch: enablenpc instance_npcname("#glast_move_01"); enablenpc instance_npcname("#glast_event_5"); enablenpc 'fenrir_2$; + setpcblock PCBLOCK_NPC, false; end; } @@ -705,7 +707,7 @@ OnTouch: end; OnTouch: disablenpc instance_npcname("#glast_event_5"); - mes ""; + setpcblock PCBLOCK_NPC, true; cutin "fenrir_a.bmp",2; npctalk "Fenrith Fenrir: You are still in Glast Heim? Why aren't you leaving this dangerous place?", 'fenrir_2$; sleep2 2000; @@ -741,6 +743,7 @@ OnTouch: enablenpc 'fenrir_3$; enablenpc instance_npcname("#glast_event_7"); disablenpc instance_npcname("#glast_move_01"); // officially player can be stucked in entrance + setpcblock PCBLOCK_NPC, false; end; } @@ -753,12 +756,13 @@ OnTouch: if (is_party_leader() == false) npctalk "Fenrith Fenrir: I would like your party leader to come and help me!", 'fenrir_3$; else { - mes ""; + setpcblock PCBLOCK_NPC, true; disablenpc instance_npcname("#glast_event_7"); npctalk "Fenrith Fenrir: You came! I was waiting!", 'fenrir_3$; sleep2 2000; npctalk "Fenrith Fenrir: We don't have much time! We have to go search for it now! Let's go in!", 'fenrir_3$; sleep2 2000; + setpcblock PCBLOCK_NPC, false; if ('skip_left_part == 0) {// 5 mins have passed? donpcevent instance_npcname("#fenrir_left_final_2") + "::OnStop"; disablenpc 'fenrir_3$; @@ -777,7 +781,7 @@ OnTouch: end; OnTouch: disablenpc instance_npcname("#glast_event_9"); - mes ""; + setpcblock PCBLOCK_NPC, true; cutin "fenrir_a.bmp",2; npctalk "Fenrith Fenrir: The sword of Baldur, Sentinel Breeze... even after 1000 years..", 'fenrir_4$; sleep2 3000; @@ -820,6 +824,7 @@ OnTouch: monster 'map_glast$,49,363, "Gigantes#semi1", 3191,1, instance_npcname("#fenrir_left_final_1") + "::OnMobDead";// MM_M_GIGAN1 monster 'map_glast$,41,363, "Gigantes#semi2", 3192,1, instance_npcname("#fenrir_left_final_1") + "::OnMobDead";// MM_M_GIGAN2 donpcevent instance_npcname("#glast_event_9") + "::OnEvent"; + setpcblock PCBLOCK_NPC, false; end; OnEvent: sleep 15000; @@ -1028,7 +1033,7 @@ OnTouch: disablenpc instance_npcname("#glast_event_13"); //for ( .@i = 1; .@i < 8; .@i++ ) // disablenpc instance_npcname("#glast_event_warp_" + .@i); - mes ""; + setpcblock PCBLOCK_NPC, true; cutin "fenrir_a.bmp",2; sleep2 1000; npctalk "Fenrith Fenrir: I need to go to Glast Heim Castle to retrieve the sword of Baldur.", 'fenrir_5$; @@ -1045,6 +1050,7 @@ OnTouch: npctalk "Fenrith Fenrir: Then I will go on ahead! Warp!", 'fenrir_5$; cutin "",255; donpcevent instance_npcname("#glast_event_13") + "::OnBar"; + setpcblock PCBLOCK_NPC, false; end; OnBar: progressbar_npc "000000",3, 'fenrir_5$; @@ -1117,7 +1123,7 @@ OnTouch: disablenpc instance_npcname("#glast_move_03"); disablenpc instance_npcname("#glast_event_15"); donpcevent instance_npcname("#fenrir_boss_final_2") + "::OnStop"; - mes ""; + setpcblock PCBLOCK_NPC, true; sleep2 1000; npctalk "Fenrith Fenrir: I was waiting. Thank you for not being late.", 'fenrir_6$; sleep2 3000; @@ -1128,6 +1134,7 @@ OnTouch: enablenpc instance_npcname("#glast_event_18"); enablenpc instance_npcname("Sarah Irene#glast_17"); enablenpc 'fenrir_7$; + setpcblock PCBLOCK_NPC, false; end; } @@ -1138,7 +1145,7 @@ OnTouch: end; OnTouch: disablenpc instance_npcname("#glast_event_18"); - mes ""; + setpcblock PCBLOCK_NPC, true; cutin "sarah_hero3.bmp",0; sleep2 1000; npctalk "Sarah Irene: It seemed like forever waiting for you~ Fenrith Fenrir.", 'sarah_17$; @@ -1179,6 +1186,7 @@ OnTouch: donpcevent instance_npcname("#glast_event_19") + "::OnEvent"; monster 'map_glast$,200,336, "Sarah Irene#1",3190,1, instance_npcname("#fenrir_boss_final_1") + "::OnBossDead"; // MM_SARAH 'boss_id = $@mobid[0]; + setpcblock PCBLOCK_NPC, false; end; OnBar: progressbar_npc "000000",3, 'fenrir_7$; @@ -1628,7 +1636,7 @@ OnMobDead: end; OnTouch: disablenpc instance_npcname("#glast_event_24"); - mes ""; + setpcblock PCBLOCK_NPC, true; sleep2 1500; cutin "fenrir_b.bmp",2; npctalk "Fenrith Fenrir: Hehe.. You are certainly skilled but I think you have underestimated me, Valkyrie.", 'fenrir_10$; @@ -1648,6 +1656,7 @@ OnTouch: cutin "",255; disablenpc 'fenrir_10$; donpcevent instance_npcname("#sarah_wrath") + "::OnStart"; + setpcblock PCBLOCK_NPC, false; end; } diff --git a/npc/re/merchants/nightmare_biolab.txt b/npc/re/merchants/nightmare_biolab.txt index 98f77e72dc..e1f097d671 100644 --- a/npc/re/merchants/nightmare_biolab.txt +++ b/npc/re/merchants/nightmare_biolab.txt @@ -173,8 +173,6 @@ lighthalzen,321,218,4 script Ohno Tohiro#1 4_M_RASWORD,{ if (countitem(7347) < 10) { mes "[Ohno Tohiro]"; mes "It seems 10 research charts are missing now."; - mes ""; - mes ""; mes "Maybe you didn't pick them up from the warehouse."; next; mes "[Ohno Tohiro]"; diff --git a/npc/re/quests/quests_15_2.txt b/npc/re/quests/quests_15_2.txt index d5f2bea129..c3633fcf89 100644 --- a/npc/re/quests/quests_15_2.txt +++ b/npc/re/quests/quests_15_2.txt @@ -20,9 +20,7 @@ function script F_time_limit_recorder { function script F_erase_datas_recorder { if (callfunc("F_time_limit_recorder") == 1) return; - mes ""; mes "Your whole body suddenly becomes heavy and time seems to be passing faster around you."; - mes ""; for ( .@quest_id = 5341; .@quest_id < 5371; .@quest_id++ ) { if (isbegin_quest(.@quest_id) > 0) erasequest .@quest_id; diff --git a/npc/re/quests/quests_16_1.txt b/npc/re/quests/quests_16_1.txt index 82d25949fc..dbec13cb2c 100644 --- a/npc/re/quests/quests_16_1.txt +++ b/npc/re/quests/quests_16_1.txt @@ -184,9 +184,11 @@ prt_cas,215,146,0 script #ep16_evt_01_on HIDDEN_WARP_NPC,1,1,{ end; OnTouch: if (banquet_main_quest == 1) { + setpcblock PCBLOCK_NPC, true; classchange( 4_M_RUSMAN1, "Chamberlain Bell#ep16_0_0", bc_self ); sleep2 2000; npctalk "I've been waiting for you. Sir " + strcharinfo(0) + "...", "Chamberlain Bell#ep16_0_0", bc_self; + setpcblock PCBLOCK_NPC, false; } end; } @@ -471,7 +473,7 @@ prt_cas_q,26,30,3 script Chamberlain Bell#ep16_m 4_M_RUSMAN1,{ case 11: case 12: case 13: - mes ""; + setpcblock PCBLOCK_NPC, true; npctalk "You are back already?", "", bc_self; sleep2 1000; classchange( 4_M_JOB_WIZARD, "Court Mage Nillem#ep16_1", bc_self ); @@ -494,6 +496,7 @@ prt_cas_q,26,30,3 script Chamberlain Bell#ep16_m 4_M_RUSMAN1,{ sleep2 1000; npctalk "One!", "Court Mage Nillem#ep16_1", bc_self; sleep2 1000; + setpcblock PCBLOCK_NPC, false; warp "prt_lib",89,44; end; case 14: @@ -580,11 +583,13 @@ prt_cas_q,26,30,3 script Chamberlain Bell#ep16_m 4_M_RUSMAN1,{ mes "Court Mage Nillem opened the door and left right away."; mes "Saying, 'Where are you?' " + strcharinfo(0) + " The magician must be looking for you."; close2; + setpcblock PCBLOCK_NPC, true; sleep2 50; classchange( 4_M_JOB_WIZARD, "Court Mage Nillem#ep16_1", bc_self ); npctalk "There you are!", "Court Mage Nillem#ep16_1", bc_self; sleep2 50; npctalk "What an impeccable timing...", bc_self; + setpcblock PCBLOCK_NPC, false; end; case 19: case 20: @@ -604,6 +609,7 @@ prt_cas_q,26,30,3 script Chamberlain Bell#ep16_m 4_M_RUSMAN1,{ mes "Wait a second."; mes "I have just sent a message. The magician will arrive here soon."; close2; + setpcblock PCBLOCK_NPC, true; sleep2 1000; classchange( 4_M_JOB_WIZARD, "Court Mage Nillem#ep16_1", bc_self ); if (banquet_main_quest < 25) { @@ -633,6 +639,7 @@ prt_cas_q,26,30,3 script Chamberlain Bell#ep16_m 4_M_RUSMAN1,{ break; } } + setpcblock PCBLOCK_NPC, false; end; case 2: mes "[Belle]"; @@ -1371,7 +1378,7 @@ prt_cas,183,164,0 script #ep16_evt_7689 HIDDEN_WARP_NPC,1,1,{ end; OnTouch: if (banquet_main_quest == 5) { - mes ""; + setpcblock PCBLOCK_NPC, true; unittalk getcharid(3), "" + strcharinfo(0) + " : ...Hum? Who's coming?", bc_self; sleep2 2000; classchange( 4_LGTSCIENCE, "#ep16_7689_01", bc_self ); @@ -1415,6 +1422,7 @@ OnTouch: } sleep2 2000; classchange( HIDDEN_WARP_NPC, "Skia Nerius#ep16_7689", bc_self ); + setpcblock PCBLOCK_NPC, false; } end; } @@ -1501,10 +1509,12 @@ prt_cas,27,43,0 script #ep16_evt_7690 HIDDEN_WARP_NPC,1,1,{ end; OnTouch: if (banquet_main_quest == 6) { + setpcblock PCBLOCK_NPC, true; classchange( 4_EP16_NIHIL, "Unstable Nyhill#ep16_76", bc_self ); classchange( 4_EP16_SKIA, "Skia Nerius#ep16_7690", bc_self ); sleep2 1000; npctalk "Are you OK?", "Skia Nerius#ep16_7690", bc_self; + setpcblock PCBLOCK_NPC, false; } end; } @@ -1826,10 +1836,12 @@ OnTouch: classchange( 4_EP16_GRANZ, "Kronecker G. Heine#ep16_1", bc_self ); classchange( 4_EP16_NIHIL, "Nyhill M. Heine#ep16_li", bc_self ); classchange( 1_M_JOBTESTER, "Ian Walther#ep16_lib01", bc_self ); + setpcblock PCBLOCK_NPC, true; sleep2 2000; npctalk "You are here at last.", "Ian Walther#ep16_lib01", bc_self; sleep2 3000; npctalk "I have something to tell you, special guest.", "Ian Walther#ep16_lib01", bc_self; + setpcblock PCBLOCK_NPC, false; } if (banquet_main_quest == 24) classchange( 4_EP16_GRANZ, "Kronecker G. Heine#ep16_1", bc_self ); @@ -2176,6 +2188,7 @@ prt_lib,85,82,5 script Ian Walther#ep16_lib01 HIDDEN_WARP_NPC,{ erasequest 7693;// Surprise Attack banquet_main_quest = 10; close2; + setpcblock PCBLOCK_NPC, true; npctalk "Magician! Activate the gate.", "Ian Walther#ep16_lib01", bc_self; sleep2 2000; npctalk "Oh, yes. The gate has been activated since others used it earlier.", "Mage Nillem#ep16_warp", bc_self; @@ -2189,6 +2202,7 @@ prt_lib,85,82,5 script Ian Walther#ep16_lib01 HIDDEN_WARP_NPC,{ sleep2 2000; classchange( HIDDEN_WARP_NPC, "Kronecker G. Heine#ep16_2", bc_self ); classchange( HIDDEN_WARP_NPC, "Nyhill M. Heine#ep16_li", bc_self ); + setpcblock PCBLOCK_NPC, false; } end; } @@ -3917,7 +3931,8 @@ prt_cas_q,20,139,3 script Spica Nerius#ep16_room01_a 4_EP16_SPICA,{ cutin "ep16_crux_findel02",2; mes "[Crux]"; mes "See you later."; - // close2;// player still talking + close2; + setpcblock PCBLOCK_NPC, true; cutin "",255; npctalk "Why are you letting the guest out?", "", bc_self; sleep2 1000; @@ -3930,6 +3945,7 @@ prt_cas_q,20,139,3 script Spica Nerius#ep16_room01_a 4_EP16_SPICA,{ npctalk "I don't mean that!", "", bc_self; sleep2 3000; unittalk getcharid(3), "" + strcharinfo(0) + " : (Oh my, I'd better get out now.)", bc_self; + setpcblock PCBLOCK_NPC, false; end; } @@ -5679,7 +5695,7 @@ OnTouch: if (banquet_main_quest < 17) classchange( HIDDEN_WARP_NPC, "Peter Heine#ep16_02", bc_self ); // custom - officially hidden from #ep16_heine_evt01. However the npc is not hidden when the player is not in npc visual range if (banquet_heine_quest == 0 && banquet_main_quest == 2) { - mes ""; + setpcblock PCBLOCK_NPC, true; npctalk "You are in no place to say such a thing!", "Kronecker G. Heine#ep16", bc_self; sleep2 3000; npctalk "I'll go back to the head house. Please give me your permission.", "Nyhill M. Heine#ep16_01", bc_self; @@ -5707,6 +5723,7 @@ OnTouch: banquet_heine_quest = 1; setquest 7683;// Visit the Heines } + setpcblock PCBLOCK_NPC, false; } end; } @@ -5718,7 +5735,7 @@ prt_cas_q,141,36,0 script #ep16_evt_7686 HIDDEN_WARP_NPC,1,1,{ end; OnTouch: if (banquet_heine_quest >= 1 && isbegin_quest(7686) == 0) { - mes ""; + setpcblock PCBLOCK_NPC, true; classchange( 4_EP16_NIHIL, "Nyhill#ep16_7686", bc_self ); classchange( 4_EP16_SKIA, "Skia#ep16_7686", bc_self ); npctalk "Are you the shadow princess whom people talk about?", "Nyhill#ep16_7686", bc_self; @@ -5774,6 +5791,7 @@ OnTouch: setquest 7686;// Nyhill and Skia completequest 7686;// Nyhill and Skia } + setpcblock PCBLOCK_NPC, false; } end; } @@ -12715,10 +12733,11 @@ prt_cas,89,244,7 script Banquet Hall Guest#6 4_M_NOV_HUNT,{ } prt_cas,91,237,3 script Ekinasia#ep16_etc01 1_F_SIGNZISK,{ - // pcblocknpc + setpcblock PCBLOCK_NPC, true; npctalk "It's been a while since the last time a royal banquet like this was held.", "Ekinasia#ep16_etc01", bc_self; sleep2 3000; npctalk "We need to blow off some steam like this from time to time.", "Ekinasia#ep16_etc01", bc_self; + setpcblock PCBLOCK_NPC, false; end; } @@ -12741,12 +12760,13 @@ prt_cas,78,255,3 script Mayssel#ep16_etc05 4_F_MAYSEL,{ } prt_cas,78,252,2 script Verkhasel#ep_etc06 4_M_GUILLOTINE,{ - // pcblocknpc + setpcblock PCBLOCK_NPC, true; npctalk "I want to go back now.", "Verkhasel#ep_etc06", bc_self; sleep2 3000; npctalk "...You can't.", "Mayssel#ep16_etc05", bc_self; sleep2 3000; npctalk "You made that very clear, hahahaha!", "Vicente#ep16_etc07", bc_self; + setpcblock PCBLOCK_NPC, false; end; } @@ -13370,7 +13390,7 @@ prt_cas,379,124,3 script Glamorous Girl#pop 4_F_ARUNA_POP,{ } prt_cas,368,125,3 script Dumk#ep16_etc03 4_M_SHADOWCHASER,{ - mes ""; + setpcblock PCBLOCK_NPC, true; npctalk "Where is he?", "Dumk#ep16_etc03", bc_self; sleep2 3000; npctalk "I don't know.", "Kid#ep16_etc04", bc_self; @@ -13387,6 +13407,7 @@ prt_cas,368,125,3 script Dumk#ep16_etc03 4_M_SHADOWCHASER,{ sleep2 1000; unittalk getcharid(3), "" + strcharinfo(0) + " : (Shaking the head from side to side)", bc_self; emotion ET_STARE_ABOUT, playerattached(); + setpcblock PCBLOCK_NPC, false; end; } prt_cas,367,123,7 duplicate(Dumk#ep16_etc03) Kid#ep16_etc04 4_M_ACROSS @@ -13418,9 +13439,11 @@ prt_cas,161,168,5 script Royal Guardian Knight#0_left 4_M_CRU,{ prt_cas,152,163,0 script prt_cas_1#0_left WARPNPC,1,1,{ OnTouch: if (banquet_main_quest == 0) { + setpcblock PCBLOCK_NPC, true; npctalk "That way is a royal villa for VIPs. Outsiders cannot access the place.", "Royal Guardian Knight#0_left", bc_self; sleep2 3000; npctalk "If you are invited, a servant should be there to greet you. Please be guided officially.", "Royal Guardian Knight#0_left", bc_self; + setpcblock PCBLOCK_NPC, false; end; } warp "prt_cas_q",150,8; @@ -13434,9 +13457,11 @@ prt_cas,270,168,3 duplicate(Royal Guardian Knight#0_left) Royal Guardian Knight# prt_cas,278,163,0 script prt_cas_2#0_right WARPNPC,1,1,{ OnTouch: if (banquet_main_quest == 0) { + setpcblock PCBLOCK_NPC, true; npctalk "That way is a royal villa for VIPs. Outsiders cannot access the place.", "Royal Guardian Knight#0_right", bc_self; sleep2 3000; npctalk "If you are invited, a servant should be there to greet you. Please be guided officially.", "Royal Guardian Knight#0_right", bc_self; + setpcblock PCBLOCK_NPC, false; end; } warp "prt_cas_q",135,119; @@ -13554,10 +13579,11 @@ prt_cas,180,264,3 script Guardian Knight#ep16_pr_1 4_M_CRU,{ } prt_cas,180,251,3 script Guardian Knight#ep16_pr_2 4_M_CRU,{ - // pcblocknpctalk + setpcblock PCBLOCK_NPC, true; npctalk "...On duty. No problem...", "Guardian Knight#ep16_pr_2", bc_self; sleep2 2000; npctalk "I want to go home now.", "Guardian Knight#ep16_pr_2", bc_self; + setpcblock PCBLOCK_NPC, false; end; } @@ -13566,9 +13592,10 @@ OnTouch_: if (banquet_main_quest >= 2) warp "prt_pri00",54,134; else { - // pcblocknpctalk + setpcblock PCBLOCK_NPC, true; npctalk "You shouldn't enter the place like that.", "Guardian Knight#ep16_pr_1", bc_self; sleep2 2000; + setpcblock PCBLOCK_NPC, false; warp "prt_cas",182,258; } end; @@ -14867,6 +14894,7 @@ OnTouch_: break; } unittalk getcharid(3), "" + strcharinfo(0) + " : ?"; + setpcblock PCBLOCK_NPC, true; sleep2 1000; specialeffect EF_POISONSMOKE; getmapxy .@map$, .@x, .@y, BL_NPC; @@ -14875,6 +14903,7 @@ OnTouch_: monster "prt_q",.@x,.@y,"Fly",1035,1, strnpcinfo(0) + "::OnMyMobDead";// HUNTER_FLY setd ".mob_count_" + strnpcinfo(2), 1; hideonnpc strnpcinfo(0); + setpcblock PCBLOCK_NPC, false; end; OnMyMobDead: .@hidden_name$ = strnpcinfo(2); @@ -15766,15 +15795,19 @@ prt_pri00,58,128,4 script Overwatcher Terketh#ep1 4_M_JOB_HUNTER,{ mes "What do you want?"; next; if (select( "To the Past Memories of the Royal Family", "To the oudside" ) == 2) { + setpcblock PCBLOCK_NPC, true; sleep2 2000; npctalk "Well, sure.", "", bc_self; sleep2 2000; + setpcblock PCBLOCK_NPC, false; warp "prt_pri00",53,128; end; } + setpcblock PCBLOCK_NPC, true; sleep2 2000; npctalk "Take care. Do not snoop around too much!", "", bc_self; sleep2 2000; + setpcblock PCBLOCK_NPC, false; warp "prt_lib",9,28; end; } @@ -15934,7 +15967,8 @@ prt_prison,243,265,6 script Prisoner 243AD265#EP161 4_M_DRAKE,{ mes "Now that the fellow has become freer from death, I wonder what he's up to. I wonder what kind of memory he would write in his next letter."; next; mes "The prisoner started singing as if he was reminiscing about something."; - // close2;// still talk to npc + close2; + setpcblock PCBLOCK_NPC, true; sleep2 30; npctalk "Prisoner 243AD265: We're coming home~~ We're coming home~~", "", bc_self; sleep2 2000; @@ -15968,6 +16002,7 @@ prt_prison,243,265,6 script Prisoner 243AD265#EP161 4_M_DRAKE,{ sleep2 2000; emotion ET_HNG; npctalk "Prisoner 243AD265: It is far from amusing when there is no fellow sailor around.", "", bc_self; + setpcblock PCBLOCK_NPC, false; end; case 2: erasequest 5426;// [Stand by]To My Beloved Fellow diff --git a/npc/re/quests/quests_rockridge.txt b/npc/re/quests/quests_rockridge.txt index aea0493918..0c8f9db92e 100644 --- a/npc/re/quests/quests_rockridge.txt +++ b/npc/re/quests/quests_rockridge.txt @@ -174,11 +174,12 @@ harboro1,80,218,5 script Costello#harboro1 10210,{ end; } if (rock_main_quest == 1) { - mes "";// todo fix me + setpcblock PCBLOCK_NPC, true; unittalk getcharid(3), "" + strcharinfo(0) + " : Mr. Costello?", bc_self; sleep2 1000; npctalk "*Gasp*", "", bc_self;; sleep2 1000; + setpcblock PCBLOCK_NPC, false; mes "[Costello]"; mes "*Ahem* Yes, this is him."; mes "I'm Costello, mayor of Rock Ridge."; @@ -550,7 +551,7 @@ har_in01,20,30,5 script Wyatt Warp#har_in01 10211,{ close; } if (rock_main_quest == 6) { - mes "";// todo fix me + setpcblock PCBLOCK_NPC, true; npctalk "I say we turn him against the rest of his gang.", "Ivoka Skudi#rr03", bc_self; sleep2 2000; npctalk "Don't you think regular torture or threats would work?", "", bc_self; @@ -559,6 +560,7 @@ har_in01,20,30,5 script Wyatt Warp#har_in01 10211,{ sleep2 1000; npctalk "I know. There's Albert.", "", bc_self; sleep2 2000; + setpcblock PCBLOCK_NPC, false; mes "[Wyatt Warp]"; mes "Welcome."; mes "*Chuckle* You're so useful. Just having you standing next to us works like a charm."; @@ -974,15 +976,16 @@ OnTouch: // Prison har_in01,100,14,3 script Vigilante#srdg01 10220,{ - mes "";// todo fix me + setpcblock PCBLOCK_NPC, true; npctalk "You'd better not do anything stupid.", "", bc_self; sleep2 1000; npctalk "I'm watching you like a hawk.", "", bc_self; + setpcblock PCBLOCK_NPC, false; end; } har_in01,81,30,3 script Harold#srdg01 4_TOWER_09,{ - mes "";// todo fix me + setpcblock PCBLOCK_NPC, true; emotion ET_OHNO; npctalk "I can't believe you. Ugh!", "", bc_self; sleep2 1000; @@ -995,15 +998,17 @@ har_in01,81,30,3 script Harold#srdg01 4_TOWER_09,{ npctalk "I can't help it when the food is so delicious.", "Egring#srdg01", bc_self; sleep2 1000; npctalk "Well, that I agree.", "", bc_self; + setpcblock PCBLOCK_NPC, false; end; } har_in01,78,25,5 script Egring#srdg01 4_DR_TORTEL,{ - mes "";// todo fix me + setpcblock PCBLOCK_NPC, true; emotion ET_THROB; npctalk "When are we eating today? What are we having? Beans?", "", bc_self; sleep2 1000; npctalk "It hasn't been even thirty minutes since our last meal!", "Harold#srdg01", bc_self; + setpcblock PCBLOCK_NPC, false; end; } @@ -1018,10 +1023,11 @@ har_in01,89,26,5 script Johnny James#har_in01 10213,{ if (rock_main_quest == 8) { .@player_name$ = strcharinfo(0); - mes "";// todo fix me + setpcblock PCBLOCK_NPC, true; npctalk "You sneaky bastards, how dare you show up again? Go to hell!", "", bc_self; sleep2 2000; classchange( 10212, "Ivoka Skudi#har02", bc_self ); + setpcblock PCBLOCK_NPC, false; npctalk "Ah, you'd better show some respect to our future mayor.", "Ivoka Skudi#har02", bc_self; mes "[Ivoka Skudi]"; mes "I told you I can take care of him."; @@ -1224,7 +1230,7 @@ rockrdg1,164,306,3 duplicate(Johnny James#revt04) Cactus Gunslinger#revt03 HIDDE rockrdg1,156,312,3 script Unmoving Freight Train# 4_ENERGY_RED,{ if (rock_main_quest == 5) { - mes "";// todo fix me + setpcblock PCBLOCK_NPC, true; unittalk getcharid(3), "" + strcharinfo(0) + " : I think this is the place, but maybe I came too early.", bc_self; sleep2 3000; classchange( 10213, "Johnny James#revt04", bc_self ); @@ -1336,6 +1342,7 @@ rockrdg1,156,312,3 script Unmoving Freight Train# 4_ENERGY_RED,{ erasequest 7795; setquest 7796;// Unexpected Arrest rock_main_quest = 6; + setpcblock PCBLOCK_NPC, false; close; } mes "It's worthless and abandoned."; @@ -3928,9 +3935,10 @@ harboro2,164,80,5 script Demon#srdg01 4_M_NFMAN,{ .@account_id = getcharid(3); .@player_name$ = strcharinfo(0); - mes "";// todo fix me + setpcblock PCBLOCK_NPC, true; donpcevent "Traces of Fire#srdg01::OnEffect"; sleep2 1500; + setpcblock PCBLOCK_NPC, false; mes "[Demon]"; mes "Alright, this should do. You know what I need, right? Are you sure you could sneak in? Maybe I should go."; next; @@ -5758,9 +5766,11 @@ harboro1,235,255,6 script Wealthy Merchant's Came#6 4_DST_CAMEL,{ } harboro1,210,219,5 script Priest#srdg01 4_M_MINISTER,{ + setpcblock PCBLOCK_NPC, true; npctalk "Are you anguished or sad? Let me help you.", "", bc_self; sleep2 1500; npctalk "Every one of us is born to be loved.", "", bc_self; + setpcblock PCBLOCK_NPC, false; end; } diff --git a/src/map/clif.cpp b/src/map/clif.cpp index d715f45f05..8ea1ba4d27 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -11516,8 +11516,10 @@ void clif_parse_UseItem(int fd, struct map_session_data *sd) return; } - if ( (!sd->npc_id && pc_istrading(sd)) || sd->chatID || (sd->state.block_action & PCBLOCK_USEITEM) ) + if ( (!sd->npc_id && pc_istrading(sd)) || sd->chatID || (sd->state.block_action & PCBLOCK_USEITEM) ) { + clif_msg(sd, WORK_IN_PROGRESS); return; + } //Whether the item is used or not is irrelevant, the char ain't idle. [Skotlex] if (battle_config.idletime_option&IDLE_USEITEM) @@ -12230,8 +12232,10 @@ void clif_parse_skill_toid( struct map_session_data* sd, uint16 skill_id, uint16 if (inf&INF_GROUND_SKILL || !inf) return; //Using a ground/passive skill on a target? WRONG. - if (sd->state.block_action & PCBLOCK_SKILL) + if (sd->state.block_action & PCBLOCK_SKILL) { + clif_msg(sd, WORK_IN_PROGRESS); return; + } if( SKILL_CHK_HOMUN(skill_id) ) { clif_parse_UseSkillToId_homun(sd->hd, sd, tick, skill_id, skill_lv, target_id); @@ -12346,8 +12350,10 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uin if( !(skill_get_inf(skill_id)&INF_GROUND_SKILL) ) return; //Using a target skill on the ground? WRONG. - if (sd->state.block_action & PCBLOCK_SKILL) + if (sd->state.block_action & PCBLOCK_SKILL) { + clif_msg(sd, WORK_IN_PROGRESS); return; + } if( SKILL_CHK_HOMUN(skill_id) ) { clif_parse_UseSkillToPos_homun(sd->hd, sd, tick, skill_id, skill_lv, x, y, skillmoreinfo); diff --git a/src/map/script.hpp b/src/map/script.hpp index 76f03f57ac..95a831900a 100644 --- a/src/map/script.hpp +++ b/src/map/script.hpp @@ -1911,6 +1911,7 @@ enum e_pcblock_action_flag : uint16 { PCBLOCK_SITSTAND = 0x040, PCBLOCK_COMMANDS = 0x080, PCBLOCK_NPCCLICK = 0x100, + PCBLOCK_NPC = 0x18D, PCBLOCK_EMOTION = 0x200, PCBLOCK_ALL = 0x3FF, }; diff --git a/src/map/script_constants.hpp b/src/map/script_constants.hpp index b35ffa16cf..f5e1778a56 100644 --- a/src/map/script_constants.hpp +++ b/src/map/script_constants.hpp @@ -7220,6 +7220,7 @@ export_constant(PCBLOCK_SITSTAND); export_constant(PCBLOCK_COMMANDS); export_constant(PCBLOCK_NPCCLICK); + export_constant(PCBLOCK_NPC); export_constant(PCBLOCK_EMOTION); export_constant(PCBLOCK_ALL);