summaryrefslogblamecommitdiff
path: root/npc/009-1/guards.txt
blob: e0c4f8573eee5a9f135f78b6472a2a175deeaf6e (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
















                                                                                             

























                                                                                                      











































































































































































































































                                                                                                                            
// TMW2 scripts.
// Authors:
//    Jesusalva
// Description:
//    Protect Halinarzo

009-1,71,24,0	script	Lieutenant Jacob	NPC_PLAYER,{
    // The Monster King guild have a special menu
    if (strcharinfo(2) == "Monster King") goto L_MKControl;
    mesn;
    mesq l("Sorry, the path to Hurnscald has been locked due to monsters.");
    next;
    mesn;
    mesq l("Andrei Sakar is on the other side of this gate, killing monsters, as we speak.");
    next;
    mesn;
    mesq l("The path will be open when it's safe again for heavily armed travellers.");
    if (GHQUEST) goto L_Assign;
    close;

L_Assign:
    next;
    //mesq l("Current Quest Progress: @@/10,000 kills", getq2(General_Hunter));
    mesn;
    mes l("I represent the Halinarzo Hunters. We hunt Snakes.");
    mes l("The great prize is @@ GP. It can be claimed with Aidan, on Tulimshar.", "250,000");
    if (getq(General_Hunter)) mes l("You are already hunting something else. Do you want to switch?");
    select
        l("I'm not interested."),
        rif(GHMEMO[2] < 10000,l("I'll hunt 10,000 snakes."));

    switch (@menu) {
    case 2:
        GHMEMO[getq(General_Hunter)]=getq2(General_Hunter);
        setq(General_Hunter, 2, GHMEMO[2]);
        mesn;
        mesq l("Good luck! Don't come back until you reach 10000 kills!");
        close;
        break;
    default:
        close;
    }

    close;

L_MKControl:
    mesn;
    mes l("Oh noes! You've found the Halinarzo control panel!");
    menu
        l("Initiate small siege (lv. 20)"), L_MKSmall,
        l("Initiate medium siege (lv. 30)"), L_MKMedium,
        l("Initiate huge siege (lv. 40)"), L_MKHuge,
        l("Abort"), -;
    close;

L_MKSmall:
    changemusic "009-1", "mythica.ogg";
    disablenpc("Mana Stone");
    $@SIEGE_HALI=0; // factor zero
    pvpon("009-1");
    pvpon("010-2");
    announce(l("##1WARNING! WARNING! Siege starting at Halinarzo!!"), bc_all);
    areamonster("010-2", 0, 0, 79, 81, l("Black Scorpion"), 1074, 15, "Lieutenant Jacob::OnBlackScorpionDeath");
    initnpctimer;
    close;

L_MKMedium:
    changemusic "009-1", "eric matyas - ghoulish fun.ogg";
    disablenpc("Mana Stone");
    $@SIEGE_HALI=1; // factor one
    pvpon("009-1");
    pvpon("010-2");
    announce(l("##1WARNING! WARNING! Siege starting at Halinarzo!!"), bc_all);
    areamonster("010-2", 0, 0, 79, 81, l("Black Scorpion"), 1074, 25, "Lieutenant Jacob::OnBlackScorpionDeath");
    initnpctimer;
    close;

L_MKHuge:
    changemusic "009-1", "misuse.ogg";
    disablenpc("Mana Stone");
    $@SIEGE_HALI=5; // factor five
    pvpon("009-1");
    pvpon("010-2");
    announce(l("##1WARNING! WARNING! Siege starting at Halinarzo!!"), bc_all);
    areamonster("010-2", 0, 0, 79, 81, l("Black Scorpion"), 1074, 40, "Lieutenant Jacob::OnBlackScorpionDeath");
    initnpctimer;
    close;

OnBlackScorpionDeath:
    areamonster("010-2", 0, 0, 79, 81, l("Black Scorpion"), 1074, 1, "Lieutenant Jacob::OnBlackScorpionDeath");
    if (rand(10000) <= 90+($@SIEGE_HALI*10))
        getitem StrangeCoin, 1;
    end;

OnBlackScorpion2Death:
    areamonster("009-1", 0, 0, 120, 155, l("Black Scorpion"), 1074, 1, "Lieutenant Jacob::OnBlackScorpion2Death");
    if (rand(10000) <= 850+($@SIEGE_HALI*100))
        getitem StrangeCoin, 1;
    end;

OnGreenSlimeDeath:
    areamonster("009-1", 0, 0, 120, 155, l("Green Slime"), 1085, 1, "Lieutenant Jacob::OnGreenSlimeDeath");
    if (rand(10000) <= 200+($@SIEGE_HALI*100))
        getitem StrangeCoin, 1;
    end;

OnCandiedSlimeDeath:
    areamonster("009-1", 0, 0, 120, 155, l("Candied Slime"), 1089, 1, "Lieutenant Jacob::OnCandiedSlimeDeath");
    if (rand(10000) <= 150+($@SIEGE_HALI*100))
        getitem StrangeCoin, 1;
    end;

OnManaGhostDeath:
    areamonster("009-1", 0, 0, 120, 155, l("Mana Ghost"), 1068, 1, "Lieutenant Jacob::OnManaGhostDeath");
    if (rand(10000) <= 900+($@SIEGE_HALI*100))
        getitem StrangeCoin, 1;
    end;

OnLieutenantDeath:
    getitem StrangeCoin, 1;
    Karma=Karma+1;
    mapannounce("009-1", l("##2The Monster Lieutenant was defeated by @@!", strcharinfo(0)), bc_map);
    end;

OnColonelDeath:
    getitem StrangeCoin, 1;
    Karma=Karma+1;
    $MOST_HEROIC$=strcharinfo(0);
    mapannounce("009-1", l("##2The Monster Colonel was defeated by @@!", strcharinfo(0)), bc_map);
    end;

OnTimer5000:
    areamonster("010-2", 0, 0, 79, 81, "Black Scorpion", 1074, 5+$@SIEGE_HALI, "Lieutenant Jacob::OnBlackScorpionDeath");
    areamonster("009-1", 0, 0, 120, 155, "Black Scorpion", 1074, 5+$@SIEGE_HALI, "Lieutenant Jacob::OnBlackScorpion2Death");
    mapannounce("009-1", "##2Message to all Halinarzo NPCs: Take shelter!", bc_map);
    disablenpc "Lynn The Traveler";
    end;

OnTimer15000:
    areamonster("010-2", 0, 0, 79, 81, ("Black Scorpion"), 1074, 5, "Lieutenant Jacob::OnBlackScorpionDeath");
    areamonster("009-1", 0, 0, 120, 155, ("Black Scorpion"), 1074, 10, "Lieutenant Jacob::OnBlackScorpion2Death");
    end;

OnTimer60000:
    if ($@SIEGE_HALI == 1) {
        mapannounce("009-1", "##1The Monster Lieutenant arrived!", bc_map);
        areamonster("009-1", 0, 0, 120, 155, ("Monster Lieutenant"), 1077, 1, "Lieutenant Jacob::OnLieutenantDeath");
    }
    areamonster("009-1", 0, 0, 120, 155, ("Black Scorpion"), 1074, 3, "Lieutenant Jacob::OnBlackScorpion2Death");
    areamonster("009-1", 0, 0, 120, 155, ("Green Slime"), 1085, 10+$@SIEGE_HALI, "Lieutenant Jacob::OnGreenSlimeDeath");
    areamonster("009-1", 0, 0, 120, 155, ("Candied Slime"), 1089, 1+$@SIEGE_HALI, "Lieutenant Jacob::OnCandiedSlimeDeath");
    end;

OnTimer120000:
    if ($@SIEGE_HALI == 5) {
        mapannounce("009-1", "##1The Monster Colonel arrived!", bc_map);
        areamonster("009-1", 0, 0, 120, 155, ("Monster Colonel"), 1036, 1, "Lieutenant Jacob::OnColonelDeath");
    }
    areamonster("009-1", 0, 0, 120, 155, ("Slime Blast"), 1090, 15);
    areamonster("009-1", 0, 0, 120, 155, ("Black Scorpion"), 1074, 1, "Lieutenant Jacob::OnBlackScorpion2Death");
    areamonster("009-1", 0, 0, 120, 155, ("Green Slime"), 1085, 10, "Lieutenant Jacob::OnGreenSlimeDeath");
    areamonster("009-1", 0, 0, 120, 155, ("Mana Ghost"), 1068, 2, "Lieutenant Jacob::OnManaGhostDeath");
    end;

OnTimer180000:
    areamonster("009-1", 0, 0, 120, 155, ("Slime Blast"), 1090, 25);
    areamonster("009-1", 0, 0, 120, 155, ("Black Scorpion"), 1074, 1, "Lieutenant Jacob::OnBlackScorpion2Death");
    areamonster("009-1", 0, 0, 120, 155, ("Candied Slime"), 1089, 10, "Lieutenant Jacob::OnCandiedSlimeDeath");
    areamonster("009-1", 0, 0, 120, 155, ("Mana Ghost"), 1068, 2, "Lieutenant Jacob::OnManaGhostDeath");
    end;

OnTimer240000:
    areamonster("009-1", 0, 0, 120, 155, ("Slime Blast"), 1090, 25);
    areamonster("009-1", 0, 0, 120, 155, ("Black Scorpion"), 1074, 1, "Lieutenant Jacob::OnBlackScorpion2Death");
    areamonster("009-1", 0, 0, 120, 155, ("Mana Ghost"), 1068, 2, "Lieutenant Jacob::OnManaGhostDeath");
    end;

OnTimer300000:
    areamonster("009-1", 0, 0, 120, 155, ("Slime Blast"), 1090, 5);
    areamonster("009-1", 0, 0, 120, 155, ("Candied Slime"), 1089, 1, "Lieutenant Jacob::OnCandiedSlimeDeath");
    areamonster("009-1", 0, 0, 120, 155, ("Mana Ghost"), 1068, 1, "Lieutenant Jacob::OnManaGhostDeath");
    end;

OnTimer360000:
OnTimer420000:
OnTimer480000:
    areamonster("009-1", 0, 0, 120, 155, ("Slime Blast"), 1090, 5+$@SIEGE_HALI);
    areamonster("009-1", 0, 0, 120, 155, ("Red Slime"), 1092, 1+$@SIEGE_HALI);
    end;

OnTimer540000:
    mapannounce("009-1", "##1The Monster Army is getting tired of resistance!", bc_map);
    areamonster("009-1", 0, 0, 120, 155, ("Slime Blast"), 1090, 5+$@SIEGE_HALI);
    areamonster("009-1", 0, 0, 120, 155, ("Mana Ghost"), 1068, 1, "Lieutenant Jacob::OnManaGhostDeath");
    end;

OnTimer600000:
    mapannounce("009-1", "##1The Monster King army is preparing to withdraw!", bc_map);
    end;

OnTimer630000:
    changemusic "009-1", "dragon_and_toast.ogg"; // Restore to default
    enablenpc("Mana Stone");
    $@SIEGE_HALI$=0;
    killmonsterall("009-1", 0);
    killmonsterall("010-2", 0);
    pvpoff("009-1");
    announce(("Halinarzo siege is over!"), bc_all);
    enablenpc "Lynn The Traveler";
    stopnpctimer;
    end;

OnInit:
    .sex = G_MALE;
    .distance = 4;

    // Check items.xml for info about this.
    // NOTE: Why Dausen item list is on Philip...?
    .@npcId = getnpcid(0, "Lieutenant Jacob");
    setunitdata(.@npcId, UDT_HEADTOP, Bull);
    setunitdata(.@npcId, UDT_HEADMIDDLE, LegionTrainingShirt);
    setunitdata(.@npcId, UDT_HEADBOTTOM, RaidTrousers);
    setunitdata(.@npcId, UDT_SHIELD, LousyMoccasins);    // TODO FIXME: Display Boots
    setunitdata(.@npcId, UDT_WEAPON, ArtisBacksword);
    setunitdata(.@npcId, UDT_HAIRSTYLE, 12);
    setunitdata(.@npcId, UDT_HAIRCOLOR, 15);

    end;
}

// Handle Guard's logic
function	script	HaliGuardHandler	{
    legiontalk;

    return;
}

009-1,100,30,0	script	Guard Corina	NPC_GUARD2,{
    HaliGuardHandler();
    end;

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


009-1,111,48,0	script	Guard Jhon	NPC_GUARD1,{
    HaliGuardHandler();
    end;

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

009-1,41,56,0	script	Guard Laurie	NPC_GUARD2,{
    HaliGuardHandler();
    end;

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


009-1,62,74,0	script	Guard Amy	NPC_GUARD2,{
    HaliGuardHandler();
    end;

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