diff options
-rw-r--r-- | npc/003-1/sarah.txt | 120 | ||||
-rw-r--r-- | npc/functions/mobhunter.txt | 6 |
2 files changed, 74 insertions, 52 deletions
diff --git a/npc/003-1/sarah.txt b/npc/003-1/sarah.txt index c46a66c87..4cea8e71e 100644 --- a/npc/003-1/sarah.txt +++ b/npc/003-1/sarah.txt @@ -1,77 +1,96 @@ // TMW2 Script // Author: // Saulc +// Jesusalva +// DangerDuck // Description: // Random NPC without any purpose but to give SerfHat. Uh. // TODO: Could be repeatable quest (eg. 60 GP for a cake every day, so you can have a 10 GP profit selling cakes) 003-1,90,144,0 script Sarah NPC_FEMALE,{ + function quest_completed; + function quest_open; + function quest_started; + function AssignGHQ; - function quest_completed { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("It was so tasty, I can't eat anything more... Thank you."); - close; - } + // Main Loop + do + { + .@q = getq(TulimsharQuest_Sarah); + if (.@q == 1) + quest_completed(); + select + rif(!.@q, l("Hello, I'm new here! Can I help you?")), + menuaction(l("Quit")); - function quest_open { - if (countitem(.cake) >= 5) { - speech S_FIRST_BLANK_LINE, - l("You brought me 5 @@ ! Here is your @@, as promised.",getitemlink(.cake), getitemlink(.reward)); - delitem .cake,5; - getitem .reward,1; - getexp 80, 2; - setq TulimsharQuest_Sarah, 1; - close; - } else { - speech S_FIRST_BLANK_LINE, - l("Sorry, that is not the cake I love."); - close; + switch (@menu) { + case 1: + quest_started(); + break; } - } + } while (@menu != 2); - function quest_started { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Oh, Welcome then."); - speech S_LAST_NEXT, - l("Can you bring me 5 pieces of Cherry Cake? Pretty please?"); - do - { - select - l("Here they are!"), - menuaction(l("Quit")); + closedialog; + goodbye; + close; - switch (@menu) { - case 1: - quest_open; - break; - case 2: - mesc l("Protip: @@ is dropped by @@. It is a tough monster, you might need some strategy to kill it. @@ can be bought in shops.", getitemlink(CherryCake), getmonsterlink(GiantMaggot)); - next; - break; - } - } while (@menu != 2); - } +// Quest completed +function quest_completed { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("It was so tasty, I can't eat anything more... Thank you."); + AssignGHQ(); + return; +} +// Quest Core +function quest_started { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Oh, Welcome then."); + speech S_LAST_NEXT, + l("Can you bring me 5 pieces of Cherry Cake? Pretty please?"); do { - .@chest = getq(TulimsharQuest_Sarah); - if (.@chest == 1) - goto quest_completed; select - rif(.@chest == 0, - l("Hello, I'm new here! Can I help you?")), + l("Here they are!"), menuaction(l("Quit")); switch (@menu) { case 1: - quest_started; + quest_open(); + break; + case 2: + mesc l("Protip: @@ is dropped by @@. It is a tough monster, you might need some strategy to kill it. @@ can be bought in shops.", getitemlink(CherryCake), getmonsterlink(GiantMaggot)); + mesc l("%s can also be obtained from %s, at a lower drop rate.", getitemlink(CherryCake), getmonsterlink(Duck)); + next; break; } } while (@menu != 2); + return; +} - closedialog; - goodbye; - close; +// Quest check +function quest_open { + if (countitem(CherryCake) >= 5) { + speech S_FIRST_BLANK_LINE, + l("You brought me 5 @@ ! Here is your @@, as promised.",getitemlink(CherryCake), getitemlink(SerfHat)); + delitem CherryCake,5; + getitem SerfHat,1; + getexp 80, 2; + setq TulimsharQuest_Sarah, 1; + close; + } else { + speech S_FIRST_BLANK_LINE, + l("Sorry, that is not the cake I love."); + close; + } + return; +} + +// Grand Hunter Quest (post-quest) +function AssignGHQ { + GHQ_Assign(Duck, "Holiday"); + end; +} OnInit: .@npcId = getnpcid(.name$); @@ -82,9 +101,6 @@ OnInit: setunitdata(.@npcId, UDT_HAIRSTYLE, 19); setunitdata(.@npcId, UDT_HAIRCOLOR, 16); - .cake = CherryCake; - .reward = SerfHat; - .sex = G_FEMALE; .distance = 5; end; diff --git a/npc/functions/mobhunter.txt b/npc/functions/mobhunter.txt index 11681a998..ce68ec0e5 100644 --- a/npc/functions/mobhunter.txt +++ b/npc/functions/mobhunter.txt @@ -29,6 +29,9 @@ function script GHQ_GetQuestIDByMonsterID { case MountainSnake: return 8; break; + case Duck: + return 9; + break; default: return Exception("GHQ GQID: Invalid ID: "+getarg(0), RB_DEFAULT^RB_PLEASEREPORT|RB_ISFATAL); break; @@ -63,6 +66,9 @@ function script GHQ_GetMonsterIDByQuestID { case 8: return MountainSnake; break; + case 9: + return Duck; + break; default: return Exception("GHQ GMID: Invalid ID: "+getarg(0), RB_DEFAULT^RB_PLEASEREPORT|RB_ISFATAL); break; |