031-4,42,42,0 script Cindy NPC198,{
.@q = getq(KaizeiQuest_Cindy);
if ($@FIGHT_YETI_STATUS != 0) goto L_Yeti;
if (.@q > 4) goto L_Please_Visit;
if (.@q == 3) goto L_Reward;
if (.@q == 2) goto L_Please_Help;
mes "There is a little girl in a cage. As you come near, she starts to shiver and back off from you as far as she can in that small cage.";
next;
mes "You don't know what to do.";
goto L_close;
L_Please_Help:
mes "There is a little girl in a cage. As you come near, she starts to shiver and back off from you as far as she can in that small cage.";
next;
menu
"Hello Cindy, I'm here to save you.", L_Next;
L_Next:
mes "Cindy doesn't look so scared anymore.";
next;
mesn;
mes "\"Hello, adventurer. Did my mother send you?\"";
next;
mes "\"It's so cold in here! Can you please open the cage?\"";
next;
mes "\"But be careful. If the Yetis hear you, they will come!\"";
menu
"Try to open the cage", L_Try_Cage,
"Leave", L_close;
L_Try_Cage:
if (BaseLevel < .minLevel)
goto L_To_Weak;
if (countitem(TreasureKey) < .KEYS_AMOUNT)
goto L_Not_Enough_Keys;
delitem TreasureKey, .KEYS_AMOUNT;
mes "As you try to open the door of the cage, there is a loud squeaking noise.";
next;
mes "You get an uncomfortable feeling and Cindy starts to shiver.";
if ($@FIGHT_YETI_STATUS != 0)
goto L_Yeti;
npctalk "Oh no, the Yetis...";
// initialize fight
$@FIGHT_YETI_STATUS = 1;
$@FIGHT_YETI_WAVE = 0;
$@YETI_COUNT = 1;
$@FIGHT_YETI_PLAYER_COUNT = getmapusers("031-4");
areamonster "031-4", 0, 0, 95, 91, "Yeti", Yeti, 1, "Cindy::OnPetDeath";
initnpctimer;
goto L_close;
L_Yeti:
mesn;
mes "\"Watch out, the Yetis!\"";
goto L_close;
L_Reward:
mesn;
mes "\"You are a hero! All these strong monsters!\"";
next;
mes "\"I've found this thing in the cave - it looks valuable. I want you to have it.\"";
next;
getinventorylist;
if (@inventorylist_count == 100)
goto L_Full_Inv;
.@reward = rand2(15);
if (.@reward < 10)
goto L_Wizard_Hat;
getitem WoodenStaff, 1;
setq(KaizeiQuest_Cindy, 4);
goto L_Visit;
L_Wizard_Hat:
// get a wizard hat in one of the ten colors - no white
getitem any(2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209), 1;
setq(KaizeiQuest_Cindy, 4);
goto L_Visit;
L_Visit:
mes "\"Thank you so much; please come to my home. It's the house at the beach.\"";
next;
mes "\"I'm sure my mother wants to thank you as well.\"";
goto L_close;
L_Please_Visit:
mesn;
mes "\"Thank you, thank you! You're a hero! Please come home with me to our house at the beach!\"";
next;
mesc l("You can relive the memories for %d %s, however, the rewards cannot be obtained again.", .KEYS_AMOUNT*2, getitemlink(TreasureKey));
if (countitem(TreasureKey) < .KEYS_AMOUNT*2)
goto L_close;
mesc l("Do you want to?");
next;
if (askyesno() == ASK_YES &&
!$@FIGHT_YETI_STATUS &&
BaseLevel >= .minLevel)
{
delitem TreasureKey, .KEYS_AMOUNT;
goto L_Try_Cage;
}
goto L_close;
L_To_Weak:
mes "You try to open the cage, but it's stuck. It seems you're too weak!";
goto L_close;
L_Not_Enough_Keys:
mes "You don't have enough keys to open the cage.";
goto L_close;
L_Full_Inv:
mes "\"Oh, it seems you carry so much stuff - I will keep it for you until you can take it.\"";
goto L_close;
L_close:
@inventorylist_count = 0;
close;
OnTimer5000:
setnpctimer 0;
if ($@FIGHT_YETI_STATUS != 0)
goto L_CaveLogic;
goto L_Return_1;
L_Return_1:
$@FIGHT_YETI_PLAYER_COUNT = 0;
maptimer2 "031-4", 10, "Cindy::OnTick";
end;
L_CaveLogic:
$@FIGHT_YETI_ROUND_PEN = $@FIGHT_YETI_PLAYER_COUNT;
if ($@FIGHT_YETI_ROUND_PEN > 60)
$@FIGHT_YETI_ROUND_PEN = 60;
if ($@FIGHT_YETI_PLAYER_COUNT <= 0)
goto L_CleanUp;
set $@FIGHT_YETI_ROUND_TIMER, $@FIGHT_YETI_ROUND_TIMER + 5; // Advance 5 seconds
if (mobcount("031-4", "Cindy::OnPetDeath") <= 0)
goto L_NextWave;
if ($@FIGHT_YETI_ROUND_TIMER + $@FIGHT_YETI_ROUND_PEN >= 120)
goto L_NextWave;
goto L_Return_1;
L_NextWave:
$@FIGHT_YETI_ROUND_TIMER = 0;
$@FIGHT_YETI_WAVE = $@FIGHT_YETI_WAVE + 1;
if ($@FIGHT_YETI_WAVE > 10
&& $@YETI_COUNT == 0)
goto L_CleanUp;
if ($@FIGHT_YETI_WAVE > 10
&& $@FIGHT_YETI_WAVE < 22)
goto L_Return_1;
if ($@FIGHT_YETI_WAVE > 22)
areamonster "031-4", 0, 0, 95, 91, "Yeti", Yeti, $@FIGHT_YETI_WAVE*2 + $@FIGHT_YETI_PLAYER_COUNT*5, "Cindy::OnPetDeath";
if ($@FIGHT_YETI_WAVE > 22)
$@YETI_COUNT = $@YETI_COUNT + $@FIGHT_YETI_WAVE*2 + $@FIGHT_YETI_PLAYER_COUNT*5;
$@FIGHT_YETI_NUMBER = (5 + (1 * $@FIGHT_YETI_WAVE) + (2 * $@FIGHT_YETI_PLAYER_COUNT))/4;
$@YETI_COUNT = $@YETI_COUNT + $@FIGHT_YETI_NUMBER;
areamonster "031-4", 0, 0, 95, 91, "Yeti", Yeti, $@FIGHT_YETI_NUMBER, "Cindy::OnPetDeath";
$@msg$ = $@FIGHT_YETI_MESSAGES$[$@FIGHT_YETI_WAVE];
if ($@msg$ == "")
goto L_Return_1;
mapannounce "031-4", $@msg$, 0;
mapannounce "031-3", $@msg$, 0;
$@msg$ = "";
goto L_Return_1;
OnTick:
if (ispcdead()) end;
$@FIGHT_YETI_PLAYER_COUNT = $@FIGHT_YETI_PLAYER_COUNT + 1;
end;
OnPetDeath:
$@YETI_COUNT = $@YETI_COUNT - 1;
end;
L_CleanUp:
maptimer2 "031-4", 10, "Cindy::OnReward";
$@FIGHT_YETI_STATUS = 0;
$@FIGHT_YETI_PLAYER_COUNT = 0;
$@FIGHT_YETI_WAVE = 0;
$@FIGHT_YETI_ROUND_TIMER = 0;
$@YETI_COUNT = 0;
$@FIGHT_YETI_ROUND_PEN = 0;
$@FIGHT_YETI_NUMBER = 0;
killmonster "031-4", "Cindy::OnPetDeath";
stopnpctimer;
setnpctimer 0;
end;
OnReward:
if (ispcdead()) end;
@bonus = (BaseLevel/2);
DailyQuestBonus = DailyQuestBonus + @bonus;
message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ;
if (getq(KaizeiQuest_Cindy) != 2)
goto L_End;
setq(KaizeiQuest_Cindy, 3);
message strcharinfo(0), "Cindy looks relieved and as if she wants to talk with you.";
BOSS_POINTS = BOSS_POINTS + 70;
message strcharinfo(0), "You gain 70 Boss Points giving you a total of " + BOSS_POINTS + ".";
goto L_End;
L_End:
@bonus = 0;
end;
OnInit:
setarray $@FIGHT_YETI_MESSAGES$[0],
"", // unused
// " : " is magic so that it says "global announcement from"
"Cindy : Yetis!",
"Cindy : Watch out!",
"Cindy : More of them are coming!",
"Cindy : Be careful! More of them!",
"Cindy : Attention! There is another bunch of them!",
"Cindy : Hang on! More of them!",
"Cindy : More Yetis! Will this never end?",
"Cindy : There are coming more and more!",
"Cindy : Watch your back! There are so many of them!",
"Cindy : This seems to be their final attack! I believe in you!";
.KEYS_AMOUNT = 10;
.minLevel = 70;
.distance = 5;
end;
}