summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2018-12-14 16:44:55 -0200
committerJesusaves <cpntb1@ymail.com>2018-12-14 16:44:55 -0200
commitc31da02d5c1803a1d285767110c20e7555e60de5 (patch)
tree6d85d371a53df6595b7a8df549e06667b3eee6c0 /npc
parent410ac49a8424199af541a9cd262cc2e06b830fb2 (diff)
downloadserverdata-c31da02d5c1803a1d285767110c20e7555e60de5.tar.gz
serverdata-c31da02d5c1803a1d285767110c20e7555e60de5.tar.bz2
serverdata-c31da02d5c1803a1d285767110c20e7555e60de5.tar.xz
serverdata-c31da02d5c1803a1d285767110c20e7555e60de5.zip
Blood Donor quest.
Diffstat (limited to 'npc')
-rw-r--r--npc/001-8/hub.txt8
-rw-r--r--npc/012-6/nurse.txt73
2 files changed, 80 insertions, 1 deletions
diff --git a/npc/001-8/hub.txt b/npc/001-8/hub.txt
index a0dd07303..145723e1c 100644
--- a/npc/001-8/hub.txt
+++ b/npc/001-8/hub.txt
@@ -379,6 +379,7 @@ OnPCLogoutEvent:
}
// TODO: Checks which doesn't belong here shouldn't be here!
+ // Died on Terranite Cave where exp penalty is lower
if (.@mapa$ == "015-6" && @qhub_died) {
if (readparam(BaseExp) < readparam(BaseExp)*2/100)
end;
@@ -386,6 +387,7 @@ OnPCLogoutEvent:
getexp readparam(BaseExp)*2/100, 0;
warp "Save", 0, 0;
}
+ // Vanished on Cindy Cave
if (.@mapa$ == "021-4" && strcharinfo(0) == $@CINDY_HERO$) {
recovery(getcharid(3));
warp any("010-1", "010-2"), 0, 0;
@@ -398,6 +400,12 @@ OnPCLogoutEvent:
recovery(getcharid(3));
warp "Save", 0, 0;
}
+ // Logout while donating blood
+ if (getq(HurnscaldQuest_BloodDonor) == 2) {
+ slide 35, 28;
+ setpcblock(PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_ITEM|PCBLOCK_MOVE, false);
+ setq HurnscaldQuest_BloodDonor, 0, gettimetick(2)+3600; // one hour penalty
+ }
@qhub_victor=0;
@qhub_died=0;
diff --git a/npc/012-6/nurse.txt b/npc/012-6/nurse.txt
index a818325d7..80d442856 100644
--- a/npc/012-6/nurse.txt
+++ b/npc/012-6/nurse.txt
@@ -2,9 +2,80 @@
// Author:
// Jesusalva
// Crazyfefe
+// Notes:
+// HurnscaldQuest_BloodDonor
+// 1 - Donation finished
+// 2 - Donation in progress
+// Structure
+// Status, Next Attempt Timer
012-6,56,67,6 script Hurnscald's Nurse NPC_FEMALE,{
- Nurse(.name$, 10, 6);
+ .@q2=getq2(HurnscaldQuest_BloodDonor);
+ if (.@q2 > gettimetick(2)) {
+ Nurse(.name$, 10, 6);
+ close;
+ }
+ mesn;
+ mesq l("Hello there. Do you want to donate blood?");
+ mesc l("Donating blood will BLOCK YOUR MOVEMENT for three minutes.");
+ mesc l("Do not disconnect while waiting. You need 100% HP to donate.");
+
+L_BLCore;
+ mes "";
+ select
+ l("I need infirmary services."),
+ l("Info"),
+ rif(readparam(Hp) == readparam(MaxHp), l("Yes, please use my blood to save lifes."));
+ mes "";
+ switch (@menu) {
+ case 1:
+ Nurse(.name$, 10, 6);
+ close;
+ case 2:
+ 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 think 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@@]");
+ next;
+ goto L_BLCore;
+ case 3:
+ mesn;
+ mesq l("Please don't sound like I was some sort of vampire or something...");
+ next;
+ mesn;
+ mesq l("This will take only a short while.");
+ next;
+ setq1 HurnscaldQuest_BloodDonor, 2;
+ percentheal -90, 0;
+ addtimer(180000, "Hurnscald's Nurse::OnDonationComplete");
+ slide 34, 29;
+ setpcblock(PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_ITEM|PCBLOCK_MOVE, true);
+ dispbottom l("Any movement/skill/item will be without effect until time is up.");
+ closedialog;
+ close;
+ }
+
+ close;
+
+OnDonationComplete:
+ if (checkpcblock() & PCBLOCK_ATTACK)
+ setpcblock(PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_ITEM|PCBLOCK_MOVE, false);
+ slide 58, 67;
+ percentheal 100, 0;
+ getexp readparam(Hp)*2, readparam(Hp)/100;
+ setq HurnscaldQuest_BloodDonor, 1, gettimetick(2)+(2592000); // 60*60*24*30
+ mesn;
+ mesq l("Thanks for donating blood. You can donate again in 30 days.");
close;
OnInit: