summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--world/map/db/quest-log.txt1
-rw-r--r--world/map/npc/020-2/baktar.txt90
2 files changed, 27 insertions, 64 deletions
diff --git a/world/map/db/quest-log.txt b/world/map/db/quest-log.txt
index f623957d..3949528c 100644
--- a/world/map/db/quest-log.txt
+++ b/world/map/db/quest-log.txt
@@ -19,3 +19,4 @@
//
7,QL_WELL,QUEST_Nivalis_state,4,4
8,QL_CINDY,QUEST_Nivalis_state,5,4
+9,QL_BAKTAR,QUEST_Nivalis_state,0,8
diff --git a/world/map/npc/020-2/baktar.txt b/world/map/npc/020-2/baktar.txt
index 660ea92d..9f0a878c 100644
--- a/world/map/npc/020-2/baktar.txt
+++ b/world/map/npc/020-2/baktar.txt
@@ -2,15 +2,11 @@
//#== NPC Baktar
//# Authors: Lien, PjotrOrial
//# Review: BigCrunch, Mistakes, Jenalya
-//# This NPC has two stages:
+//# This NPC has one stage:
//#
-//# In the first stage you need to bring 7 different items, but only one of each kind.
+//# you need to bring 7 different items, but only one of each kind.
//#
-//# In the second stage he tells you what hard life he is living. He will be very aggressive telling you some stuff.
-//# He will send you to kill Scroticular. That npc will be located in the labyrinth caves.
-//# (its a mob actually, to be spawned only, if the players knows his name and his location)
-//#
-//# variables used:
+//# variable used:
//# @QUEST_Nivalis_state: NIBBLE0, NIBBLE1, NIBBLE2, NIBBLE3:
//# BYTE0 ( == NIBBLE0 | NIBBLE1) stores in each bit information if that item was already brought.
//# bits:
@@ -22,31 +18,11 @@
//# bit 5 eggs_Item
//# bit 6 skin_Item
//# bit 7 bugleg
-//# NIBBLE2 store the progress after the item collecting stage:
-//# =0 he will thank you for bringing all stuff.
-//# =1 talking about his youth
-//# =2 talking, you get the mission to hunt down Scroticular
-//# =3 you get information where Scroticular can be found.
-//# NIBBLE3 a bitmasking nibble for stage 2 again
-//# bit 0 knows the name/location of the opponent
-//# bit 1 killed the ugly opponent
//#=========================
020-2,70,61,0|script|Baktar|191
{
set @npcname$, "[Baktar]";
- set @Q_MASK, BYTE_0_MASK;
- set @Q_SHIFT, BYTE_0_SHIFT;
- set @Q_status, ((QUEST_Nivalis_state) & @Q_MASK) >> @Q_SHIFT;
-
- set @Q_MASK2, NIBBLE_2_MASK;
- set @Q_SHIFT2, NIBBLE_2_SHIFT;
- set @Q_status2, ((QUEST_Nivalis_state) & @Q_MASK2) >> @Q_SHIFT2;
-
- set @Q_MASK2_BITS, NIBBLE_3_MASK;
- set @Q_SHIFT2_BITS, NIBBLE_3_SHIFT;
- set @Q_status2_bits, ((QUEST_Nivalis_state) & @Q_MASK2_BITS) >> @Q_SHIFT2_BITS;
-
set @BIT_KNOWHIM, 0;
set @BIT_DESERTHAT,1;
@@ -100,7 +76,7 @@ L_Start:
if(!Sex)
set @type$, "woman";
- if(@Q_status & (1<<@BIT_KNOWHIM)) goto L_KnowAlready;
+ if(QL_BAKTAR & (1<<@BIT_KNOWHIM)) goto L_KnowAlready;
mes @npcname$;
mes "\"Hello, " + @type$ + ", did you come from Tulimshar? Because you have a nice tan. \"";
menu
@@ -124,51 +100,50 @@ L_exotic:
L_startitem:
setarray @exotic_item$, "", "", "", "", "", "", "";
set @c, 0;
- set @Q_status, @Q_status | (1<<@BIT_KNOWHIM);
- callsub S_Update_Var;
- if (countitem("DesertHat") < 1 || @Q_status & (1<<@BIT_DESERTHAT) ) goto L_DesertShirt;
+ set QL_BAKTAR, QL_BAKTAR | (1<<@BIT_KNOWHIM);
+ if (countitem("DesertHat") < 1 || QL_BAKTAR & (1<<@BIT_DESERTHAT) ) goto L_DesertShirt;
set @exotic_item$[@c], "a Desert Hat ?";
set @menuid[@c], 0;
set @c, @c + 1;
goto L_DesertShirt;
L_DesertShirt:
- if (countitem("DesertShirt") < 1 || @Q_status & (1<<@BIT_DESERTSHIRT) ) goto L_SerfHat;
+ if (countitem("DesertShirt") < 1 || QL_BAKTAR & (1<<@BIT_DESERTSHIRT) ) goto L_SerfHat;
set @exotic_item$[@c], "a Desert Shirt ?";
set @menuid[@c], 1;
set @c, @c + 1;
goto L_SerfHat;
L_SerfHat:
- if (countitem("SerfHat") < 1 || @Q_status & (1<<@BIT_SERFHAT) ) goto L_tongue;
+ if (countitem("SerfHat") < 1 || QL_BAKTAR & (1<<@BIT_SERFHAT) ) goto L_tongue;
set @exotic_item$[@c], "a Serf Hat ?";
set @menuid[@c], 2;
set @c, @c + 1;
goto L_tongue;
L_tongue:
- if (countitem("MountainSnakeTongue") < 1 || @Q_status & (1<<@BIT_MS_TONGUE)) goto L_egg;
+ if (countitem("MountainSnakeTongue") < 1 || QL_BAKTAR & (1<<@BIT_MS_TONGUE)) goto L_egg;
set @exotic_item$[@c], "a Mountain Snake Tongue ?";
set @menuid[@c], 3;
set @c, @c + 1;
goto L_egg;
L_egg:
- if (countitem("MountainSnakeEgg") < 1 || @Q_status & (1<<@BIT_MS_EGG)) goto L_Skin;
+ if (countitem("MountainSnakeEgg") < 1 || QL_BAKTAR & (1<<@BIT_MS_EGG)) goto L_Skin;
set @exotic_item$[@c], "a Mountain Snake Egg?";
set @menuid[@c], 4;
set @c, @c + 1;
goto L_Skin;
L_Skin:
- if (countitem("SnakeSkin") < 1 || @Q_status & (1<<@BIT_SNAKESKIN)) goto L_bugleg;
+ if (countitem("SnakeSkin") < 1 || QL_BAKTAR & (1<<@BIT_SNAKESKIN)) goto L_bugleg;
set @exotic_item$[@c], "a Snake Skin?";
set @menuid[@c], 5;
set @c, @c + 1;
goto L_bugleg;
L_bugleg:
- if (countitem("BugLeg") < 1 || @Q_status & (1<<@BIT_BUGLEG)) goto L_NeverMind;
+ if (countitem("BugLeg") < 1 || QL_BAKTAR & (1<<@BIT_BUGLEG)) goto L_NeverMind;
set @exotic_item$[@c], "a Bug Leg?";
set @menuid[@c], 6;
set @c, @c + 1;
@@ -203,73 +178,66 @@ L_MenuItems:
close;
L_DesertHat_Item:
- if(@Q_status & (1<<@BIT_DESERTHAT)) goto L_havealready;
+ if(QL_BAKTAR & (1<<@BIT_DESERTHAT)) goto L_havealready;
if (countitem("DesertHat") < 1) goto L_Noitem;
delitem "DesertHat", 1;
set Zeny, Zeny + @MONEY_DESERTHAT;
getexp @XP_DESERTHAT,0;
- set @Q_status, @Q_status | (1<<@BIT_DESERTHAT);
- callsub S_Update_Var;
+ set QL_BAKTAR, QL_BAKTAR | (1<<@BIT_DESERTHAT);
close;
L_DesertShirt_Item:
- if(@Q_status & (1<<@BIT_DESERTSHIRT)) goto L_havealready;
+ if(QL_BAKTAR & (1<<@BIT_DESERTSHIRT)) goto L_havealready;
if (countitem("DesertShirt") < 1) goto L_Noitem;
delitem "DesertShirt", 1;
set Zeny, Zeny + @MONEY_DESERTSHIRT;
getexp @XP_DESERTSHIRT,0;
- set @Q_status, @Q_status | (1<<@BIT_DESERTSHIRT);
- callsub S_Update_Var;
+ set QL_BAKTAR, QL_BAKTAR | (1<<@BIT_DESERTSHIRT);
close;
L_SerfHat_Item:
- if(@Q_status & (1<<@BIT_SERFHAT)) goto L_havealready;
+ if(QL_BAKTAR & (1<<@BIT_SERFHAT)) goto L_havealready;
if (countitem("SerfHat") < 1) goto L_Noitem;
delitem "SerfHat", 1;
set Zeny, Zeny + @MONEY_SERFHAT;
getexp @XP_SERFHAT,0;
- set @Q_status, @Q_status | (1<<@BIT_SERFHAT);
- callsub S_Update_Var;
+ set QL_BAKTAR, QL_BAKTAR | (1<<@BIT_SERFHAT);
close;
L_tongue_Item:
- if(@Q_status & (1<<@BIT_MS_TONGUE)) goto L_havealready;
+ if(QL_BAKTAR & (1<<@BIT_MS_TONGUE)) goto L_havealready;
if (countitem("MountainSnakeTongue") < 1) goto L_Noitem;
delitem "MountainSnakeTongue", 1;
set Zeny, Zeny + @MONEY_MS_TONGUE;
getexp @XP_MS_TONGUE,0;
- set @Q_status, @Q_status | (1<<@BIT_MS_TONGUE);
- callsub S_Update_Var;
+ set QL_BAKTAR, QL_BAKTAR | (1<<@BIT_MS_TONGUE);
close;
L_egg_Item:
- if(@Q_status & (1<<@BIT_MS_EGG)) goto L_havealready;
+ if(QL_BAKTAR & (1<<@BIT_MS_EGG)) goto L_havealready;
if (countitem("MountainSnakeEgg") < 1) goto L_Noitem;
delitem "MountainSnakeEgg", 1;
set Zeny, Zeny + @MONEY_MS_EGG;
getexp @XP_MS_EGG,0;
- set @Q_status, @Q_status | (1<<@BIT_MS_EGG);
- callsub S_Update_Var;
+ set QL_BAKTAR, QL_BAKTAR | (1<<@BIT_MS_EGG);
close;
L_skin_Item:
- if(@Q_status & (1<<@BIT_SNAKESKIN)) goto L_havealready;
+ if(QL_BAKTAR & (1<<@BIT_SNAKESKIN)) goto L_havealready;
if (countitem("SnakeSkin") < 1) goto L_Noitem;
delitem "SnakeSkin", 1;
set Zeny, Zeny + @MONEY_SNAKESKIN;
getexp @XP_SNAKESKIN,0;
- set @Q_status, @Q_status | (1<<@BIT_SNAKESKIN);
- callsub S_Update_Var;
+ set QL_BAKTAR, QL_BAKTAR | (1<<@BIT_SNAKESKIN);
close;
L_BugLegItem:
- if(@Q_status & (1<<@BIT_BUGLEG)) goto L_havealready;
+ if(QL_BAKTAR & (1<<@BIT_BUGLEG)) goto L_havealready;
if (countitem("BugLeg") < 1) goto L_Noitem;
delitem "BugLeg", 1;
set Zeny, Zeny + @MONEY_BUGLEG;
getexp @XP_BUGLEG,0;
- set @Q_status, @Q_status | (1<<@BIT_BUGLEG);
- callsub S_Update_Var;
+ set QL_BAKTAR, QL_BAKTAR | (1<<@BIT_BUGLEG);
close;
L_Noitem:
@@ -284,10 +252,4 @@ L_havealready:
L_Close:
close;
-
-S_Update_Var:
- set QUEST_Nivalis_state,
- (QUEST_Nivalis_state & ~(@Q_MASK)
- | (@Q_status << @Q_SHIFT));
- return;
}