summaryrefslogtreecommitdiff
path: root/npc/008-2-12/nurse.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/008-2-12/nurse.txt')
-rw-r--r--npc/008-2-12/nurse.txt175
1 files changed, 175 insertions, 0 deletions
diff --git a/npc/008-2-12/nurse.txt b/npc/008-2-12/nurse.txt
new file mode 100644
index 00000000..415746cf
--- /dev/null
+++ b/npc/008-2-12/nurse.txt
@@ -0,0 +1,175 @@
+// Evol scripts.
+// Author:
+// gumi
+// The Moubootaur Legends Development Team
+// Quest states:
+// [1] 0 - cannot do the quest
+// [1] 1 - can do the quest
+// [1] 2 - talked to inspector (1) <= start
+// [1] 3 - talked to old woman (1)
+// [1] 4 - talked to old woman (2)
+// [1] 5 - talked to inspector (2)
+// [1] 6 - talked to troupe leader (1)
+// [1] 7 - talked to inspector (3)
+// [1] 8 - talked to old man
+// [1] 9 - talked to old woman (3)
+// [1] 10 - talked to inspector (4)
+// [1] 11 - talked to old woman (4)
+// [1] 12 - talked to malek
+// [1] 13 - searched the bookcase
+// [1] 14 - talked to inspector (5)
+// [1] 15 - talked to troupe leader (2) <= reward
+// [1] 16 - talked to inspector (6) <= reward, end
+// [2] unused
+// [3] unused
+// [t] unused
+// Description:
+// Hurnscald Nurse. Robberies in Hurnscald.
+
+008-2-12,28,30,0 script Nurse NPC_NURSE_LEGACY,{
+ function bloodDonor;
+ .@q2=getq2(HurnscaldQuests_BloodDonor);
+
+ speech(4,
+ l("How can I help you?"));
+
+ // XXX: this npc used to teach the resist poison skill, do we still want that?
+
+ selectd(
+ l("Oooh, these wounds! They hurt so much!"),
+ l("I don't feel so well, I might be sick."),
+ rif(.@q2 < gettimetick(2), l("I would like to donate blood.")),
+ l("No, I'm fine."),
+ rif(getq(.quest_inspector) == 2, l("Have you seen anything out of the ordinary?")));
+
+ switch (@menu)
+ {
+ case 1:
+ if (BaseLevel > .heal_max_level)
+ {
+ speech(
+ l("I'm sorry but I'm here only to help young adventurers and the town residents."),
+ l("Your level is already higher than %d.", .heal_max_level),
+ l("You can get some rest at the inn near here."));
+ close;
+ }
+ speech(4,
+ l("Here, let me heal you."));
+
+ // Jesusalva: I don't trust npcskill()
+ npcskill(AL_HEAL, .heal_skill_level, .heal_npc_stats, .heal_npc_level);
+
+ speech(
+ l("There you go, like new."));
+ break;
+ case 2:
+ speech(
+ l("Then you should better see the doctor."),
+ l("He is usually in his office on the 3rd floor."));
+ break;
+ case 3:
+ bloodDonor();
+ break;
+ case 4:
+ speech(
+ l("Then I would ask you to leave."),
+ l("There are people who really need our help."));
+ break;
+ case 5:
+ speech(
+ l("I'm too busy here to observe the town."));
+ break;
+ }
+ close;
+
+function bloodDonor {
+ .@q2=getq2(HurnscaldQuests_BloodDonor);
+ .@q3=getq3(HurnscaldQuests_BloodDonor);
+ // Cheating??!
+ if (.@q2 > gettimetick(2))
+ kick(getcharid(3));
+ // Anyway, ML code comes here, adapted for TMW
+ mesc l("Donating blood will BLOCK YOUR MOVEMENT for three minutes.");
+ mesc l("Do not disconnect while waiting. You need 100% HP to donate.");
+ next;
+ // Always show Info if it is your first time donating blood
+ @menu = 1;
+ if (.@q3) {
+ select
+ l("Info"),
+ rif(readparam(Hp) == readparam(MaxHp), l("Yes, please use my blood to save lifes.")),
+ l("I changed my mind");
+ mes "";
+ }
+ if (@menu == 3)
+ return;
+ if (@menu == 1) {
+ mesn;
+ mesq l("Donating blood is a noble act, which allows to save lifes.");
+ next;
+ mesn;
+ mesq l("When people loses too much blood, they die, unless we can lend them somebody's else blood.");
+ next;
+ mesn;
+ mesq l("Not everyone can be a blood donor. For example, you must be healthy.");
+ mesq l("You can find more info about this on these links:");
+ mes "";
+ mes "[@@https://www.blood.co.uk/|https://www.blood.co.uk/@@]";
+ mes "[@@https://www.nhsbt.nhs.uk/what-we-do/blood-services/blood-donation/|https://www.nhsbt.nhs.uk/what-we-do/blood-services/blood-donation/@@]";
+ mes l("France: [@@https://dondesang.efs.sante.fr/|https://dondesang.efs.sante.fr/@@]");
+ mes l("Brazil: [@@http://www.prosangue.sp.gov.br/home/Default.html|http://www.prosangue.sp.gov.br/home/Default.html@@]");
+ if (readparam(Hp) < readparam(MaxHp))
+ return;
+ next;
+ mesc l("Donate blood?", 1);
+ if (askyesno() == ASK_NO)
+ return;
+ }
+ // Donate blood
+ mesn;
+ mesq l("This will take only a short while.");
+ next;
+ setq1 HurnscaldQuests_BloodDonor, 2;
+ percentheal -90, 0;
+ addtimer(180000, "Nurse::OnDonationComplete");
+ warp "008-2-14", 31, 27;
+ setpcblock(PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_MOVE, true);
+ dispbottom l("Any movement/skill/item will be without effect until time is up.");
+ closedialog;
+ return;
+}
+
+OnDonationComplete:
+ if (checkpcblock() & PCBLOCK_ATTACK)
+ setpcblock(PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_MOVE, false);
+ warp "008-2-12", 30, 30;
+ percentheal 100, 0;
+ // Experience gain is based on HP
+ getexp readparam(Hp)*2, readparam(Hp)/100;
+ .@q3=getq3(HurnscaldQuests_BloodDonor)+1;
+ // Cooldown: 60*60*24*30: 30 days
+ setq HurnscaldQuests_BloodDonor, 1, gettimetick(2)+(2592000), .@q3;
+ if (BaseLevel >= 30)
+ getitem Bread, 1;
+ if (BaseLevel >= 50)
+ getitem ChocolateBar, 1;
+ if (BaseLevel >= 70)
+ getitem BottleOfWater, 1;
+ mesn;
+ mesq l("Thanks for donating blood. You can donate again in 30 days.");
+ mesq l("You should eat and drink water after donating blood. Thanks for saving lifes!");
+ close;
+
+
+OnInit:
+ .heal_max_level = 20; // she will only heal low level players
+
+ .heal_skill_level = 10; // what level of the healing skill to use
+ .heal_npc_stats = 99; // what stat points the NPC has
+ .heal_npc_level = 60; // what level the npc has
+
+ .quest_inspector = HurnscaldQuests_Inspector;
+ .quest_debug = .quest_inspector;
+ .distance = 3;
+ end;
+}