From 27fe76b6a48cf51aa87346094845fb0ed6333304 Mon Sep 17 00:00:00 2001 From: mekolat Date: Tue, 21 Apr 2015 00:30:19 -0400 Subject: make PCtoNPCRange smarter --- world/map/npc/004-5/chest.txt | 7 +------ world/map/npc/006-1/miriam.txt | 4 +--- world/map/npc/006-1/pachua.txt | 2 +- world/map/npc/029-1/aahna.txt | 8 +------- world/map/npc/029-1/hasan.txt | 6 ------ world/map/npc/029-1/kaan.txt | 7 ------- world/map/npc/029-1/liana.txt | 7 ------- world/map/npc/029-1/valon.txt | 3 --- world/map/npc/029-1/zegas.txt | 10 ++-------- world/map/npc/029-2/barrels.txt | 8 -------- world/map/npc/029-2/barrels_config.txt | 13 +++++-------- world/map/npc/029-2/morgan.txt | 3 --- world/map/npc/029-2/sorfina.txt | 7 +++---- world/map/npc/029-2/stat_reset.txt | 3 --- world/map/npc/029-2/tanisha.txt | 3 --- world/map/npc/functions/default_npc_checks.txt | 24 ++++++++++++++++++++---- 16 files changed, 34 insertions(+), 81 deletions(-) diff --git a/world/map/npc/004-5/chest.txt b/world/map/npc/004-5/chest.txt index a54739fc..2b815aa3 100644 --- a/world/map/npc/004-5/chest.txt +++ b/world/map/npc/004-5/chest.txt @@ -1,8 +1,7 @@ 004-5,89,67,0|script|Old Chest#crastur|111 { - setarray @npc_loc, 89, 67, 1; + set @npc_distance, 1; callfunc "PCtoNPCRange"; - if(@npc_check == 1) goto L_Closer; set @spants_state, ((QUEST_WG_state & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT); if(@spants_state > 5) goto L_Looted; if(@spants_state != 5) goto L_Unknown; @@ -22,10 +21,6 @@ L_Unknown: mes "You have no idea how to open this chest."; goto L_Close; -L_Closer: - mes "You need to move closer to open the chest."; - goto L_Close; - L_Close: close; } diff --git a/world/map/npc/006-1/miriam.txt b/world/map/npc/006-1/miriam.txt index f513955b..8b7ebdb4 100644 --- a/world/map/npc/006-1/miriam.txt +++ b/world/map/npc/006-1/miriam.txt @@ -20,10 +20,8 @@ 006-1,115,111,0|script|Miriam|175 { - setarray @npc_loc, 115, 111, 2; + set @npc_distance, 2; callfunc "PCtoNPCRange"; - if (@npc_check) - goto L_Close; if (getskilllv(SKILL_SPEED)) goto L_fast; if (getequipid(equip_torso) < 0) goto L_naked; diff --git a/world/map/npc/006-1/pachua.txt b/world/map/npc/006-1/pachua.txt index 7b39dce7..cdc8d40e 100644 --- a/world/map/npc/006-1/pachua.txt +++ b/world/map/npc/006-1/pachua.txt @@ -1,6 +1,6 @@ 006-1,24,113,0|script|Pachua|143 { - setarray @npc_loc, 24, 113, 4; + set @distance_handler, 1; callfunc "PCtoNPCRange"; if (@npc_check) goto L_Close; diff --git a/world/map/npc/029-1/aahna.txt b/world/map/npc/029-1/aahna.txt index e9da0d20..92f7ff6b 100644 --- a/world/map/npc/029-1/aahna.txt +++ b/world/map/npc/029-1/aahna.txt @@ -3,10 +3,8 @@ // Npc 029-1,71,52,0|script|Aahna|404 { - setarray @npc_loc, 71, 52, 3; + set @npc_distance, 3; callfunc "PCtoNPCRange"; - if (@npc_check) - goto L_Range; goto L_Meet; L_Meet: @@ -14,10 +12,6 @@ L_Meet: mes "\"Hello, What a lovely day for a stroll.\""; goto L_Close; -L_Range: - message strcharinfo(0), "Whats that? Come closer I can't hear you."; - goto L_Close; - L_Close: close; } diff --git a/world/map/npc/029-1/hasan.txt b/world/map/npc/029-1/hasan.txt index 99e5ea1e..8d35da8b 100644 --- a/world/map/npc/029-1/hasan.txt +++ b/world/map/npc/029-1/hasan.txt @@ -8,10 +8,7 @@ 029-1,35,33,0|script|Scared Man|160 { - setarray @npc_loc, 35, 33, 4; callfunc "PCtoNPCRange"; - if (@npc_check) - goto L_End; if (QL_BEGIN >= 13) goto L_TutDone; message strcharinfo(0), "He looks too afraid to say anything."; @@ -26,10 +23,7 @@ L_End: } 029-1,33,33,0|script|Hasan|189,3,3 { - setarray @npc_loc, 33, 33, 4; callfunc "PCtoNPCRange"; - if (@npc_check) - goto L_Close; goto L_Main; L_Main: diff --git a/world/map/npc/029-1/kaan.txt b/world/map/npc/029-1/kaan.txt index 57ab1d4c..297849fa 100644 --- a/world/map/npc/029-1/kaan.txt +++ b/world/map/npc/029-1/kaan.txt @@ -3,10 +3,7 @@ 029-1,46,95,0|script|Kaan|160 { - setarray @npc_loc, 46, 97, 4; callfunc "PCtoNPCRange"; - if (@npc_check) - goto L_OutOfRange; set @kaan_talked, (STARTAREA & $@SpokeToKaan); if (!(@kaan_talked)) goto L_Tanisha; @@ -17,10 +14,6 @@ if (QL_BEGIN == 9) goto L_Hasan; goto L_Out; -L_OutOfRange: - message strcharinfo(0), "Come closer!"; - goto L_Close; - L_Tanisha: set STARTAREA, STARTAREA | $@SpokeToKaan; mes "[Young Man]"; diff --git a/world/map/npc/029-1/liana.txt b/world/map/npc/029-1/liana.txt index 4e4a78a6..0aa37749 100644 --- a/world/map/npc/029-1/liana.txt +++ b/world/map/npc/029-1/liana.txt @@ -2,10 +2,7 @@ 029-1,62,96,0|script|Liana|205 { - setarray @npc_loc, 62, 96, 4; callfunc "PCtoNPCRange"; - if (@npc_check) - goto L_End; goto L_Talk; L_Talk: @@ -38,10 +35,6 @@ L_Next: callfunc "SetTutorialMask"; goto L_Close; -L_End: - mes "You'll have to move closer"; - goto L_Close; - L_Close: close; } diff --git a/world/map/npc/029-1/valon.txt b/world/map/npc/029-1/valon.txt index 89398635..f4034ec9 100644 --- a/world/map/npc/029-1/valon.txt +++ b/world/map/npc/029-1/valon.txt @@ -64,10 +64,7 @@ OnInit: } 029-1,72,86,0|script|Valon|156 { - setarray @npc_loc, 72, 86, 4; callfunc "PCtoNPCRange"; - if (@npc_check) - goto L_Close; callfunc "ValonCount"; if (QL_VALON >= 6) goto L_QuestComplete; diff --git a/world/map/npc/029-1/zegas.txt b/world/map/npc/029-1/zegas.txt index 49b9a5c5..a350447d 100644 --- a/world/map/npc/029-1/zegas.txt +++ b/world/map/npc/029-1/zegas.txt @@ -3,10 +3,8 @@ // Npc 029-1,45,85,0|script|Zegas|165 { - setarray @npc_loc, 45, 85, 2; + set @npc_distance, 2; callfunc "PCtoNPCRange"; - if (@npc_check) - goto L_Range; if (QL_ZEGAS == 1) goto L_Find; @@ -18,10 +16,6 @@ goto L_Thanks; goto L_Meet; -L_Range: - message strcharinfo(0), "Whats that? Come closer I can't hear you."; - goto L_Close; - L_Meet: mes "[Zegas]"; mes "\"Hey do you have a second?\""; @@ -59,7 +53,7 @@ L_Looking: L_QuestEnd: mes "[Zegas]"; mes "\"From the smell I can see you found the bug bomb!\""; - mes "\"Thanks once again, I know it's not much but here is 50 GP for your troubles.\""; + mes "\"Thanks once again, I know it's not much but here is 50 GP for your troubles.\""; getexp 50, 0; set Zeny, (Zeny + 50); set QL_ZEGAS, 4; diff --git a/world/map/npc/029-2/barrels.txt b/world/map/npc/029-2/barrels.txt index 4ff3e6de..39bd0ad3 100644 --- a/world/map/npc/029-2/barrels.txt +++ b/world/map/npc/029-2/barrels.txt @@ -2,7 +2,6 @@ // Author: Wushin 029-2,23,86,0|script|Barrel#0|400 { - setarray @npc_loc, 23, 86, 2; set @barrel, 0; callfunc "CheckBarrel"; end; @@ -14,49 +13,42 @@ OnMaggotDeath: } 029-2,28,86,0|script|Barrel#1|400 { - setarray @npc_loc, 28, 86, 2; set @barrel, 1; callfunc "CheckBarrel"; end; } 029-2,31,91,0|script|Barrel#2|400 { - setarray @npc_loc, 31, 91, 2; set @barrel, 2; callfunc "CheckBarrel"; end; } 029-2,36,85,0|script|Barrel#3|400 { - setarray @npc_loc, 36, 85, 2; set @barrel, 3; callfunc "CheckBarrel"; end; } 029-2,40,89,0|script|Barrel#4|400 { - setarray @npc_loc, 40, 89, 2; set @barrel, 4; callfunc "CheckBarrel"; end; } 029-2,38,91,0|script|Barrel#5|400 { - setarray @npc_loc, 38, 91, 2; set @barrel, 5; callfunc "CheckBarrel"; end; } 029-2,29,92,0|script|Barrel#6|400 { - setarray @npc_loc, 29, 92, 2; set @barrel, 6; callfunc "CheckBarrel"; end; } 029-2,24,91,0|script|Barrel#7|400 { - setarray @npc_loc, 24, 91, 2; set @barrel, 7; callfunc "CheckBarrel"; end; diff --git a/world/map/npc/029-2/barrels_config.txt b/world/map/npc/029-2/barrels_config.txt index 1b83d25b..1d356a08 100644 --- a/world/map/npc/029-2/barrels_config.txt +++ b/world/map/npc/029-2/barrels_config.txt @@ -20,7 +20,7 @@ function|script|CountBarrels set @count_tmp, 0; goto L_Loop; -L_Loop: +L_Loop: if (STARTAREA & $@BarrelBits[@barrel_count]) goto L_AddOne; goto L_LoopAgain; @@ -40,9 +40,8 @@ L_BarrelTally: } function|script|CheckBarrel { + set @npc_distance, 2; callfunc "PCtoNPCRange"; - if (@npc_check) - goto L_Range; if (!(QL_ZEGAS == 2)) goto L_NoI; if (STARTAREA & $@BarrelBits[@barrel]) @@ -58,10 +57,6 @@ function|script|CheckBarrel goto L_Spawn; goto L_Reward; -L_Range: - message strcharinfo(0), "You'll need to get closer."; - goto L_Return; - L_NoI: message strcharinfo(0), "Nothing interesting here."; goto L_Return; @@ -79,7 +74,9 @@ L_QuestReward: L_Spawn: message strcharinfo(0), "Uck, More Maggots!"; - areamonster getmap() + "", @npc_loc[0], @npc_loc[1], (@npc_loc[0] + 1), (@npc_loc[1] + 1), $@BarrelSpawnName$, $@BarrelSpawnId, $@BarrelSpawnCnt, "Barrel#0::OnMaggotDeath"; + setarray @npc_loc, getnpcx(), getnpcy(); + areamonster getmap(), @npc_loc[0], @npc_loc[1], (@npc_loc[0] + 1), (@npc_loc[1] + 1), $@BarrelSpawnName$, $@BarrelSpawnId, $@BarrelSpawnCnt, "Barrel#0::OnMaggotDeath"; + cleararray @npc_loc, 0, 2; goto L_Return; L_Reward: diff --git a/world/map/npc/029-2/morgan.txt b/world/map/npc/029-2/morgan.txt index 59285daa..c4703c70 100644 --- a/world/map/npc/029-2/morgan.txt +++ b/world/map/npc/029-2/morgan.txt @@ -25,10 +25,7 @@ OnInit: } 029-2,101,57,0|script|Morgan#_M|355 { - setarray @npc_loc, 101, 57, 4; callfunc "PCtoNPCRange"; - if (@npc_check) - goto L_Close; callfunc "MorganState"; if (readparam(bInt) >= 5) goto L_Learn; diff --git a/world/map/npc/029-2/sorfina.txt b/world/map/npc/029-2/sorfina.txt index a7da1b31..984312cf 100644 --- a/world/map/npc/029-2/sorfina.txt +++ b/world/map/npc/029-2/sorfina.txt @@ -2,10 +2,8 @@ // Author: Jenalya 029-2,27,27,0|script|Sorfina|154,0,1 { - setarray @npc_loc, 27, 27, 2; + set @npc_distance, 2; callfunc "PCtoNPCRange"; - if (@npc_check) - goto L_Close; goto L_Main; L_Main: @@ -273,7 +271,8 @@ OnTouch: 029-2,29,23,0|script|Dresser#tutorial|400 { - setarray @npc_loc, 29, 23, 2; + set @npc_distance, 2; + set @distance_handler, 1; callfunc "PCtoNPCRange"; if (@npc_check) goto L_CloseDis; diff --git a/world/map/npc/029-2/stat_reset.txt b/world/map/npc/029-2/stat_reset.txt index 896bbf6b..c1dafd7b 100644 --- a/world/map/npc/029-2/stat_reset.txt +++ b/world/map/npc/029-2/stat_reset.txt @@ -2,10 +2,7 @@ 029-2,98,92,0|script|Jessie|159 { - setarray @npc_loc, 98, 91, 4; callfunc "PCtoNPCRange"; - if (@npc_check) - goto L_Close; if (BaseLevel >= 10) goto L_Sorry; diff --git a/world/map/npc/029-2/tanisha.txt b/world/map/npc/029-2/tanisha.txt index eadb2164..9a7ee081 100644 --- a/world/map/npc/029-2/tanisha.txt +++ b/world/map/npc/029-2/tanisha.txt @@ -4,10 +4,7 @@ 029-2,110,88,0|script|Tanisha|114 { - setarray @npc_loc, 110, 88, 4; callfunc "PCtoNPCRange"; - if (@npc_check) - goto L_Close; if (isin("029-2", 98, 84, 106, 89)) goto L_Fighting; diff --git a/world/map/npc/functions/default_npc_checks.txt b/world/map/npc/functions/default_npc_checks.txt index deb3ba64..d20ed187 100644 --- a/world/map/npc/functions/default_npc_checks.txt +++ b/world/map/npc/functions/default_npc_checks.txt @@ -1,13 +1,16 @@ // Default NPC Checks -// Author: Wushin +// Author: Wushin, mekolat // Range -// Map, X, Y, Distance in Tiles -// setarray @npc_loc, 24, 113, 4; +// Distance in Tiles +// set @npc_distance, 4; function|script|PCtoNPCRange { set @npc_check, 0; - set @Nmap$, getmap() + ""; + set @Nmap$, strnpcinfo(3); + if(!@npc_distance) set @npc_distance, 4; // <== default distance + cleararray @npc_loc, 0, 3; + setarray @npc_loc, getnpcx(), getnpcy(), @npc_distance; set @Nx1, (@npc_loc[0] - @npc_loc[2]); set @Ny1, (@npc_loc[1] - @npc_loc[2]); set @Nx2, (@npc_loc[0] + @npc_loc[2]); @@ -15,9 +18,22 @@ function|script|PCtoNPCRange if (isin(@Nmap$, @Nx1, @Ny1, @Nx2, @Ny2)) goto L_Return; set @npc_check, 1; + if(@distance_handler) goto L_Return; + set @dnpc_name$, strnpcinfo(1); + if(@dnpc_name$ != "") goto L_Named; + mes "You need to move closer to interact with this npc."; + close2; goto L_Return; +L_Named: + message strcharinfo(0), "##3"+@dnpc_name$+" : ##BPlease move closer."; + end; + L_Return: + set @dnpc_name$, ""; + set @distance_handler, 0; + set @npc_distance, 0; + cleararray @npc_loc, 0, 3; return; } -- cgit v1.2.3-60-g2f50