summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--npc/019-2/guards.txt7
-rw-r--r--npc/020-1/_import.txt1
-rw-r--r--npc/020-1/siege.txt104
3 files changed, 111 insertions, 1 deletions
diff --git a/npc/019-2/guards.txt b/npc/019-2/guards.txt
index d0fac5e3a..3eec57035 100644
--- a/npc/019-2/guards.txt
+++ b/npc/019-2/guards.txt
@@ -50,10 +50,15 @@
L_Noob:
mesn;
mesq l("Hey, you! We need help to get rid from some remaining monsters at Nivalis City.");
+ mesq l("No need to kill the Fluffies, though.");
next;
mesn;
mesq l("Are you up for the challenge?");
-
+ if (askyesno() == ASK_YES) {
+ @nlib_wave=0;
+ @nlib_time=0;
+ addtimer(5000, "#NLib_Siege::OnLoop");
+ }
close;
L_Veteran:
diff --git a/npc/020-1/_import.txt b/npc/020-1/_import.txt
index 3f90e1260..4e95fbf32 100644
--- a/npc/020-1/_import.txt
+++ b/npc/020-1/_import.txt
@@ -1,3 +1,4 @@
// Map 020-1: Nivalis
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/020-1/_mobs.txt",
+"npc/020-1/siege.txt",
diff --git a/npc/020-1/siege.txt b/npc/020-1/siege.txt
new file mode 100644
index 000000000..40dcd1e78
--- /dev/null
+++ b/npc/020-1/siege.txt
@@ -0,0 +1,104 @@
+// TMW2 scripts.
+// Authors:
+// Jesusalva
+// Description:
+// Nivalis Siege for Liberation Day
+// Each player process its own share of monsters. There are 10 waves.
+//
+// Q_NivalisLibday
+// Day, Score, Temporary Time;
+
+020-1,0,0,0 script #NLib_Siege NPC_HIDDEN,{
+
+OnLoop:
+ @nlib_time+=5; // This is looped every 5 s
+
+ // Victory conditions: All monsters dead & number of waves filled. (Or if you reach level 40)
+ if (BaseLevel >= 40 || (@nlib_wave >= 10 && mobcount("020-1", "#NLib_Siege::OnPetDeath") <= 0)) {
+ goto L_Victory;
+
+ // New wave condition: Waves pending and A- All Mobs Dead B- 4 minutes spent
+ if (@nlib_wave < 10 && (mobcount("020-1", "#NLib_Siege::OnPetDeath") <= 0 || @nlib_time >= 240))
+ goto L_NextRound;
+ }
+
+ // reset timer
+ addtimer(5000, "#NLib_Siege::OnLoop");
+ end;
+
+L_NextRound:
+ @nlib_time=0;
+ @nlib_wave = @nlib_wave + 1;
+ // Prepare next round
+ dispbottom l("Wave @@/10", @nlib_wave);
+ .@amount=@nlib_wave+rand(1,2);
+ freeloop(true);
+ for (.@i = 0; .@i < .@amount; ++.@i) {
+ .@mid=rand(1,22);
+ .@monsterId=Piou;
+ switch (.@mid) {
+ case 1:
+ .@monsterId = CaveMaggot ; break;
+ case 2:
+ .@monsterId = GiantMaggot ; break;
+ //.@monsterId = Wolvern ; break;
+ case 3:
+ .@monsterId = WhiteSlime ; break;
+ case 4:
+ .@monsterId = MagicGoblin ; break;
+ case 5:
+ .@monsterId = Bandit ; break;
+ case 6:
+ .@monsterId = GreenSlime ; break;
+ case 7:
+ .@monsterId = LavaSlime ; break;
+ case 8:
+ .@monsterId = CaveSnake ; break;
+ case 9:
+ .@monsterId = DesertBandit ; break;
+ case 10:
+ .@monsterId = Sarracenus ; break;
+ case 11:
+ .@monsterId = AngryRedScorpion ; break;
+ case 12:
+ .@monsterId = IcedFluffy ; break;
+ case 13:
+ .@monsterId = Scorpion ; break;
+ case 14:
+ .@monsterId = RedScorpion ; break;
+ case 15:
+ .@monsterId = BlackSlime ; break;
+ case 16:
+ .@monsterId = Piousse ; break;
+ case 17:
+ .@monsterId = CandiedSlime ; break;
+ case 18:
+ .@monsterId = BlueSlime ; break;
+ case 19:
+ .@monsterId = SlimeBlast ; break;
+ case 20:
+ .@monsterId = BlackSlime ; break;
+ case 21:
+ .@monsterId = RedSlime ; break;
+ default:
+ .@monsterId = AngryScorpion ; break;
+ }
+ areamonster "020-1", 20, 20, 100, 100, strmobinfo(1, .@monsterId), .@monsterId, 1, "#NLib_Siege::OnPetDeath";
+ }
+ freeloop(false);
+
+ // reset timer
+ addtimer(5000, "#NLib_Siege::OnLoop");
+ end;
+
+// Warp you back, and give you a random small score.
+L_CleanUp:
+ .@q2=getq2(Q_NivalisLibday);
+ setq2 Q_NivalisLibday, .@q2+rand(1,5);
+ warp "019-2", 43, 55;
+ end;
+
+OnPetDeath:
+ end;
+
+}