diff options
Diffstat (limited to 'npc')
-rw-r--r-- | npc/009-2_Hurnscald/airlia.txt | 197 | ||||
-rw-r--r-- | npc/027-2_Caretakers_House/caretaker.txt | 12 |
2 files changed, 131 insertions, 78 deletions
diff --git a/npc/009-2_Hurnscald/airlia.txt b/npc/009-2_Hurnscald/airlia.txt index daae6bb8..5034ee08 100644 --- a/npc/009-2_Hurnscald/airlia.txt +++ b/npc/009-2_Hurnscald/airlia.txt @@ -1,58 +1,64 @@ -// ------------------------------------------ // Airlia, daughter of the cemetary caretaker -// ------------------------------------------ - -// TODO: -// * General: Location (coordinates) and look (sprite) for Airlia? -// * General: Work out quest variables and their states with Jaxad, for now I call them: -// - caretaker -// - letter -// - airlia -// > Caretaker and letter replaced as appropriate. -Jaxad -// / Subquest 1: Amount of gold as reward for the (maybe repeatable) letter quest? (finished -Jaxad) -// / Subquest 1: Will the letter quest be repeatable or not? (finished -Jaxad) -// * Subquest 2: Amount of what (undead-drop only) item for Airlia's fetch quest? -// * Subquest 2: Amount of experience recieved as reward for Airlia's fetch quest? -// * Script the L_Future part (may do for now) -// * Maybe flesh out some dialogue -// - Especially if repeatable, random replies for letter quest... -// - Mounts? + +// Future extensions: +// * Add banter and random replies for the unlimited subquests +// * Airlia quest = 2 unlocks options with Fighters of the Undead NPCs (in Cemetery), such as the 'Kill Sir Truk' quest +// * Airlia quest = 2 unlocks other options, perhaps with future Warrior Guild prospects (this is long term) + 009-2.gat,123,71,0 script Airlia 108,{ - // Subquest 1: Caretaker's daughter (once), delivery of letter (once/unlimited) - set @LETTER_REWARD_GOLD_INITAL, 1000; - set @LETTER_REWARD_EXP_INITAL, 2000; + // Subquest 1a: Caretaker's daughter (initial, once) + set @LETTER_REWARD_GOLD_INITIAL, 1000; + set @LETTER_REWARD_EXP_INITIAL, 2000; + + set @Q_STATUS_RECIEVED_FIRST_LETTER, 2; + set @Q_STATUS_DELIVERED_FIRST_LETTER, 3; + + // Subquest 1b: Continued delivery of letters (unlimited) set @LETTER_REWARD_GOLD, 42; set @LETTER_REWARD_EXP, 500; - // Subquest 2: Fetch those undead drops (once) - set @FETCH_ITEM_AMOUNT, 42; - set @FETCH_ITEM_LABEL$, "Iten"; - set @FETCH_ITEM_NAME$, "Iten"; - set @FETCH_ITEM_REWARD_XP, 42; + set @Q_STATUS_HAS_NO_NEW_LETTER, 4; + set @Q_STATUS_HAS_NEW_LETTER, 5; - set @QUEST_AIRLIA_ACCEPTED, 1; - set @QUEST_AIRLIA_REWARDED, 2; + // Subquest 2a: Fetch those undead drops (initial, once) + // TODO: Set sane values below + set @FETCH_AMOUNT_INITIAL, 42; + set @FETCH_LABEL_INITIAL$, "Iten"; + set @FETCH_NAME_INITIAL$, "Iten"; + set @FETCH_REWARD_GOLD_INITIAL, 0; + set @FETCH_REWARD_EXP_INITIAL, 42; + set @Q_STATUS_HELP_AIRLIA, 1; + set @Q_STATUS_INITIAL_FETCH_REWARDED, 2; - if (airlia >= @QUEST_AIRLIA_REWARDED) goto L_Future; - if (airlia == @QUEST_AIRLIA_ACCEPTED) goto L_Fetch; - if (QUEST_Graveyard_Caretaker > 2) goto L_Airlia_intro; + // Subquest 2b: Fetch those undead drops (unlimited) + // TODO: Set sane values below + set @FETCH_AMOUNT, @FETCH_AMOUNT_INITIAL; + set @FETCH_LABEL$, @FETCH_LABEL_INITIAL$; + set @FETCH_NAME$, @FETCH_NAME_INITIAL$; + set @FETCH_REWARD_GOLD, 1; + set @FETCH_REWARD_EXP, 0; + + + if (QUEST_Airlia == @Q_STATUS_INITIAL_FETCH_REWARDED) goto L_Rewarded; + if (QUEST_Airlia == @Q_STATUS_HELP_AIRLIA) goto L_Fetch; + if (QUEST_Graveyard_Caretaker > @Q_STATUS_RECIEVED_FIRST_LETTER) goto L_Airlia_intro; L_Caretaker: mes "[Airlia]"; mes "\"Greetings. Do you need a housing permit, or to license your mount?\""; next; - if (QUEST_Graveyard_Caretaker < 4) + if (QUEST_Graveyard_Caretaker < @Q_STATUS_RECIEVED_FIRST_LETTER) menu "Sorry, no.", -, "My what?", L_Caretaker_mount; - if (QUEST_Graveyard_Caretaker == 4) + if (QUEST_Graveyard_Caretaker == @Q_STATUS_RECIEVED_FIRST_LETTER) menu "Sorry, no.", -, - "I have a letter from your father.", L_Caretaker_reward2, + "I have a letter from your father.", L_Caretaker_first_reward, "My what?", L_Caretaker_mount; mes "[Airlia]"; @@ -60,53 +66,53 @@ L_Caretaker: close; L_Caretaker_mount: + // The mention of mounts will certainly gather some interest from players, + // this section may be extended. close; -L_Caretaker_reward: +L_Caretaker_first_reward: mes "[Airlia]"; mes "\"Oh! Thank you very, very much! Please take this for your trouble.\""; - if (@LETTER_REWARD_GOLD_INITAL > 0) - mes "[" + @LETTER_REWARD_GOLD_INITAL + " GP]"; - if (@LETTER_REWARD_EXP_INITAL > 0) - mes "[" + @LETTER_REWARD_EXP_INITAL + " experience points]"; - - set zeny, zeny + @LETTER_REWARD_GOLD_INITAL; - getexp @LETTER_REWARD_EXP_INITAL, 0; - set QUEST_Graveyard_Caretaker, 3; + if (@LETTER_REWARD_GOLD_INITIAL > 0) + mes "[" + @LETTER_REWARD_GOLD_INITIAL + " GP]"; + if (@LETTER_REWARD_EXP_INITIAL > 0) + mes "[" + @LETTER_REWARD_EXP_INITIAL + " experience points]"; + + set zeny, zeny + @LETTER_REWARD_GOLD_INITIAL; + getexp @LETTER_REWARD_EXP_INITIAL, 0; + set QUEST_Graveyard_Caretaker, @Q_STATUS_DELIVERED_FIRST_LETTER; close; -L_Caretaker_reward2: +L_Caretaker_later_rewards: mes "[Airlia]"; mes "\"Oh! Thank you very, very much! Please take this for your trouble.\""; if (@LETTER_REWARD_GOLD > 0) mes "[" + @LETTER_REWARD_GOLD + " GP]"; if (@LETTER_REWARD_EXP > 0) - mes "[" + @LETTER_REWARD_EXP + " experience points]"; + mes "[" + @LETTER_REWARD_EXP + " experience points]"; set zeny, zeny + @LETTER_REWARD_GOLD; - getexp @LETTER_REWARD_EXP, 0; - set QUEST_Graveyard_Caretaker, 5; + getexp @LETTER_REWARD_EXP, 0; + set QUEST_Graveyard_Caretaker, @Q_STATUS_HAS_NO_NEW_LETTER; close; L_Airlia_intro: - // TODO: Should housing permits and mounts' licensing never be mentioned again? - mes "[Airlia]"; mes "\"My poor father, doomed to that awful cemetery.\""; next; - // TODO: I put in the repeatable letter quest here for now - if (QUEST_Graveyard_Caretaker == 3) + if (QUEST_Graveyard_Caretaker == @Q_STATUS_HAS_NO_NEW_LETTER) menu "...", -; - if (QUEST_Graveyard_Caretaker == 4) + if (QUEST_Graveyard_Caretaker == @Q_STATUS_HAS_NEW_LETTER) menu "...", -, - "Oh, I have a letter from him.", L_Caretaker_reward; + "Oh, I have a letter from him.", L_Caretaker_later_rewards; mes "[Airlia]"; - mes "\"You know, there are many who believe that each time the undead rise after being killed, they lose mana. Eventually, there will not be enough mana for them to rise again and they can be at rest. Do you believe this is true?\""; + mes "\"You know, there are many who believe that each time the undead rise after being killed, they lose mana." + mes "Eventually, there will not be enough mana for them to rise again and they can be at rest. Do you believe this is true?\""; next; menu @@ -120,7 +126,8 @@ L_Airlia_intro: L_Airlia_intro_mana_loss: mes "[Airlia]"; - mes "\"When I am not working, I recruit help for the esteemed Fighters of the Undead, or FoU. They are an official group effort of the Warriors' Guild and Magicians, you know, a very prestigious group.\""; + mes "\"When I am not working, I recruit help for the esteemed Fighters of the Undead, or FoU." + mes "They are an official group effort of the Warriors' Guild and Magicians, you know, a very prestigious group.\""; next; menu @@ -149,13 +156,13 @@ L_Airlia_intro_fight: "I'm on it.", -, "What sort of proof?", L_Airlia_intro_proof; - set airlia, @QUEST_AIRLIA_ACCEPTED; + set QUEST_Airlia, @Q_STATUS_HELP_AIRLIA; close; L_Airlia_intro_proof: mes "[Airlia]"; - mes "\"Let's say " + @FETCH_ITEM_AMOUNT + " [" + @FETCH_ITEM_NAME$ + "]s. You don't know how much this means to me, thank you.\""; - set airlia, @QUEST_AIRLIA_ACCEPTED; + mes "\"Let's say " + @FETCH_AMOUNT_INITIAL + " [" + @FETCH_NAME_INITIAL$ + "]s. You don't know how much this means to me, thank you.\""; + set QUEST_Airlia, @Q_STATUS_HELP_AIRLIA; close; L_Fetch: @@ -163,34 +170,70 @@ L_Fetch: mes "\"Thank you for helping my father.\""; next; - menu - "You are welcome.", -, - "I have collected " + @FETCH_ITEM_AMOUNT + " [" + @FETCH_ITEM_NAME$ + "]s.", L_Fetch_check; + if (QUEST_Airlia < @Q_STATUS_INITIAL_FETCH_REWARDED) + menu + "You are welcome.", -, + "I have collected " + @FETCH_AMOUNT_INITIAL + " [" + @FETCH_NAME_INITIAL$ + "]s.", L_Fetch_initial_reward; + + if (QUEST_Airlia == @Q_STATUS_INITIAL_FETCH_REWARDED) + menu + "You are welcome.", -, + "I have collected " + @FETCH_AMOUNT + " [" + @FETCH_NAME$ + "]s.", L_Fetch_later_rewards; close; -L_Fetch_check: - if (countitem(@FETCH_ITEM_LABEL$) >= @FETCH_ITEM_AMOUNT) goto L_Fetch_award; +L_Fetch_initial_reward: + if (countitem(@FETCH_LABEL_INITIAL$) < @FETCH_AMOUNT_INITIAL) goto L_Fetch_not_enough; mes "[Airlia]"; - mes "\"I'm sorry, I didn't realize you couldn't count. Perhaps when I have some free time, I can help you learn if you'd like.\""; + mes "\"Excellent work. You are definitely a great warrior. I will tell the guild of your deeds.\""; + if (@FETCH_REWARD_GOLD_INITIAL > 0) + mes "[" + @FETCH_REWARD_GOLD_INITIAL + " GP]"; + if (@FETCH_REWARD_EXP_INITIAL > 0) + mes "[" + @FETCH_REWARD_EXP_INITIAL + " experience points]"; + delitem @FETCH_LABEL_INITIAL$, @FETCH_AMOUNT_INITIAL; + set zeny, zeny + @FETCH_REWARD_GOLD_INITIAL; + getexp @FETCH_REWARD_EXP_INITIAL, 0; + set QUEST_Airlia, @Q_STATUS_INITIAL_FETCH_REWARDED; + next; + + mes "[Airlia]"; + // TODO: Write the dialogue when I'm not tired... + mes "\"Oh, before you leave. We all must do what we can to stop this tragedy." + mes "If you are willing to keep draining the undead of mana, I willl give you what gold I can afford as a token of my gratitude.\""; close; -L_Fetch_award: +L_Fetch_later_rewards: + if (countitem(@FETCH_LABEL$) < @FETCH_AMOUNT) goto L_Fetch_not_enough; + mes "[Airlia]"; - mes "\"Excellent work. You are definitely a great warrior. I will tell the guild of your deeds.\""; - delitem @FETCH_ITEM_LABEL$, @FETCH_ITEM_AMOUNT; - getexp @FETCH_ITEM_REWARD_XP, 0; - set airlia, @QUEST_AIRLIA_REWARDED; + mes "\"Excellent work. You are definitely a great warrior.\""; + if (@FETCH_REWARD_GOLD > 0) + mes "[" + @FETCH_REWARD_GOLD + " GP]"; + if (@FETCH_REWARD_EXP > 0) + mes "[" + @FETCH_REWARD_EXP + " experience points]"; + delitem @FETCH_LABEL$, @FETCH_AMOUNT; + set zeny, zeny + @FETCH_REWARD_GOLD; + getexp @FETCH_REWARD_EXP, 0; close; -L_Future: - // TODO: From http://wiki.themanaworld.org/index.php/User:John_Pyle/Cemetery_Caretaker_Quest: - // * Thats it, Banter - Thanks, Greetings, etc. - // * She can give recurrent gold for x number undead items - // * Airlia quest = 2 unlocks options with Fighters of the Undead NPCs (in Cemetery), such as the 'Kill Sir Truk' quest. - // * Airlia quest = 2 unlocks other options, perhaps with future Warrior Guild prospects (This is long term) +L_Fetch_not_enough: + mes "[Airlia]"; + mes "\"I'm sorry, I didn't realize you couldn't count. Perhaps when I have some free time, I can help you learn if you'd like.\""; + close; +L_Rewarded: mes "[Airlia]"; - mes "Thank you."; + mes "\"Thank you for your help.\""; + next; + + if (QUEST_Graveyard_Caretaker == @Q_STATUS_HAS_NO_NEW_LETTER) + menu + "I have collected " + @FETCH_AMOUNT + " [" + @FETCH_NAME$ + "]s.", L_Fetch_later_rewards; + + if (QUEST_Graveyard_Caretaker == @Q_STATUS_HAS_NEW_LETTER) + menu + "I have another letter from your father.", L_Caretaker_later_rewards, + "I have collected " + @FETCH_AMOUNT + " [" + @FETCH_NAME$ + "]s.", L_Fetch_later_rewards; + close; -}
\ No newline at end of file +} diff --git a/npc/027-2_Caretakers_House/caretaker.txt b/npc/027-2_Caretakers_House/caretaker.txt index 36715ad5..59585362 100644 --- a/npc/027-2_Caretakers_House/caretaker.txt +++ b/npc/027-2_Caretakers_House/caretaker.txt @@ -6,6 +6,8 @@ if (QUEST_Graveyard_Caretaker == 1) goto L_Return_Dialog; if (QUEST_Graveyard_Caretaker == 2) goto L_Has_Letter; if (QUEST_Graveyard_Caretaker == 3) goto L_Delivered_Letter; + if (QUEST_Graveyard_Caretaker == 4) goto L_Has_No_New_Letter; + if (QUEST_Graveyard_Caretaker == 5) goto L_Has_New_Letter; mes "[Caretaker]"; mes "\"...Another adventurer come to slay the already dead.\""; @@ -80,6 +82,14 @@ L_Has_Letter: close; L_Delivered_Letter: - // TODO + // TODO: Thank player for delivering the initial letter + close; + +L_Has_No_New_Letter: + // TODO: Give player a new letter; add time limit + close; + +L_Has_New_Letter: + // TODO: The player has to deliver the current letter first close; } |