summaryrefslogblamecommitdiff
path: root/npc/008-2-12/nurse.txt
blob: 2da8d1d34f21e4e589479afda3618fe8b817809a (plain) (tree)
1
2
3
4

                
          
                                             




















                                                     
               
                                              
 
                                                          

                                           
 


                                  




                                                                                  
                                                                       








                                                                                            
                                                                                                   






                                                                            
                                              



                                                                               
              



                                                                
              
           


                     


                                                             

              

                                                         
              
     
          
 












































































                                                                                                                                                          
 

       







                                                                     
                       
                  

        
// 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;
    .sex = GENDER_MALE;
    .distance = 3;
    end;
}