diff options
Diffstat (limited to 'npc/005-3/barrel.txt')
-rw-r--r-- | npc/005-3/barrel.txt | 108 |
1 files changed, 75 insertions, 33 deletions
diff --git a/npc/005-3/barrel.txt b/npc/005-3/barrel.txt index ec7f06b4f..63af4dfc3 100644 --- a/npc/005-3/barrel.txt +++ b/npc/005-3/barrel.txt @@ -1,57 +1,93 @@ -// Evol scripts.
+// TMW-2 script.
// Author:
// Crazyfefe
+// Jesusalva
// Description:
-// Blacksmith's assistant of Artis
+// Barrels
// Variables:
-// ArtisQuests_Enora
+// CandorQuest_Barrel
// Values:
// 0 Default.
-// 1 BlackSmith quest delivered.
-// 2 Chelios Quest given.
-// 3 Chelios Quest done.
-// 4 BlackSmith gave the sword.
+// 1 Quest Found.
+// 2 Quest Accepted.
+// 3 Bomb Defused.
+// 4 Quest Completed.
+
+// TODO FIXME: KNOWN BUG
+// It is a known bug that using .questCheck and .questState is ABSOLUTELY WRONG
+// A NPC variable affects the whole server, lasting until server restart.
+// Therefore, by using "." variables, it will only work at localhosts.
+// TODO FIXME: KNOWN BUG
function script CheckBarrel {
- .questCheck = .questCheck + 1;
+ @barrel_count = 0;
+ @count_tmp = 0;
+ if (debug)
+ npctalk3 l("Hello, I am B-@@, of the @@ order.", @barrel, $@BarrelBits[@barrel]);
+ if (STARTAREA & $@BarrelBits[@barrel])
+ goto L_Empty;
+ STARTAREA = STARTAREA | $@BarrelBits[@barrel];
+
+ goto L_Loop;
+
+L_BarrelTally:
areamonster "005-3", 24, 34, 45, 42, "Cave Maggot", 1027, 1;
- if (.questCheck == 8)
+ if (@barrel_count == 8)
{
- setq CandorQuest_Barrel, 1;
+ message strcharinfo(0), "You found the bug bomb.";
+ specialeffect(13);
+ setq CandorQuest_Barrel, 3;
}
- .@rand = rand(6);
- if (.@rand == 0)
+ @rand = rand(6);
+ if (@rand == 0)
getitem Coal,1;
- else if (.@rand == 1)
+ else if (@rand == 1)
getitem PinkAntenna,1;
- else if (.@rand == 2)
+ else if (@rand == 2)
getitem CoinBag,1;
- else if (.@rand == 3)
+ else if (@rand == 3)
getitem Croconut,1;
- else if (.@rand == 4)
+ else if (@rand == 4)
getitem Bread,1;
- else if (.@rand == 5)
+ else if (@rand == 5)
getitem TolchiArrow,6;
+ return;
+
+L_Loop:
+ while (@count_tmp < 8) {
+ @count_tmp = (@count_tmp + 1);
+ if (STARTAREA & $@BarrelBits[@count_tmp])
+ @barrel_count = (@barrel_count + 1);
+ }
+ goto L_BarrelTally;
+
+L_Empty:
+ message strcharinfo(0), "You've already searched this barrel.";
+ return;
}
005-3,24,36,0 script Barrel#1 NPC_NO_SPRITE,{
- if (.questState == 0)
+ @barrel = 1;
+ .@q = getq(CandorQuest_Barrel);
+ if (.@q == 2)
{
- .questState = 1;
CheckBarrel();
}
end;
OnInit:
+ // Remember: array start at zero, but barrels count start at 1. "Fixing" may break barrel 8!
+ setarray $@BarrelBits, (1 << 1), (1 << 2), (1 << 3), (1 << 4), (1 << 5), (1 << 6), (1 << 7), (1 << 8), (1 << 9);
.sex = G_OTHER;
.distance = 1;
end;
}
005-3,24,39,0 script Barrel#2 NPC_NO_SPRITE,{
- if (.questState == 0)
+ @barrel = 2;
+ .@q = getq(CandorQuest_Barrel);
+ if (.@q == 2)
{
- .questState = 1;
CheckBarrel();
}
end;
@@ -62,9 +98,10 @@ OnInit: }
005-3,29,37,0 script Barrel#3 NPC_NO_SPRITE,{
- if (.questState == 0)
+ @barrel = 3;
+ .@q = getq(CandorQuest_Barrel);
+ if (.@q == 2)
{
- .questState = 1;
CheckBarrel();
}
end;
@@ -74,9 +111,10 @@ OnInit: end;
}
005-3,35,34,0 script Barrel#4 NPC_NO_SPRITE,{
- if (.questState == 0)
+ @barrel = 4;
+ .@q = getq(CandorQuest_Barrel);
+ if (.@q == 2)
{
- .questState = 1;
CheckBarrel();
}
end;
@@ -86,9 +124,10 @@ OnInit: end;
}
005-3,38,34,0 script Barrel#5 NPC_NO_SPRITE,{
- if (.questState == 0)
+ @barrel = 5;
+ .@q = getq(CandorQuest_Barrel);
+ if (.@q == 2)
{
- .questState = 1;
CheckBarrel();
}
end;
@@ -98,9 +137,10 @@ OnInit: end;
}
005-3,44,40,0 script Barrel#6 NPC_NO_SPRITE,{
- if (.questState == 0)
+ @barrel = 6;
+ .@q = getq(CandorQuest_Barrel);
+ if (.@q == 2)
{
- .questState = 1;
CheckBarrel();
}
end;
@@ -110,9 +150,10 @@ OnInit: end;
}
005-3,38,41,0 script Barrel#7 NPC_NO_SPRITE,{
- if (.questState == 0)
+ @barrel = 7;
+ .@q = getq(CandorQuest_Barrel);
+ if (.@q == 2)
{
- .questState = 1;
CheckBarrel();
}
end;
@@ -122,9 +163,10 @@ OnInit: end;
}
005-3,29,41,0 script Barrel#8 NPC_NO_SPRITE,{
- if (.questState == 0)
+ @barrel = 8;
+ .@q = getq(CandorQuest_Barrel);
+ if (.@q == 2)
{
- .questState = 1;
CheckBarrel();
}
end;
|