From 7ab7640e0a60c6f11c48090b7e53c5c30ead3c33 Mon Sep 17 00:00:00 2001 From: jesusalva Date: Fri, 9 Feb 2018 11:00:46 -0200 Subject: Fix barrel quest, but keep the FIXME notice. --- npc/005-3/barrel.txt | 77 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 52 insertions(+), 25 deletions(-) (limited to 'npc') diff --git a/npc/005-3/barrel.txt b/npc/005-3/barrel.txt index a60cc55f0..1810774ae 100644 --- a/npc/005-3/barrel.txt +++ b/npc/005-3/barrel.txt @@ -20,47 +20,74 @@ // 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) { + message strcharinfo(0), "You found the bug bomb."; + specialeffect(21); 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,{ + @barrel = 1; .@q = getq(CandorQuest_Barrel); - if (.questState == 0 && .@q == 2) + 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,{ + @barrel = 2; .@q = getq(CandorQuest_Barrel); - if (.questState == 0 && .@q == 2) + if (.@q == 2) { - .questState = 1; CheckBarrel(); } end; @@ -71,10 +98,10 @@ OnInit: } 005-3,29,37,0 script Barrel#3 NPC_NO_SPRITE,{ + @barrel = 3; .@q = getq(CandorQuest_Barrel); - if (.questState == 0 && .@q == 2) + if (.@q == 2) { - .questState = 1; CheckBarrel(); } end; @@ -84,10 +111,10 @@ OnInit: end; } 005-3,35,34,0 script Barrel#4 NPC_NO_SPRITE,{ + @barrel = 4; .@q = getq(CandorQuest_Barrel); - if (.questState == 0 && .@q == 2) + if (.@q == 2) { - .questState = 1; CheckBarrel(); } end; @@ -97,10 +124,10 @@ OnInit: end; } 005-3,38,34,0 script Barrel#5 NPC_NO_SPRITE,{ + @barrel = 5; .@q = getq(CandorQuest_Barrel); - if (.questState == 0 && .@q == 2) + if (.@q == 2) { - .questState = 1; CheckBarrel(); } end; @@ -110,10 +137,10 @@ OnInit: end; } 005-3,44,40,0 script Barrel#6 NPC_NO_SPRITE,{ + @barrel = 6; .@q = getq(CandorQuest_Barrel); - if (.questState == 0 && .@q == 2) + if (.@q == 2) { - .questState = 1; CheckBarrel(); } end; @@ -123,10 +150,10 @@ OnInit: end; } 005-3,38,41,0 script Barrel#7 NPC_NO_SPRITE,{ + @barrel = 7; .@q = getq(CandorQuest_Barrel); - if (.questState == 0 && .@q == 2) + if (.@q == 2) { - .questState = 1; CheckBarrel(); } end; @@ -136,10 +163,10 @@ OnInit: end; } 005-3,29,41,0 script Barrel#8 NPC_NO_SPRITE,{ + @barrel = 8; .@q = getq(CandorQuest_Barrel); - if (.questState == 0 && .@q == 2) + if (.@q == 2) { - .questState = 1; CheckBarrel(); } end; -- cgit v1.2.3-70-g09d2