summaryrefslogblamecommitdiff
path: root/npc/003-10/kreist.txt
blob: 9daea55c611dfc6862f951d6d61c5c8231df1ec4 (plain) (tree)
1
2
3
4
5
6
7
8
9






                                            
                                         
                                 
                                                               

                                 
                                                                                                                                            
         
                                                                                                     


                                                                                      











                                            
                   












                                            
                    









                                                       
                        
                                                                           
                               
                                                                                      
                                
                                                                       


                                                                                        
                                

     






                                                                                 
                                    
                               
                                     
                                                                                                                   
             




                                                 
                                     

                                                                                                        
                                             
                                              
                                                                      
                                               
                     
                     



                                            


              
                                 

























                                                                                                                                                                             



















                                                                                     













                                                         
                                                                                         







                                                
                                                                                         







                                                
                                                                                         

     





                                                
                                                                                         

     






                                                
                                                                                         







                                                
                                                                                         







                                                
                                                                                         










                                                               


           
// TMW2 Scripts
// Author:
//    Jesusalva
// Description:
//    Tulimshar Guardhouse Taskmaster

003-10,41,63,0	script	Kreist	NPC_PLAYER,{
    .@d=gettimeparam(GETTIME_DAYOFMONTH);
    mesn l("Kreist, Taskmaster");
    mesq l("Hello, and welcome to the Tulimshar guard house.");
    next;
    mesn l("Kreist, Taskmaster");
    mesq l("My name is @@ and I am the daily task master. Interested in keeping this world free from monsters, or to report back?", .name$);
    next;
    mesc l("All quests expire at 00:00 server time, be sure to finish AND report back before that!");
    // Borrowed from Arkim Code
    mesc l("Time remaining to report completion: ")+FuzzyTime($@ARKIM_TIMER+86400), 1;

    select
        l("I want a EASY task!"),
        l("I want a MODERATE task!"),
        l("I want a EXPERT task!"),
        l("It was nice seeing you.");
    mes "";
    switch (@menu) {
        case 1:
            .@q1=getq(General_MobHunting1);
            .@q2=getq2(General_MobHunting1);
            .@q3=getq3(General_MobHunting1);
            .@q=General_MobHunting1;
            .@lv=3;
            goto L_QuestMaster;
        case 2:
            .@q1=getq(General_MobHunting2);
            .@q2=getq2(General_MobHunting2);
            .@q3=getq3(General_MobHunting2);
            .@q=General_MobHunting2;
            .@lv=5;
            goto L_QuestMaster;
        case 3:
            .@q1=getq(General_MobHunting3);
            .@q2=getq2(General_MobHunting3);
            .@q3=getq3(General_MobHunting3);
            .@q=General_MobHunting3;
            .@lv=12;
            goto L_QuestMaster;
    }
    closeclientdialog;
    goodbye();
    close;

L_QuestMaster:
    // It's a new day, so we must generate a new quest!
    if (.@q1 != .@d) {
        .@q1=.@d;
        if (.@lv == 3) {
            .@q2=any(Maggot, Scorpion, Croc, FireGoblin, CaveMaggot, Duck);
        } else if (.@lv == 5) {
            .@q2=any(CaveSnake, DesertBandit, Sarracenus, DesertLogHead, RedScorpion);
        } else if (.@lv == 12) {
            .@q2=any(GiantMaggot, BlackScorpion, Snake, MountainSnake);
        } else {
            Exception("Bad setting for GMH.LV: "+.@lv, RB_DEFAULT|RB_SPEECH|RB_ISFATAL);
        }
        setq .@q, .@q1, .@q2, 0;
    }

    // Maybe there is no monster to kill
    if (!.@q2) {
        mesn l("Kreist, Taskmaster");
        mesq l("You've already completed this quest today. Try again tomorrow.");
        close;
    }

    // Maybe you finished the quest?
    if (.@q3 >= .@killamount) {
        mesn l("Kreist, Taskmaster");
        mesq l("Good job, you've killed the @@ @@ and reported back in time!", .@killamount, getmonsterlink(.@q2));
        next;
        inventoryplace MercBoxA, 1;
        if (MERCENARY_DAILYQUEST == 100) {
            inventoryplace BountyHunterHelmet, 1;
            getitem BountyHunterHelmet, 1;
        }
        mesn l("Kreist, Taskmaster");
        mesq l("It's not much of a reward, but doesn't it feel great to help others in need?! HAHAHA!");
        .@overkill=.@q3-.@killamount;
        Zeny+=.@lv*(72+MERCENARY_DAILYQUEST);
        // Raise LV according to monster level
        .@lv+=getmonsterinfo(.@q2, MOB_LV)+MERCENARY_DAILYQUEST*11/10;
        getexp BaseLevel*.@lv, .@lv+.@overkill;
        setq2 .@q, 0;
        setq3 .@q, 0;
        MERCENARY_DAILYQUEST+=1;
        if (MERCENARY_DAILYQUEST % 5 == 0) {
            getitem MercBoxA, 1;
        }
        close;
    }

    mesn l("Kreist, Taskmaster");
    .@killamount=40
    // Explanation why the city needs that
    // FIXME: plural
    if (.@q2 == "Maggot" ) {
      mesq l("@@ have infested the store houses, spilling onto the streets. Stop them from destroying even more food.", getmonsterlink(.@q2));
      .@killamount=30
    } else if (.@q2 == "GiantMaggot") {
      mesq l("The @@ are the cause for all the little maggots to appear, so we need you to stop the problem at the source.", getmonsterlink(.@q2));
      .@killamount=10
    } else if (.@q2 == "Duck") {
      mesq l("This request was made by the cafe: The @@ are stealing their cherry cakes, causing disruption to their business.", getmonsterlink(.@q2));
      .@killamount=15
    } else if (.@q2 == "Croc") {
      mesq l("The @@ have been reproducing rapidly and their natural habitat, our Croconut trees, are being damaged by the excessive number of them.", getmonsterlink(.@q2));
      .@killamount=15
    } else if (.@q2 == "CaveMaggot") {
      mesq l("The @@ have been multiplying, crawling from the cave into the magic school, causing damage.", getmonsterlink(.@q2));
      .@killamount=15
    } else if (.@q2 == "Scorpion") {
      mesq l("All the @@ have become a real nuisance to the citizens and people are getting stung more often now.", getmonsterlink(.@q2));
      .@killamount=20
    } else if (.@q2 == "DesertLogHead") {
      mesq l("The @@ are growing and disturbing the already rather infertile desert soil, preventing our crops from growing.", getmonsterlink(.@q2));
      .@killamount=15
    }
    mesq l("So, please kill @@/@@ @@ for us and make the city a safer place!", .@q3, .@killamount, getmonsterlink(.@q2));
    close;

OnInit:
    // Check items.xml for info about this.
    .@npcId = getnpcid(.name$);
    setunitdata(.@npcId, UDT_HEADTOP, WarlordHelmet);
    setunitdata(.@npcId, UDT_HEADMIDDLE, LieutenantArmor);
    setunitdata(.@npcId, UDT_HEADBOTTOM, RaidTrousers);
    setunitdata(.@npcId, UDT_SHIELD, LousyMoccasins);    // TODO FIXME: Display Boots
    setunitdata(.@npcId, UDT_WEAPON, Backsword);
    setunitdata(.@npcId, UDT_HAIRSTYLE, 7);
    setunitdata(.@npcId, UDT_HAIRCOLOR, 15);

    npcsit;
    .sex = G_MALE;
    .distance = 4;
    end;

}

// What is with this stupidly long quest name?
function	script	Guardhouse_RandQuestCheck	{
    if (!playerattached())
        return;

    .@mobId=getarg(0, killedrid);
    .@d=gettimeparam(GETTIME_DAYOFMONTH);

    // Easy Task
    if (getq(General_MobHunting1) == .@d &&
        getq2(General_MobHunting1) == .@mobId) {
        .@q3=getq3(General_MobHunting1)+1;
        setq3 General_MobHunting1, .@q3;
        if (!(.@q3 % 10))
            dispbottom l("@@/@@ @@ killed", .@q3, .@killamount, getmonsterlink(.@mobId));
    }

    // Medium Task
    if (getq(General_MobHunting2) == .@d &&
        getq2(General_MobHunting2) == .@mobId) {
        .@q3=getq3(General_MobHunting2)+1;
        setq3 General_MobHunting2, .@q3;
        if (!(.@q3 % 10))
            dispbottom l("@@/@@ @@ killed", .@q3, .@killamount, getmonsterlink(.@mobId));
    }

    // Hard Task
    if (getq(General_MobHunting3) == .@d &&
        getq2(General_MobHunting3) == .@mobId) {
        .@q3=getq3(General_MobHunting3)+1;
        setq3 General_MobHunting3, .@q3;
        if (!(.@q3 % 10))
            dispbottom l("@@/@@ @@ killed", .@q3, .@killamount, getmonsterlink(.@mobId));
    }

    // Frostia's Task
    if (getq(General_MobHunting4) == .@d &&
        getq2(General_MobHunting4) == .@mobId) {
        .@q3=getq3(General_MobHunting4)+1;
        setq3 General_MobHunting4, .@q3;
        if (!(.@q3 % 10))
            dispbottom l("@@/@@ @@ killed", .@q3, .@killamount, getmonsterlink(.@mobId));
    }


    // Frostia - Medium Task
    if (getq(General_MobHunting5) == .@d &&
        getq2(General_MobHunting5) == .@mobId) {
        .@q3=getq3(General_MobHunting5)+1;
        setq3 General_MobHunting5, .@q3;
        if (!(.@q3 % 10))
            dispbottom l("@@/@@ @@ killed", .@q3, .@killamount, getmonsterlink(.@mobId));
    }

    // Frostia - Hard Task
    if (getq(General_MobHunting6) == .@d &&
        getq2(General_MobHunting6) == .@mobId) {
        .@q3=getq3(General_MobHunting6)+1;
        setq3 General_MobHunting6, .@q3;
        if (!(.@q3 % 10))
            dispbottom l("@@/@@ @@ killed", .@q3, .@killamount, getmonsterlink(.@mobId));
    }

    // Frostia - Nightmare Task
    if (getq(General_MobHunting7) == .@d &&
        getq2(General_MobHunting7) == .@mobId) {
        .@q3=getq3(General_MobHunting7)+1;
        setq3 General_MobHunting7, .@q3;
        if (!(.@q3 % 10))
            dispbottom l("@@/@@ @@ killed", .@q3, .@killamount, getmonsterlink(.@mobId));
    }

    // Frostia - Boss Task
    if (getq(General_MobHunting8) == .@d &&
        getq2(General_MobHunting8) == .@mobId) {
        if (!.@q3)
            dispbottom l("%s slain!", getmonsterlink(.@mobId));
        .@q3=getq3(General_MobHunting8)+1;
        setq3 General_MobHunting8, .@q3;
    }

    return;
}