// TMW2 Script. // Author: // Saulc // Jesusalva // Description: // Sorfina is Hasan's mother. // // 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 003-4,39,33,0 script Sorfina NPC_FEMALE_ARGAES,{ if (getq(TulimsharQuest_Hasan) == 2) goto L_Trouble; if (getq(TulimsharQuest_Hasan) == 3) goto L_Basement; if (getq(TulimsharQuest_Hasan) == 4) goto L_Finished; // Status 5 returns to default message if (getq(TulimsharQuest_Hasan) == 5) goto L_Reward2; mesn; mesq l("Hello, darling!"); close; L_Trouble: mesn strcharinfo(0); mesq l("Your son, Hasan, has stolen me!"); next; mesn; mesq l("Oh, he has been a little rascal since his father died."); mesc l("*cries*"); next; mesn; mesq l("You see, after a monster attack... My husband went to the desert, to check how things were..."); mesc l("*cries*"); next; mesn; mesq l("He never touched the Soul Menhir... He died... For real..."); mesc l("*cries*"); next; mesn; mesc l("Sorfina recomposes herself."); mesq l("There is a rare kind of scorpion, the Murderer Scorpion. Very dangerous."); setq TulimsharQuest_Hasan, 3, 0; next; goto L_Basement; L_Basement: if (BaseLevel < 13) goto L_TooWeak; .@q3=getq3(TulimsharQuest_Hasan); if (.@q3 > santime()) goto L_Wait; mesn; mesq l("There's one on the basement of this house. If you kill it, Hasan will think on you as a hero and won't steal you anymore."); next; menu l("I will kill one."), L_OpenDoors, l("Maybe later."), L_Close; L_OpenDoors: .@ID=getcharid(0); .@MAP_NAME$="hasn@"+str(.@ID); // Max 4 chars for map name .@INSTID = instance_create("003-4-1@a"+(.@ID), getcharid(3), IOT_CHAR); .@instanceMapName$ = instance_attachmap("003-4-1", .@INSTID, 0, .@MAP_NAME$); setq TulimsharQuest_Hasan, 3, .@INSTID, santime()+300; // Debug if (.@instanceMapName$ == "") consolewarn "Error: Map 003-4-1 X failed"; debugmes "Created map: "+ str(.@instanceMapName$); // You have 5 minutes to complete the quest. instance_set_timeout(300, 300, .@INSTID); instance_init(.@INSTID); .@x=34;//rand(29, 45); .@y=33;//rand(29, 41); monster(.@MAP_NAME$, .@x, .@y, l("Murderer Scorpion"), MurdererScorpion, 1, "Sorfina::OnKillMurderer"); addtimer(60000, "Sorfina::OnWarn"); mesn; mesq l("Just go to the basement, past this door. Good luck, @@!", strcharinfo(0)); close; L_Wait: mesn; mesq l("Good luck killing it! And don't forget to touch the Soul Menhir before you go!"); close; L_TooWeak: mesn; mesq l("You are too weak to kill one and impress him, so please, bear my son."); close; L_Close: close; L_Finished: mesn; mesq l("Please, show Hasan the claw. Just talk to him."); close; L_Reward2: mesn; mesq l("Thanks for helping my son. Here, take 300 GP for your troubles."); setq1 TulimsharQuest_Hasan, 6; Zeny=Zeny+300; close; OnKillMurderer: setq TulimsharQuest_Hasan, 4; dispbottom l("I will take a claw and show Hasan."); end; OnWarn: /* removed: not in map. You can leave the map. if (!compare(getmap(), "hasn@")) end; */ // Quest state is invalid .@q=getq(TulimsharQuest_Hasan); if (.@q != 3) end; .@q3=getq3(TulimsharQuest_Hasan); dispbottom l("Time left: @@ remaining", FuzzyTime(.@q3)); if (.@q3-gettimetick(2) > 60) addtimer(60000, "Sorfina::OnWarn"); else if (.@q3-gettimetick(2) > 15) addtimer(15000, "Sorfina::OnWarn"); end; OnInit: .@npcId = getnpcid(.name$); setunitdata(.@npcId, UDT_HEADTOP, NPCEyesD); setunitdata(.@npcId, UDT_HEADMIDDLE, ValentineDress); //TODO setunitdata(.@npcId, UDT_HEADBOTTOM, CottonTrousers); setunitdata(.@npcId, UDT_WEAPON, DeepBlackBoots); // Boots setunitdata(.@npcId, UDT_HAIRSTYLE, 16); setunitdata(.@npcId, UDT_HAIRCOLOR, 4); .sex = G_FEMALE; .distance = 5; end; }