// TMW-2 Script // Author: // Jesusalva // Description: // Hasan is the city bully and steals the player. He lost his father to a Murderer // Scorpion. Will respect player if they kill one. His mother is Sorfina, whom // explains this and cries that he never touched a Soul Menhir. Allowing player // to kill scorpion on Mahoud's Basement. // // Player must report theft first to Dausen, who will tell the player that's // normal and nobody messes with Hasan, and giving player pointer that he should // tell his mother, Sorfina. // // Reward: Cotton Short, Hasan won't steal you anymore. // // GETQ1 Variable Value; // 0 - Never stolen by Hasan // 1 - Already stolen by Hasan // 2 - Dausen pointed player to Sorfina // 3 - Sorfina unlocked Mahoud's Basement // 4 - Player killed Murderer Scorpion // 5 - Quest is complete // // $HASAN_ST // Number of Scorpions killed during Autumn // $HASAN_GP // Total money Hasan collected for Autumn event // $HASAN_LT // Previous collected money, for rewards calc // // PS. $@GM_OVERRIDE will disable Season restrictions, but values from 20/09 and 21/12 // must be set manually. // Temporary sprite 003-1,62,148,0 script Hasan NPC_ELVEN_MAN_RED,2,2,{ if (getq(TulimsharQuest_Hasan) == 0) goto L_Safe; if (getq(TulimsharQuest_Hasan) == 4) goto L_Finish; if (getq(TulimsharQuest_Hasan) >= 5) goto L_Complete; mesn strcharinfo(0); mesq l("Give me back what you've stole, thief!"); next; mesn; mesq l("I stole nothing from you. Do you have any proof?"); next; menu l("I have a print screen!"), L_Print, l("No..."), L_Close; close; L_Away: mesn; mesq l("Hey... Go bother someone else."); close; L_Print: mes ""; mesn; mesq l("Let me analyze that."); mesc l("Hasan takes your print screen and analyzes it."); next; mesn; mesq l("Photoshopped. Definitely. Good luck convincing somebody with that! %%a"); next; mesn; mesq l("If you go to Lieutenant Dausen, he'll say that you used Gimp. Just give up."); close; // TODO L_Finish: mesn; mesq l("Is that... Wait... Wow. You... Killed a murderer scorpion."); next; mesn; mesq l("I promise I'll never steal from you again. Here, take this shorts."); mesq l("Good job, man!"); setq TulimsharQuest_Hasan, 5; getitem CottonShorts, 1; getexp 99, 55; close; L_Complete: mesn; mesq l("Thanks for avenging my father."); next; mesn; mesq l("I am collecting money for the Yearly Autumn Scorpion Hunter quest."); mesq l("You're, of course, invited. Thus far, the total prize money I've collected is @@ GP.", $HASAN_GP); if (season() == AUTUMN || $@GM_OVERRIDE || is_staff()) { mesq l("You've killed @@ scorpions, and a total of @@ were killed this season.", getq2(SQuest_Autumn), $HASAN_ST); mesq l("If the event ended now, you would get @@ GP.", getq2(SQuest_Autumn)*$HASAN_GP/$HASAN_ST); mes ""; mesc l("Note: Poll may increase more than total money donated depending on current date."); menuint l("Thanks."), 0, rif(Zeny >= 5, l("Donate 5 GP for prize")), 5, rif(Zeny >= 15, l("Donate 15 GP for prize")), 15, rif(Zeny >= 50, l("Donate 50 GP for prize")), 50, rif(Zeny >= 100, l("Donate 100 GP for prize")), 100, rif(Zeny >= 1000, l("Donate 1k GP for prize")), 1000, rif(Zeny >= 10000, l("Donate 10k GP for prize")), 10000, rif(Zeny >= 25000, l("Donate 25k GP for prize")), 25000, rif(Zeny >= 100000, l("Donate 100k GP for prize")), 100000, rif(Zeny >= 250000, l("Donate 250k GP for prize")), 250000; if (@menuret > 0) { Zeny=Zeny-@menuret; .@poll=@menuret; .@bonus=10000; .@bonus+=rand(gettime(GETTIME_MONTH) == DECEMBER ? 2000 : 4000); .@bonus+=(gettime(GETTIME_MONTH) == DECEMBER ? 0 : 1000); .@poll=.@poll*.@bonus/10000; $HASAN_GP=$HASAN_GP+.@poll; } } .@q=getq(SQuest_Autumn); if (season() == WINTER && (.@q == gettime(GETTIME_YEAR) || (.@q == gettime(GETTIME_YEAR)-1 && gettime(GETTIME_MONTH) <= MARCH))) { .@p=getq2(SQuest_Autumn)*$HASAN_LT/$HASAN_ST; mesn l("Summary"); mes l("Scorpions killed: @@/@@ scorpions", getq2(SQuest_Autumn), $HASAN_ST); mes l("Total money collected: @@ GP", $HASAN_LT); mesc l("Your prize: %s GP", fnum(.@p)), 2; if (getq2(SQuest_Autumn) > 20) getexp (getq2(SQuest_Autumn)/20), 0; if (.@p >= 1) Zeny+=.@p; // Top 5 reward if (strcharinfo(0) == $@hasn_name$[0]) getitem SupremeGift, 1; if (strcharinfo(0) == $@hasn_name$[1]) getitem PrismGift, 1; if (strcharinfo(0) == $@hasn_name$[2]) getitem GoldenGift, 1; if (strcharinfo(0) == $@hasn_name$[3]) getitem SilverGift, 1; if (strcharinfo(0) == $@hasn_name$[4]) getitem BronzeGift, 1; // Quest is closed setq1 SQuest_Autumn, 1970; } close; L_TouchComplete: if (@hasan_antiflood < gettimetick(2)) { npctalkonce l("Hey there, @@! Good luck killing monsters!", strcharinfo(0)), 3; @hasan_antiflood=gettimetick(2)+600; } end; L_Close: close; OnTouch: if (getq(TulimsharQuest_Hasan) >= 5) goto L_TouchComplete; if (Zeny > 15) goto L_Steal; end; L_Steal: npctalkonce(l("*whistle*")); if (getq(TulimsharQuest_Hasan) == 0) goto L_DoSteal; if (getq(TulimsharQuest_Hasan) <= 4 && rand(0,100) < 20) goto L_DoSteal; end; L_DoSteal: .@s=rand(3,12); $HASAN_GP=$HASAN_GP+.@s; Zeny=Zeny-.@s; if (getq(TulimsharQuest_Hasan) == 0) setq TulimsharQuest_Hasan, 1; dispbottom l("##BYou were robbed##b by an evil NPC."); end; OnInit: .sex = G_MALE; .distance = 5; //npcspeed(150); //npcwalkto(, ); end; // Restart hasan status on 20/09 (double-sure) OnDay0920: $HASAN_ST=0; end; // Once autumn is over (21/12) restart GP poll and send value to backup OnDay1221: $HASAN_LT=0+$HASAN_GP; $HASAN_GP=2000; end; } function script SQuest_Hasan { if (season() != AUTUMN && !$@GM_OVERRIDE) return; if (getq(SQuest_Autumn) != gettime(GETTIME_YEAR)) setq SQuest_Autumn, gettime(GETTIME_YEAR), 0; // All scorpions are counting for Hasan Autumn Quest if ( killedrid == Scorpion || killedrid == RedScorpion || killedrid == BlackScorpion || killedrid == CandorScorpion || killedrid == AngryScorpion || killedrid == AngryRedScorpion || killedrid == NightScorpion || killedrid == GoldenScorpion || killedrid == MurdererScorpion) { setq2 SQuest_Autumn, getq2(SQuest_Autumn)+1; $HASAN_ST=$HASAN_ST+1; } return; }