// Evol scripts. // Authors: // Reid // Travolta // Description: // Moon, main NPC for the urchin quest. // Variables: // ArtisQuests_Urchin - quest var // Quest stages: // 0 - not started // 1 - started, searching for Croc Claws // 2 - quest finished 001-2-2,33,32,0 script Moon#001-2-2 NPC_ELVEN_FEMALE,3,3,{ function SayRandomGreeting { .@q = getq(ArtisQuests_Urchin); .@tick = gettimetick(1); if (.@tick > @ArtisQuests_Urchin_MoonMsgTick + 12) { setarray .messages$[0], l("Ouch!"), l("It hurts so bad!"), l("Help me!"), l("Hurry up!"), l("I can't wait all day!"), l("I need more Croc Claws."), l("What a relief."), l("No more pain, thanks to you."), l("I can walk again!"); setarray .msg_first[0], 0, 3, 6; setarray .msg_last[0], 2, 5, 8; .@r = rand(.msg_first[.@q],.msg_last[.@q]); .@msg$ = .messages$[.@r]; npctalk3 .@msg$; @ArtisQuests_Urchin_MoonMsgTick = .@tick; } } function CheckCrowClaw { if (getq(ArtisQuests_Urchin) != 1) return -1; mes ""; mesn; if (countitem("CrocClaw") > 0) { delitem "CrocClaw", 1; if (rand(8) == 7) // the lucky 7 { mesq l("Yay, it worked! I removed a spike."); ArtisQuests_Urchin_ULeft--; next; if (!ArtisQuests_Urchin_ULeft) { mesq l("It seems I got them all!"); next; mesq l("Here is your reward."); setq ArtisQuests_Urchin, 2; quest_xp(.maxLevel, 1500); quest_jxp(.maxLevel, 100); close2; return 1; } else { mesq l("But I still have some spikes left in my foot."); next; return 0; } } else { mesq l("This one is useless! Give me another @@.", getitemlink("CrocClaw")); next; return 0; } } else { mesq l("You don't have any @@, are you mocking me?", getitemlink("CrocClaw")); close2; return 1; } } stopnpctimer; .@q = getq(ArtisQuests_Urchin); if (.@q < 2) { mesn "Narrator"; mesc(l("You see a young elven girl, with a strong sense of pain in her face."), 9); next; } else { mesn; mesq l("I appreciate your help, @@.", strcharinfo(0)); goto L_Close; } if (.@q == 1) goto L_QuestStarted; L_Story: select l("Hi, can I help you somehow?"); mes ""; mesn; mesq l("That would be great!"); next; mesq l("Hi, my name is Moon. This morning I went for a walk on the beach."); next; mesq l("Walking barefoot, feeling the hot sand with my feet, daydreaming... I like such things, you know."); next; mesq l("I didn't notice that a Pikpik was in my way, and when I stepped on it, my foot was full of spikes."); next; mesq l("Luckily the beach is nearby, and somehow I made my way home."); next; mesq l("Please bring me @@s so I can pull out these spikes from my foot.", getitemlink("CrocClaw")); next; switch (select(l("Stay here, I will be back as soon as I have some."), l("Maybe next time."))) { case 1: setq ArtisQuests_Urchin, 1; mes ""; mesn; mesq l("It really hurts, please hurry!"); ArtisQuests_Urchin_ULeft = rand(3,5); next; goto L_Where; break; case 2: mes ""; mesn "Narrator"; mesc(l("The girl looks desperate."),9); } goto L_Close; L_QuestStarted: mesn; mesq l("Do you have @@s for me?", getitemlink("CrocClaw")); next; select l("Check out this one."), l("I should put more effort into this."), l("Where can I find some Croc Claws?"); switch (@menu) { case 1: .@MustRepeat = CheckCrowClaw; if (!.@MustRepeat) goto L_CheckLoop; goto L_Close; case 2: mes ""; mesn; mesq l("It really hurts, please hurry!"); goto L_Close; case 3: mes ""; mesn; goto L_Where; } L_CheckLoop: while (!.@MustRepeat) { switch (select(l("Here is another one."), l("I must leave to get more."))) { case 1: .@MustRepeat = CheckCrowClaw; break; case 2: goto L_Close; } } goto L_Close; L_Where: mesq l("You can find some Crocs on the beach, you could look up at the one after the gate, on top of this city."); goto L_Close; L_Close: initnpctimer; close; OnTimer1000: domovestep; OnTouch: SayRandomGreeting; end; OnHour00: if (playerattached()) @ArtisQuests_Urchin_MoonMsgTick = 0; end; OnInit: .distance = 3; .maxLevel = getmonsterinfo(Croc, MOB_LV) + 10; initpath "move", 41, 30, "dir", DOWN, 0, "wait", 2, 0, "move", 33, 32, "dir", DOWN, 0, "wait", 10, 0; initialmove; initnpctimer; }