summaryrefslogtreecommitdiff
path: root/npc/015-8-1/campaign.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/015-8-1/campaign.txt')
-rw-r--r--npc/015-8-1/campaign.txt83
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: