summaryrefslogblamecommitdiff
path: root/npc/025-1/commander.txt
blob: 891c79d4299d3893dd54c8cb2d476db3f5a5db8b (plain) (tree)
1
2
3
4
5
6
7
8
9







                                                           
                                                                                                                                                                                
         

























                                                                                                                                 











                                                                                                

                                                                                 
                         





                                                                                                                                                         

                                         

                                            




                                                                                                                                                        

                                                                                                    




                                     
                                                                             

                                                                             





                        
                                                                                                                              











                                                    


                                                                                                                                                      
                                                                   











                                                    















                                                                                                                                       
         
                   


              
                                                        

          
          
                                                           

          
             
                                                            

          


                            
         
                                                                                                             




                                                            
                           






                                                            
                           







                                                            
                           







                                                            
                           









                                                         

                           




                                                                                                                 
     

           





















                                               
                                                                   


                                                                                




                                                                                                                                
                                                        
                                                     
                                                                        



                                                                                                                                          

     









                                                                                                                                     


           
// TMW2 scripts.
// Author:
//    Jesusalva
// Description:
//   Leads the Alliance in the Fortress Town

025-1,96,26,0	script	Commander Povo	NPC_BRGUARD_SPEAR,{
    mesn;
    mesq l("Greetings %s, I am %s, the man in charge for the Alliance occupation of Fortress Town.", (strcharinfo(0) == $MOST_HEROIC$ ? lg("Hero") : lg("Adventurer")), .name$);
    next;
    if (BARBARA_STATE == 2) {
        inventoryplace NPCEyes, 1;
        mesn;
        mesq l("Sir Pyndragon and Lady Lalica asked to thank thee for the situation with the thief.");
        next;
        mesn;
        mesq l("Therefore, please choose a permanent stat-boosting fruit.");
        next;
        menuint
            l("I'll decide later"), 0,
            l("Strength"), StrengthFruit,
            l("Agility"), AgilityFruit,
            l("Vitality"), VitalityFruit,
            l("Intelligence"), IntelligenceFruit,
            l("Dexterity"), DexterityFruit,
            l("Luck"), LuckFruit;
        mes "";
        if (@menuret) {
            getitembound @menuret, 1, 4;
            BARBARA_STATE += 10;
            getexp 0, 250;
            mesn;
            mesq l("Here you go. Please, keep fighting and growing strong. Improving oneself is... Damn, I forgot the proverb.");
            next;
        }
    }

    // Endtrail
    mes "";
    mesc l("@@ You need to wait further releases to continue this quest!", b(l("WARNING:"))), 1;
    close;

OnInit:
    .sex = G_MALE;
    .distance = 5;
    end;
}

/////////////////////////////////////////////////////////////////////////////////
025-1,59,86,0	script	Commander Cadis	NPC_BRGUARD_SWORD,{
    function cadisReward;
    mesn;
    mesq l("Greetings %s, I am %s, I am in charge of monster extermination.", (strcharinfo(0) == $MOST_HEROIC$ ? lg("Hero") : lg("Adventurer")), .name$);
    next;
    // Check for ongoing quests
    if (getq(FortressQuest_SlimeHunter) == 1)
        goto L_SlimeHunter;
    if (getq(FortressQuest_Over100) == 1)
        goto L_Over100;
    if (getq(FortressQuest_RangedHunt) == 1)
        goto L_RangedHunt;
    mesn;
    mesq l("I have extremely difficult quests for you; They are more painful than a Grand Hunter Quest, because I don't admit wimps fighting with me.");
    next;
    mesn;
    mesq l("You will be rewarded by me shall you succeed in any of the tasks.");
    mesc l("%s: Once accepted, you must complete them before taking another one.", b(l("WARNING")));
    // Well, we *could* make it more GHQ-like but lazy devs are lazy.
    next;
    do
    {
        select
            l("I'm not interested."),
            rif(!getq(FortressQuest_SlimeHunter), l("The Great Slime Hunt")),
            rif(!getq(FortressQuest_Over100), l("The Great Over 100 Hunt")),
            rif(!getq(FortressQuest_RangedHunt), l("The Great Ranged Hunt"));
        mes "";
        switch (@menu) {
        case 1:
            close;
        case 2:
            mesn;
            mesq l("You'll have to slay %s %s for me! I don't care which ones, just SLAY THEM!", fnum(.million), l("slimes"));
            next;
            select
                l("Accept"),
                l("Reject");
            mes "";
            if (@menu == 1) {
                setq1 FortressQuest_SlimeHunter, 1;
                mesn;
                mesq l("Then get to work already!");
                close;
            }
            break;
        case 3:
            mesn;
            mesq l("You'll have to slay %s %s for me! I don't care which ones, just SLAY THEM!", fnum(.million), l("monsters of at least level 100"));
            mesc l("Each monster will be counted as %d kills.", 2);
            next;
            select
                l("Accept"),
                l("Reject");
            mes "";
            if (@menu == 1) {
                setq1 FortressQuest_Over100, 1;
                mesn;
                mesq l("Then get to work already!");
                close;
            }
            break;
        case 4:
            mesn;
            mesq l("You'll have to slay %s %s for me! I don't care which ones, just SLAY THEM!", fnum(.million), l("ranged monsters"));
            mesc l("Minimum range: %d", 3);
            next;
            select
                l("Accept"),
                l("Reject");
            mes "";
            if (@menu == 1) {
                setq1 FortressQuest_RangedHunt, 1;
                mesn;
                mesq l("Then get to work already!");
                close;
            }
            break;
        }
    } while (true);
    close;

L_SlimeHunter:
    cadisReward(FortressQuest_SlimeHunter, l("Slimes"));
    close;

L_Over100:
    cadisReward(FortressQuest_Over100, l("over 100 mobs"));
    close;

L_RangedHunt:
    cadisReward(FortressQuest_RangedHunt, l("ranged mobs"));
    close;

function cadisReward {
    .@kill=getq2(getarg(0));
    .@rewa=getq3(getarg(0));
    mesn;
    mesq l("Thus far you've slain %s/%s %s for me!", fnum(.@kill), fnum(.million), b(getarg(1, "monsters")));
    inventoryplace NPCEyes, 4, Iten, 2;

    // ***** ***** *****   Rewards   ***** ***** *****
    if (.@kill >= .tier1 && .@rewa < 1) {
        mesc l("Milestone reached: %s kills", fnum(.tier1));
        setq3 getarg(0), 1;
        getitem MercenaryBoxsetDD, 3;
        getitem SacredImmortalityPotion, 2;
        getitem MercenaryBoxsetE, 1;
    }

    if (.@kill >= .tier2 && .@rewa < 2) {
        mesc l("Milestone reached: %s kills", fnum(.tier2));
        setq3 getarg(0), 2;
        getitem MercenaryBoxsetEE, 1;
        getitem MagicApple, 1;
        getitem EquipmentBlueprintE, 1;
        getitem IridiumOre, 2;
    }

    if (.@kill >= .tier3 && .@rewa < 3) {
        mesc l("Milestone reached: %s kills", fnum(.tier3));
        setq3 getarg(0), 3;
        getitem MercenaryBoxsetEE, 2;
        getitem StrangeCoin, 50;
        getitem EarthPowder, 2;
        getitem PlatinumOre, 1;
    }

    if (.@kill >= .tier4 && .@rewa < 4) {
        mesc l("Milestone reached: %s kills", fnum(.tier4));
        setq3 getarg(0), 4;
        getitem MercenaryBoxsetEE, 3;
        getitem ElixirOfLife, 5;
        getitem EarthPowder, 2;
        getitem PlatinumOre, 1;
    }


    // Quest complete
    if (.@kill >= .million) {
        mesc b(l("Quest complete: Congratulations!")), 3;
        setq1 getarg(0), 2;
        setq3 getarg(0), 5;
        getitem MercenaryBoxsetEE, 5;
        getitem StrangeCoin, 100;
        getitem EarthPowder, 3;
        getitem any(LuckFruit, DexterityFruit, IntelligenceFruit, VitalityFruit, AgilityFruit, StrengthFruit), 1;
        getitem MysteriousFruit, 1;
    }
    return;
}

OnInit:
    .sex = G_MALE;
    .distance = 5;
    .million = 1000000;

    .tier1 =  10000;
    .tier2 =  50000;
    .tier3 = 250000;
    .tier4 = 500000;
    end;
}

// Commander Cadis Questcheck
function	script	CadisQuestCheck	{
    if (!playerattached())
        return;

    .@mobId=getarg(0, killedrid);

    if (getq(FortressQuest_SlimeHunter) == 1) {
        // Register the kill
        if (compare("slime", strtolower(strmobinfo(1, .@mobId)))) {
            setq2 FortressQuest_SlimeHunter, getq2(FortressQuest_SlimeHunter)+1;
        // Report every 1000 kills
        if (getq2(FortressQuest_SlimeHunter) % 1000 == 0)
            dispbottom l("Cadis : You have slain %s %s out of a million.", fnum(getq2(FortressQuest_SlimeHunter)), l("slimes"));
        }
    }

    if (getq(FortressQuest_Over100) == 1) {
        // Register the kill as doubled (to make easier)
        if (getmonsterinfo(.@mobId, MOB_LV) >= 100) {
            setq2 FortressQuest_Over100, getq2(FortressQuest_Over100)+2;
        // Report every 1000 kills
        if (getq2(FortressQuest_Over100) % 1000 == 0)
            dispbottom l("Cadis : You have slain %s %s out of a million.", fnum(getq2(FortressQuest_SlimeHunter)), l("mobs over lv 100"));
        }
    }

    if (getq(FortressQuest_RangedHunt) == 1) {
        // Register the kill
        if (getmonsterinfo(.@mobId, MOB_RANGE) >= 3) {
            setq2 FortressQuest_RangedHunt, getq2(FortressQuest_RangedHunt)+1;
        // Report every 1000 kills
        if (getq2(FortressQuest_RangedHunt) % 1000 == 0)
            dispbottom l("Cadis : You have slain %s %s out of a million.", fnum(getq2(FortressQuest_SlimeHunter)), l("ranged mobs"));
        }
    }

    return;
}