diff options
Diffstat (limited to 'npc/015-8-1/campaign.txt')
-rw-r--r-- | npc/015-8-1/campaign.txt | 83 |
1 files changed, 71 insertions, 12 deletions
diff --git a/npc/015-8-1/campaign.txt b/npc/015-8-1/campaign.txt index 96a943782..352432db7 100644 --- a/npc/015-8-1/campaign.txt +++ b/npc/015-8-1/campaign.txt @@ -14,37 +14,96 @@ // There is no instance init OnBegin: .@m$=getmap(); - .@in=getq2(HurnscaldQuest_Sagratha); + .@n$=instance_npcname(.name$); + //.@in=getq2(HurnscaldQuest_Sagratha); //debugmes "Initialized - Inst ID %d", .@in; //debugmes "Map %s.gat - NPC Name %s", .@m$, .name$; //debugmes "NPC UUID %s (%s)", instance_npcname(.name$), instance_npcname(.name$, .@in); + setpcblock(PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_COMMANDS|PCBLOCK_SITSTAND|PCBLOCK_IMMUNE|PCBLOCK_CHAT|PCBLOCK_MOVE, true); // Same as 255 setq3 HurnscaldQuest_Sagratha, 1; // We're in an instance, ofc. Here we still have player attached. //npctalk3 l("Open your eyes!"); //npctalk("Sagratha: Open your eyes!", instance_npcname(.name$, .@in), false); //npctalk("Sagratha: Open your eyes!"); - mapannounce(.@m$, l("Sagratha: Open your eyes!"), 0); - .SAGRATHA=monster(.@m$, 52, 40, "Sagratha", Sagratha, 1, instance_npcname(.name$, .@in)+"::OnError", Size_Medium, 2); + //mapannounce(.@m$, l("Sagratha: Open your eyes!"), 0); - unittalk(.SAGRATHA, l("Open your eyes!")); + .SAGRATHA=monster(.@m$, 52, 40, "Sagratha", Sagratha, 1, .@n$+"::OnSagrathaDie", Size_Medium, 2); + .BOSS=monster(.@m$, 52, 40, l("Masked Assassin"), HoodedAssassin, 1, .@n$+"::OnSagrathaWin"); - monster .@m$, 49, 45, "Real Monster", RedSlime, 1; - // max AI id 4. You are in 49,39 - monster .@m$, 49, 41, "AI Tx", RedSlime, 1, instance_npcname(.name$)+"::OnError", Size_Medium, 2; - monster .@m$, 51, 41, "AI Xt", RedSlime, 1, instance_npcname(.name$)+"::OnError", Size_Medium, 2; + unitstop(.SAGRATHA); + unitstop(.BOSS); - addtimer(5000, instance_npcname(.name$)+"::OnError"); + unittalk(.SAGRATHA, l("What are you doing here, @@!", get_race())); + + addtimer(1000, .@n$+"::OnS02"); + end; + +OnS02: + .@m$=getmap(); + .@n$=instance_npcname(.name$); + + unitstop(.SAGRATHA); + unitstop(.BOSS); + + unittalk(.SAGRATHA, l("I don't need help!")); + unittalk(.BOSS, l("Die already!")); + + addtimer(1500, .@n$+"::OnS03"); + end; + +OnS03: + .@m$=getmap(); + .@n$=instance_npcname(.name$); + + unitstop(.SAGRATHA); + unitstop(.BOSS); + + unittalk(.SAGRATHA, l("If you don't want to die, fight!")); + unittalk(.BOSS, lg("Murder her too!", "Murder him too!")); + + addtimer(1500, .@n$+"::OnS04"); + end; + +OnS04: + .@m$=getmap(); + .@n$=instance_npcname(.name$); + + // Assassin's Army + areamonster .@m$, 44, 40, 55, 50, strmobinfo(1, HoodedNinja), HoodedNinja, 4; + areamonster .@m$, 44, 40, 55, 50, strmobinfo(1, Assassin), Assassin, 7; + + // Sagratha's Army + areamonster .@m$, 44, 40, 55, 50, strmobinfo(1, Mouboo), Mouboo, 2, .@n$+"::OnError", Size_Medium, 2; + areamonster .@m$, 44, 40, 55, 50, strmobinfo(1, ForestMushroom), ForestMushroom, 2, .@n$+"::OnError", Size_Medium, 2; + + // Heal them because you should not be fighting (yet). + setunitdata(.BOSS, UDT_HP, getunitdata(.BOSS, UDT_MAXHP)); + setunitdata(.SAGRATHA, UDT_HP, getunitdata(.SAGRATHA, UDT_MAXHP)); + + // Objective announce + mapannounce(.@m$, "##2"+l("Victory Conditions: Defeat the assassin!"), 0); + mapannounce(.@m$, "##1"+l("Defeat Conditions: Sagratha gets killed!"), 0); + + // Status cleanup + setpcblock(PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_COMMANDS|PCBLOCK_SITSTAND|PCBLOCK_IMMUNE|PCBLOCK_CHAT|PCBLOCK_MOVE, false); end; // Assassin, HoodedNinja, HoodedAssassin (boss) // Mouboo, ForestMushroom, Fluffy, Sagratha (boss) +OnSagrathaDie: + npctalk "Defeat"; + end; + +OnSagrathaWin: + npctalk "Victory"; + end; OnError: - unittalk(.SAGRATHA, l("Watch out!")); - debugmes "Error"; - npctalk "Error"; + //unittalk(.SAGRATHA, l("Watch out!")); + //debugmes "Error"; + //npctalk "Error"; end; OnInit: |