summaryrefslogtreecommitdiff
path: root/npc/008-0
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2022-10-23 21:44:22 -0300
committerJesusaves <cpntb1@ymail.com>2022-10-23 21:44:22 -0300
commita7c45a192268da2601cef47a4cdba987ae2327ca (patch)
treec5fb5b97db109fe7106496dd96498c475881046b /npc/008-0
downloadserverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.gz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.bz2
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.xz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.zip
Initial commit (Moubootaur Legends fork)
Diffstat (limited to 'npc/008-0')
-rw-r--r--npc/008-0/_import.txt6
-rw-r--r--npc/008-0/_mobs.txt7
-rw-r--r--npc/008-0/_warps.txt3
-rw-r--r--npc/008-0/mapflags.txt3
-rw-r--r--npc/008-0/master.txt183
5 files changed, 202 insertions, 0 deletions
diff --git a/npc/008-0/_import.txt b/npc/008-0/_import.txt
new file mode 100644
index 0000000..1ff3fcc
--- /dev/null
+++ b/npc/008-0/_import.txt
@@ -0,0 +1,6 @@
+// Map 008-0: Party Dungeon Waiting Hall
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/008-0/_mobs.txt",
+"npc/008-0/_warps.txt",
+"npc/008-0/mapflags.txt",
+"npc/008-0/master.txt",
diff --git a/npc/008-0/_mobs.txt b/npc/008-0/_mobs.txt
new file mode 100644
index 0000000..a0d03ce
--- /dev/null
+++ b/npc/008-0/_mobs.txt
@@ -0,0 +1,7 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 008-0: Party Dungeon Waiting Hall mobs
+008-0,49,49,28,28 monster Ratto 1005,6,35000,300000
+008-0,50,47,28,28 monster Cave Bat 1039,4,35000,300000
+008-0,48,48,28,28 monster Silk Worm 1034,6,35000,300000
+008-0,49,63,29,16 monster Red Scorpion 1072,3,35000,300000
+008-0,49,32,29,14 monster Scorpion 1071,3,35000,300000
diff --git a/npc/008-0/_warps.txt b/npc/008-0/_warps.txt
new file mode 100644
index 0000000..b14f6a7
--- /dev/null
+++ b/npc/008-0/_warps.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 008-0: Party Dungeon Waiting Hall warps
+008-0,41,22,0 warp #008-0_41_22 0,0,003-1-1,44,142
diff --git a/npc/008-0/mapflags.txt b/npc/008-0/mapflags.txt
new file mode 100644
index 0000000..e292f7e
--- /dev/null
+++ b/npc/008-0/mapflags.txt
@@ -0,0 +1,3 @@
+008-1 mapflag zone MMO
+008-2 mapflag zone MMO
+008-2 mapflag pvp
diff --git a/npc/008-0/master.txt b/npc/008-0/master.txt
new file mode 100644
index 0000000..2158e53
--- /dev/null
+++ b/npc/008-0/master.txt
@@ -0,0 +1,183 @@
+// TMW-2 Script
+// Author:
+// Jesusalva
+// Description:
+// This NPC is a work on progress. It measures all players equal.
+// Controls the whole dungeon feature.
+
+008-0,47,63,0 script Party Master NPC_BRGUARD_SWORD,{
+ if (!is_staff())
+ goto L_TODO; // TODO
+
+ mesn;
+ if (getcharid(1) > 0) {
+ mesq l("You're in the \"@@\" party, very good!", getpartyname(getcharid(1)));
+ next;
+ } else {
+ mesq l("I protect a dungeon for PARTIES. You're not on a party, get moving.");
+ close;
+ }
+
+ mesn;
+ mesq l("I protect a very dangerous dungeon, and it is so dangerous, that only parties can go in.");
+ next;
+ if (strcharinfo(0) != getpartyleader(getcharid(1))) goto L_NotYou;
+ mesn;
+ mesq l("There are five floors, and they're all very dangerous. But there are riches to be found.");
+ next;
+ mesn;
+ mesq l("You also can't stay there forever! You will have about 20 minutes to entirely clear it out and defeat the last boss.");
+ if (!party_expon(getcharid(1)))
+ mesc l("Note: Your party is currently not sharing experience, and will suffer a time penalty. Your time will be halved."), 6;
+ next;
+ // Get info about your party, and backup it
+ getpartymember(getcharid(1));
+ .@count = $@partymembercount;
+ copyarray(.@name$[0], $@partymembername$[0], $@partymembercount);
+ copyarray(.@aid[0], $@partymemberaid[0], $@partymembercount);
+ copyarray(.@cid[0], $@partymembercid[0], $@partymembercount);
+ .@count_online=0;
+
+ if (.@count < 3 && !$@GM_OVERRIDE) goto L_TooSmall;
+ mesn;
+ mesc l("Are you and your party ready?"), 1;
+ if (askyesno() != ASK_YES)
+ close;
+
+ // Loop though party to see if you can start
+ for (.@i = 0; .@i < .@count; ++.@i) {
+ // Online?
+ if (isloggedin(.@aid[.@i], .@cid[.@i])) {
+ getmapxy(.@m$, .@x, .@y, 0, .@name$[.@i]);
+ // Here?
+ if (.@m$ == .map$)
+ .@count_online++;
+ }
+ }
+
+ // How many are logged in and here?
+ if (.@count_online < 3 && !$@GM_OVERRIDE) goto L_TooSmall;
+
+ // TODO: Query if exp sharing is enabled
+ // TODO: Instance for party
+
+ // Warp everyone and add timers
+ partytimer("008-0", 1000, "Party Master::OnStart", getcharid(1));
+ warpparty("008-1", 176, 20, getcharid(1), "008-0", true);
+
+ // One bonus time
+ monster("008-1", 90, 69, "Time Bonus", Mouboo, 1, "Party Master::OnMobTime");
+
+ // Four Chests
+ monster("008-1", 38, 104, "Mysterious Chest", any(BronzeChest, BronzeMimic), 1);
+ monster("008-1", 41, 104, "Mysterious Chest", any(BronzeChest, BronzeMimic), 1);
+ monster("008-1", 44, 104, "Mysterious Chest", any(BronzeChest, BronzeMimic), 1);
+ monster("008-1", 47, 104, "Mysterious Chest", any(BronzeChest, BronzeMimic), 1);
+
+ // We still need the SummonBoss NPC and etc.
+ close;
+
+
+
+
+
+
+
+
+
+L_TODO:
+ mesn;
+ mesq l("Jesusalva still have this closed because the traps are broken... %%n But we shall open soon. %%G");
+ next;
+ mesn;
+ mesq l("It's not hard to repair, but nobody is bothering Jesusalva on #world as of late. %%n");
+ mesq l("Because this, the national budget is going to other silly, under-rewarding, minor things...");
+ mesc l("If you think this should be a priority, please ask Jesusalva."), 1;
+ close;
+
+// Only the party leader can start this. But you can rejoin, as long map leader is on 008-x
+L_NotYou:
+ getmapxy(.@m$, .@x, .@y, 0, getpartyleader(getcharid(1)));
+ if (.@m$ ~= "008-*" &&
+ .@m$ != "008-0" &&
+ BaseLevel > 0 &&
+ @pmloop) {
+ mesn;
+ mesq l("@@, your party leader, is inside, I'm not sure where.", getpartyleader(getcharid(1)));
+ mesc l("Enter dungeons? You won't be able to join anymore when he dies."), 1;
+ if (askyesno() != ASK_YES)
+ close;
+ // Double check
+ getmapxy(.@m$, .@x, .@y, 0, getpartyleader(getcharid(1)));
+ if (.@m$ ~= "008-*" && .@m$ != "008-0" && getcharid(1) > 0)
+ warp "008-1", 176, 20;
+ } else {
+ mesn;
+ mesq l("If you bring me @@, your party leader, I can let you in.", getpartyleader(getcharid(1)));
+ }
+ close;
+
+// Minimum 3 players
+L_TooSmall:
+ mesn;
+ mesq l("However, I need to see at least three volunteers here, to allow you in.");
+ close;
+
+
+
+// Main Loop
+OnStart:
+ @pmloop=0;
+OnLoop:
+ @pmloop+=1;
+ .@lost="";
+
+ // Anti-Crazyfefe™ Alpha System
+ if (getcharid(1) <= 0) {
+ // Left the party!
+ .@lost=l("You are not a member of a party anymore.");
+ }
+ if (!party_expon(getcharid(1))) {
+ // Party exp sharing disabled means time penalty.
+ @pmloop+=1;
+ }
+
+ // Check if party master still alive and in caves.
+ if (getmapxy(.@m$, .@x, .@y, 0, getpartyleader(getcharid(1))) <= 0)
+ .@lost=l("Party leader is gone.");
+ else if (!(.@m$ ~= "008-*"))
+ .@lost=l("Party leader is not on dungeons.");
+
+ // Add new cycle or finish.
+ if (@pmloop < 1200 && .@lost == "")
+ addtimer(1000, "Party Master::OnLoop");
+ else
+ .@lost=l("You ran out of time...");
+
+ // See if it is time to finish
+ if (.@lost != "") {
+ @pmloop=0;
+ warp "008-0", 47, 64;
+ dispbottom str(.@lost);
+ }
+ end;
+
+OnMobTime:
+ getmapxy(.@m$, .@x, .@y, 0);
+ areatimer(.@m$, .@x-4, .@y-4, .@x+4, .@y+4, 10, "Party Master::OnAddTime");
+ end;
+
+OnAddTime:
+ @pmloop=60;
+ end;
+
+OnInit:
+ .sex = G_MALE;
+ .distance = 5;
+
+ // Won't be finished until later later later™
+ if (!debug)
+ disablenpc .name$;
+ end;
+}
+