summaryrefslogtreecommitdiff
path: root/npc/008-2
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-2
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-2')
-rw-r--r--npc/008-2/_config.txt127
-rw-r--r--npc/008-2/_import.txt6
-rw-r--r--npc/008-2/_mobs.txt28
-rw-r--r--npc/008-2/_warps.txt3
-rw-r--r--npc/008-2/master.txt172
5 files changed, 336 insertions, 0 deletions
diff --git a/npc/008-2/_config.txt b/npc/008-2/_config.txt
new file mode 100644
index 0000000..01efa14
--- /dev/null
+++ b/npc/008-2/_config.txt
@@ -0,0 +1,127 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 008-2: 2nd Floor - Party Dungeon conf
+
+008-2,80,208,0 script #008-2_80_208 NPC_HIDDEN,{
+ end;
+OnDisable:
+ delcells "008-2_80_208"; end;
+OnEnable:
+OnInit:
+ setcells "008-2", 80, 208, 88, 208, 1, "008-2_80_208";
+}
+
+008-2,106,237,0 script #008-2_106_237 NPC_SWITCH_ONLINE,{
+ if (getnpcclass() == NPC_SWITCH_OFFLINE)
+ end;
+ callfunc "massprovoke", 12;
+ setnpcdisplay "#008-2_106_237", NPC_SWITCH_OFFLINE;
+ end;
+OnInit:
+ .distance=2;
+}
+
+008-2,66,143,0 script #008-2_66_143 NPC_SWITCH_OFFLINE,{
+ if (getnpcclass() == NPC_SWITCH_ONLINE)
+ end;
+ callfunc "grenade", 12, 10000;
+ setnpcdisplay "#008-2_66_143", NPC_SWITCH_ONLINE;
+ end;
+OnInit:
+ .distance=2;
+}
+
+008-2,111,166,0 script #008-2_111_166 NPC_SWITCH_ONLINE,{
+ if (getnpcclass() == NPC_SWITCH_OFFLINE)
+ end;
+ callfunc "ALCReset";
+ setnpcdisplay "#008-2_111_166", NPC_SWITCH_OFFLINE;
+ end;
+OnInit:
+ .distance=2;
+}
+
+008-2,135,21,0 script #008-2_135_21 NPC_HIDDEN,2,1,{
+ end;
+OnTouch:
+ callfunc "massprovoke", 12;
+ end;
+}
+
+008-2,54,237,0 script #008-2_54_237 NPC_HIDDEN,2,1,{
+ end;
+OnTouch:
+ doevent "#008-2_80_208::OnDisable";
+ end;
+}
+
+008-2,72,247,0 script #008-2_72_247 NPC_TRAP_ONLINE,0,0,{
+ mesn strcharinfo(0);
+ mesq l("Something seems off with that!");
+ close;
+OnTouch:
+OnTouchNPC:
+ IronTrap(200, 0, 1);
+ end;
+}
+
+008-2,87,240,0 script #008-2_87_240 NPC_TRAP_ONLINE,0,0,{
+ mesn strcharinfo(0);
+ mesq l("Something seems off with that!");
+ close;
+OnTouch:
+OnTouchNPC:
+ IronTrap(200, 0, 1);
+ end;
+}
+
+008-2,46,211,0 script #008-2_46_211 NPC_TRAP,0,0,{
+ mesn strcharinfo(0);
+ mesq l("Something seems off with that!");
+ close;
+OnTouch:
+OnTouchNPC:
+ IronTrap(200, 10, 2);
+ end;
+OnTimer10000:
+ stopnpctimer; setnpctimer 0; setnpcdisplay "#008-2_46_211", NPC_TRAP; end;
+}
+
+008-2,85,117,0 script #008-2_85_117 NPC_TRAP,0,0,{
+ mesn strcharinfo(0);
+ mesq l("Something seems off with that!");
+ close;
+OnTouch:
+OnTouchNPC:
+ IronTrap(400, 15, 3);
+ end;
+OnTimer15000:
+ stopnpctimer; setnpctimer 0; setnpcdisplay "#008-2_85_117", NPC_TRAP; end;
+}
+
+008-2,59,222,0 script #008-2_59_222 NPC_HIDDEN,{
+ end;
+OnDisable:
+ delcells "008-2_59_222"; end;
+OnEnable:
+OnInit:
+ setcells "008-2", 59, 222, 67, 222, 1, "008-2_59_222";
+}
+
+008-2,32,99,0 script #008-2_32_99 NPC_SWITCH_ONLINE,{
+ if (getnpcclass() == NPC_SWITCH_OFFLINE)
+ end;
+ doevent "#008-2_59_222::OnDisable";
+ setnpcdisplay "#008-2_32_99", NPC_SWITCH_OFFLINE;
+ end;
+OnInit:
+ .distance=2;
+}
+
+008-2,87,221,0 script #008-2_87_221 NPC_CHEST,{
+ TreasureBox();
+ specialeffect(.dir == 0 ? 24 : 25, AREA, getnpcid()); // closed ? opening : closing
+ close;
+OnInit:
+ .distance=3;
+ end;
+}
diff --git a/npc/008-2/_import.txt b/npc/008-2/_import.txt
new file mode 100644
index 0000000..12a0692
--- /dev/null
+++ b/npc/008-2/_import.txt
@@ -0,0 +1,6 @@
+// Map 008-2: 2nd Floor - Party Dungeon
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/008-2/_config.txt",
+"npc/008-2/_mobs.txt",
+"npc/008-2/_warps.txt",
+"npc/008-2/master.txt",
diff --git a/npc/008-2/_mobs.txt b/npc/008-2/_mobs.txt
new file mode 100644
index 0000000..db96f19
--- /dev/null
+++ b/npc/008-2/_mobs.txt
@@ -0,0 +1,28 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 008-2: 2nd Floor - Party Dungeon mobs
+008-2,79,244,15,12 monster Slime Blast 1090,2,15000,15000
+008-2,47,200,21,39 monster Bandit 1024,4,25000,25000
+008-2,106,203,33,26 monster Mouboo 1023,4,25000,25000
+008-2,84,35,61,19 monster Cave Snake 1035,7,25000,25000
+008-2,60,74,35,18 monster Giant Maggot 1031,4,25000,25000
+008-2,86,107,8,14 monster Moggun 1070,2,25000,25000
+008-2,48,126,28,33 monster Mana Bug 1075,6,25000,25000
+008-2,119,244,23,13 monster Copper Slime 1088,1,25000,25000
+008-2,117,84,21,27 monster Red Slime 1092,6,25000,25000
+008-2,122,157,21,17 monster Yellow Slime 1091,3,25000,25000
+008-2,110,125,21,14 monster Lava Slime 1097,2,25000,25000
+008-2,89,158,9,17 monster Snake 1122,2,25000,25000
+008-2,37,63,21,39 monster Bandit 1024,4,25000,25000
+008-2,119,93,21,77 monster Desert Log Head 1127,6,25000,25000
+008-2,117,213,21,39 monster Desert Bandit 1124,3,25000,25000
+008-2,30,197,17,24 monster Sarracenus 1125,2,25000,25000
+008-2,88,70,10,48 monster Angry Red Scorpion 1130,6,25000,25000
+008-2,67,87,10,60 monster Sea Slime 1093,7,25000,25000
+008-2,33,138,21,32 monster Robin Bandit 1153,1,25000,25000
+008-2,59,204,11,34 monster Candied Slime 1089,4,25000,25000
+008-2,86,172,10,54 monster Green Slime 1085,6,25000,25000
+008-2,81,61,73,39 monster Plushroom Field 1011,4,25000,45000
+008-2,81,242,21,15 monster Piou 1002,3,25000,15000
+008-2,81,117,73,39 monster Chagashroom Field 1128,4,25000,45000
+008-2,40,200,32,39 monster Big Ruby Bif 1100,1,35000,45000
+008-2,103,200,29,39 monster Sapphire Bif 1114,2,25000,45000
diff --git a/npc/008-2/_warps.txt b/npc/008-2/_warps.txt
new file mode 100644
index 0000000..adea286
--- /dev/null
+++ b/npc/008-2/_warps.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 008-2: 2nd Floor - Party Dungeon warps
+008-2,80,255,0 warp #008-2_80_255 0,0,008-2,54,237
diff --git a/npc/008-2/master.txt b/npc/008-2/master.txt
new file mode 100644
index 0000000..5577e40
--- /dev/null
+++ b/npc/008-2/master.txt
@@ -0,0 +1,172 @@
+// TMW-2 Script
+// Author:
+// Jesusalva
+// Description:
+// This NPC is a work on progress. It measures all players equal.
+// Controls the second floor
+
+// 21: From 2 to 1
+008-2,135,19,0 script #FPDM21 NPC_HIDDEN,0,0,{
+ end;
+OnTouch:
+ // Party leader cannot retreat
+ if (strcharinfo(0) == getpartyleader(getcharid(1)))
+ dispbottom l("As the leader of your party, you can only go forward.");
+ else
+ warp "008-1", 43, 104;
+ end;
+}
+
+008-2,135,19,0 script #FPDM23 NPC_HIDDEN,0,0,{
+ end;
+OnTouch:
+ end;
+ // IMPORTANT: Prevent party master from returning here
+ getmapxy(.@m$, .@x, .@y, 0, getpartyleader(getcharid(1)));
+ if (.@m$ ~= "008-*" &&
+ .@m$ != "008-0" &&
+ .@m$ != "008-1" &&
+ .@m$ != "008-2" &&
+ BaseLevel > 40 &&
+ mobcount("008-2", "Second Dungeon Master::OnBossDeath") == 0 &&
+ @pmloop) {
+ dispbottom l("Go and follow @@, your party leader!", getpartyleader(getcharid(1)));
+ warp "008-1", 176, 20; // 008-2
+ } else if (BaseLevel > 40) {
+ dispbottom l("If I bring @@, my party leader, and the boss is defeated, I can go you in.", getpartyleader(getcharid(1)));
+ } else {
+ mesc l("I cannot pass, because I am only level @@.", BaseLevel);
+ mesc l("Newbies can only get past their limits once, with their party leader level help! If they die, they can't rejoin!");
+ // I thought it would be better this way. There was at least three different ways to prevent that.
+ }
+ end;
+}
+
+008-2,75,240,0 script Second Dungeon Master NPC_BRGUARD_SWORD,{
+ // Double-check, you should have been flung out long ago.
+ if (getcharid(1) <= 0 || @pmloop <= 0) {
+ mesn;
+ mesq l("Something seems wrong.");
+ warp "SavePoint",0,0;
+ close;
+ }
+ if (mobcount("008-2", "Second Dungeon Master::OnBossDeath") > 0) {
+ npctalk3 l("What are you doing? Fight!");
+ end;
+ }
+
+ mesn;
+ mesq l("Compliments reaching this far, @@ from the @@ party!", strcharinfo(0), getpartyname(getcharid(1)));
+ next;
+
+ mesn;
+ mesq l("I can summon the BOSS for the level 21~40 area.");
+ next;
+ if (strcharinfo(0) != getpartyleader(getcharid(1))) goto L_NotYou;
+ if (BaseLevel < 40) goto L_TooWeak;
+ mesn;
+ mesq l("He is strong though, so keep your party together!");
+ 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
+ // TODO: Second Floor
+ npctalk l("@@: Fight!", getpartyname(getcharid(1)));
+ monster "008-2", rand(74,84), rand(241,250), "Second Dungeon Boss", BanditLord, 1, "Second Dungeon Master::OnBossDeath";
+ close;
+
+
+
+
+
+
+
+
+
+
+// Only the party leader can start this.
+L_NotYou:
+ mesn;
+ dispbottom l("Go and fetch @@, the party leader!", 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;
+
+// Must have level to face boss
+L_TooWeak:
+ mesn;
+ mesq l("This is the end for your party, as the leader doesn't have sufficient level.");
+ close;
+
+// Second Floor special monsters
+OnReward:
+ // 40% odds of a Black Scorpion coming to avenge fallen monster leader
+ if (rand(1,5) % 2) {
+ getmapxy(.@m$, .@x, .@y, 0);
+ monster .@m$, .@x, .@y, "Semi Boss", BlackScorpion, 1;
+ }
+ Zeny=Zeny+700;
+ getexp 400, 60;
+ getitem CelestiaTea, 1;
+ dispbottom l("Reward: 700 GP, 400 XP, 1 @@", getitemlink(CelestiaTea));
+
+
+OnBossDeath:
+ // Give every party member in map a reward
+ partytimer("008-2", 200, "Second Dungeon Master::OnReward", getcharid(1));
+
+ // Warp everyone and add timers
+ warpparty("008-1", 176, 20, getcharid(1), "008-2", true); // TODO 008-3
+ // While we can't advance, we allow you to redo the dungeons
+
+ /*
+ // Bonus Monsters
+ monster("008-3", 104, 238, "Time Bonus", RobinBandit, 1, "Party Master::OnMobTime");
+ monster("008-3", 85, 117, "Time Bonus", RobinBandit, 1, "Party Master::OnMobTime");
+
+ // Five Chests
+ monster("008-3", 38, 104, "Mysterious Chest", any(BronzeChest, BronzeMimic), 1);
+ monster("008-3", 41, 104, "Mysterious Chest", any(BronzeChest, BronzeMimic, EvilChest), 1);
+ monster("008-3", 44, 104, "Mysterious Chest", any(SilverChest, SilverMimic), 1);
+ monster("008-3", 47, 104, "Mysterious Chest", any(BronzeChest, BronzeMimic, EvilChest), 1);
+ monster("008-3", 50, 104, "Mysterious Chest", any(BronzeChest, BronzeMimic), 1);
+ */
+ end;
+
+OnInit:
+ .sex = G_MALE;
+ .distance = 5;
+ end;
+}
+