summaryrefslogtreecommitdiff
path: root/npc/009-2/airlia.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/009-2/airlia.txt')
-rw-r--r--npc/009-2/airlia.txt242
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;
+}