diff options
author | Jesusaves <cpntb1@ymail.com> | 2021-07-07 20:36:00 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2021-07-07 20:36:00 -0300 |
commit | 6967b9e0b63d19141d4f59b7933a960ac81916d0 (patch) | |
tree | 8ecd9cd2461f3598cb7faece71eb77162aa4ef2a /npc/009-2/airlia.txt | |
parent | 9877fd4ad81120af8e63e96d5d429092014dc017 (diff) | |
parent | 046c659193e1ca8bd13478678d1277df8bf9395c (diff) | |
download | serverdata-6967b9e0b63d19141d4f59b7933a960ac81916d0.tar.gz serverdata-6967b9e0b63d19141d4f59b7933a960ac81916d0.tar.bz2 serverdata-6967b9e0b63d19141d4f59b7933a960ac81916d0.tar.xz serverdata-6967b9e0b63d19141d4f59b7933a960ac81916d0.zip |
Merge branch 'master' into legacy
Override all files with 'master' version.
This version is meant to preserve git history as requested by bjorn.
Diffstat (limited to 'npc/009-2/airlia.txt')
-rw-r--r-- | npc/009-2/airlia.txt | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/npc/009-2/airlia.txt b/npc/009-2/airlia.txt new file mode 100644 index 00000000..7996181f --- /dev/null +++ b/npc/009-2/airlia.txt @@ -0,0 +1,242 @@ + + + +009-2,123,71,0 script Airlia NPC108,{ + // Subquest 1a: Caretaker's daughter (initial, once) + @LETTER_REWARD_GOLD_INITIAL = 1000; + @LETTER_REWARD_EXP_INITIAL = 2000; + + @Q_STATUS_RECIEVED_FIRST_LETTER = 2; + @Q_STATUS_DELIVERED_FIRST_LETTER = 3; + + // Subquest 1b: Continued delivery of letters (unlimited) + @LETTER_REWARD_GOLD = 42; + @LETTER_REWARD_EXP = 500; + + @Q_STATUS_HAS_NO_NEW_LETTER = 4; + @Q_STATUS_HAS_NEW_LETTER = 5; + + // Subquest 2a: Fetch those undead drops (initial, once) + // TODO: Set sane values below + @FETCH_AMOUNT_INITIAL = 50; + @FETCH_LABEL_INITIAL$ = "Bone"; + @FETCH_REWARD_GOLD_INITIAL = 5000; + @FETCH_REWARD_EXP_INITIAL = 50000; + + @Q_STATUS_HELP_AIRLIA = 1; + @Q_STATUS_INITIAL_FETCH_REWARDED = 2; + + // Subquest 2b: Fetch those undead drops (unlimited) + // TODO: Set sane values below + @FETCH_AMOUNT = 10; + @FETCH_LABEL$ = "DiseasedHeart"; + @FETCH_REWARD_GOLD = 6000; + @FETCH_REWARD_EXP = 40000; + + + 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_Intro; + goto L_Caretaker; + +L_Caretaker: + mes "[Airlia]"; + mes "\"Greetings. Do you need a housing permit, or to license your mount?\""; + next; + if (QUEST_Graveyard_Caretaker < @Q_STATUS_RECIEVED_FIRST_LETTER) + menu + "Sorry, no.", L_Next, + "My what?", L_mount; + if (QUEST_Graveyard_Caretaker == @Q_STATUS_RECIEVED_FIRST_LETTER) + menu + "Sorry, no.", L_Next, + "I have a letter from your father.", L_first_reward, + "My what?", L_mount; + goto L_Next; + +L_Next: + mes "[Airlia]"; + mes "\"Nobody ever does...\""; + close; + +L_mount: + // The mention of mounts will certainly gather some interest from players, + // this section may be extended. + close; + +L_first_reward: + mes "[Airlia]"; + mes "\"Oh! Thank you very, very much! Please take this for your trouble.\""; + 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]"; + Zeny = Zeny + @LETTER_REWARD_GOLD_INITIAL; + getexp @LETTER_REWARD_EXP_INITIAL, 0; + QUEST_Graveyard_Caretaker = @Q_STATUS_DELIVERED_FIRST_LETTER; + close; + +L_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]"; + Zeny = Zeny + @LETTER_REWARD_GOLD; + getexp @LETTER_REWARD_EXP, 0; + QUEST_Graveyard_Caretaker = @Q_STATUS_HAS_NO_NEW_LETTER; + close; + +L_Intro: + mes "[Airlia]"; + mes "\"My poor father, doomed to that awful cemetery.\""; + next; + + // CASE REMOVED: + // This step is pointless and just forces the player to make a selection that doesn't effect anything. + // ALSO it misses the case where QUEST_Graveyard_Caretaker == 3, in this case it proceeds to the message without wasting player clicks + // Removing this check will make execution the same for QUEST_Graveyard_Caretaker == 3 and QUEST_Graveyard_Caretaker == 4 + // If for some reason this is desireable, uncomment it and make sure to catch the extra case mentioned + // + //if (QUEST_Graveyard_Caretaker == @Q_STATUS_HAS_NO_NEW_LETTER) + // menu + // "...", -; + + if (QUEST_Graveyard_Caretaker == @Q_STATUS_HAS_NEW_LETTER) + menu + "...", L_Next3, + "Oh, I have a letter from him.", L_later_rewards; + goto L_Next3; + +L_Next3: + mes "[Airlia]"; + 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 + "I believe so, yes.", L_Intro_mana_loss, + "Maybe...", L_Intro_mana_loss, + "No, that is not proven.", L_Next1; + +L_Next1: + mes "[Airlia]"; + mes "\"Oh...\""; + close; + +L_Intro_mana_loss: + mes "[Airlia]"; + 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 + "...", L_Intro_fou, + "I have heard of them.", L_Intro_fou, + "Keep up the good work. I have to go now, bye.", L_close; + +L_Intro_fou: + mes "[Airlia]"; + mes "\"If we drain those evil creatures of their mana, I can get my father back. He is getting very old. Will you help us?\""; + next; + menu + "Of course I will.", L_Intro_fight, + "Sure, I guess.", L_Intro_fight, + "Thanks, but no thanks. I have other business to attend to.", L_close; + +L_Intro_fight: + mes "[Airlia]"; + mes "\"Great, just kill any of the undead creatures you can and bring me proof of your work, and I will put in a word for you with the guild.\""; + next; + menu + "I'm on it.", L_Next2, + "What sort of proof?", L_Intro_proof; + +L_Next2: + QUEST_Airlia = @Q_STATUS_HELP_AIRLIA; + goto L_close; + +L_Intro_proof: + mes "[Airlia]"; + mes "\"Let's say " + @FETCH_AMOUNT_INITIAL + " " + getitemlink(@FETCH_LABEL_INITIAL$) + "s. You don't know how much this means to me, thank you.\""; + QUEST_Airlia = @Q_STATUS_HELP_AIRLIA; + close; + +L_Fetch: + mes "[Airlia]"; + mes "\"Thank you for helping my father.\""; + next; + mes "\"Have you collected the " + @FETCH_AMOUNT_INITIAL + " " + getitemlink(@FETCH_LABEL_INITIAL$) + "?\""; + + // Make sure to check if the player has a letter to deliver. + // If the check is not made then there is a bug, where the player + // has a letter but has not completed the initial fetch + // and is prevented from turing in the letter until the fetch is completed. + + if (QUEST_Graveyard_Caretaker < @Q_STATUS_HAS_NEW_LETTER) + menu + "Yes.", L_Fetch_initial_reward, + "No.", L_close; + if (QUEST_Graveyard_Caretaker == @Q_STATUS_HAS_NEW_LETTER) + menu + "I have another letter from your father.", L_later_rewards, + "Yes.", L_Fetch_initial_reward, + "No.", L_close; + goto L_close; + +L_Fetch_initial_reward: + if (countitem(@FETCH_LABEL_INITIAL$) < @FETCH_AMOUNT_INITIAL) goto L_Fetch_not_enough; + mes "[Airlia]"; + 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; + Zeny = Zeny + @FETCH_REWARD_GOLD_INITIAL; + getexp @FETCH_REWARD_EXP_INITIAL, 0; + 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 will give you what gold I can afford as a token of my gratitude.\""; + close; + +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.\""; + 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; + Zeny = Zeny + @FETCH_REWARD_GOLD; + getexp @FETCH_REWARD_EXP, 0; + close; + +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 for your help.\""; + next; + mes "\"Have you collected the " + @FETCH_AMOUNT + " " + getitemlink(@FETCH_LABEL$) + "s?\""; + if (QUEST_Graveyard_Caretaker < @Q_STATUS_HAS_NEW_LETTER) + menu + "Yes.", L_Fetch_later_rewards, + "No.", L_close; + if (QUEST_Graveyard_Caretaker == @Q_STATUS_HAS_NEW_LETTER) + menu + "I have another letter from your father.", L_later_rewards, + "Yes.", L_Fetch_later_rewards, + "No.", L_close; + goto L_close; + +L_close: + close; +} |