From a7c45a192268da2601cef47a4cdba987ae2327ca Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sun, 23 Oct 2022 21:44:22 -0300 Subject: Initial commit (Moubootaur Legends fork) --- npc/008-0/_import.txt | 6 ++ npc/008-0/_mobs.txt | 7 ++ npc/008-0/_warps.txt | 3 + npc/008-0/mapflags.txt | 3 + npc/008-0/master.txt | 183 +++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 202 insertions(+) create mode 100644 npc/008-0/_import.txt create mode 100644 npc/008-0/_mobs.txt create mode 100644 npc/008-0/_warps.txt create mode 100644 npc/008-0/mapflags.txt create mode 100644 npc/008-0/master.txt (limited to 'npc/008-0') 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; +} + -- cgit v1.2.3-70-g09d2