From 90cbc3239c159e5cc9a6065426328f783a19944e Mon Sep 17 00:00:00 2001 From: Kess Vargavind Date: Tue, 8 Sep 2009 04:10:26 +0200 Subject: Update of cemetery scripts Forgot to send the latest version of Airlia before, now she should have the basic functionality in place. Also fixed some logic gone astray. What still needs to be done: some code for the Caretaker, testing and tweaking. Possibly dialogue as well, though it's not essential. --- npc/009-2_Hurnscald/airlia.txt | 197 +++++++++++++++++++++++++---------------- 1 file changed, 120 insertions(+), 77 deletions(-) (limited to 'npc/009-2_Hurnscald/airlia.txt') 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 +} -- cgit v1.2.3-70-g09d2