diff options
Diffstat (limited to 'npc')
-rw-r--r-- | npc/008-1/_import.txt | 1 | ||||
-rw-r--r-- | npc/008-1/master.txt | 137 |
2 files changed, 138 insertions, 0 deletions
diff --git a/npc/008-1/_import.txt b/npc/008-1/_import.txt index 614fe58dc..ecc43a544 100644 --- a/npc/008-1/_import.txt +++ b/npc/008-1/_import.txt @@ -2,3 +2,4 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. "npc/008-1/_mobs.txt", "npc/008-1/_warps.txt", +"npc/008-1/master.txt", diff --git a/npc/008-1/master.txt b/npc/008-1/master.txt new file mode 100644 index 000000000..9d4e61efd --- /dev/null +++ b/npc/008-1/master.txt @@ -0,0 +1,137 @@ +// TMW-2 Script +// Author: +// Jesusalva +// Description: +// This NPC is a work on progress. It measures all players equal. + +008-1,48,117,0 script First Dungeon Master NPC_BRGUARD_SWORD,{ + mesn; + if (getcharid(1) <= 0) { + mesq l("Leaving your party? LAME."); + warp "SavePoint",0,0; + } + if (mobcount("008-1", "First Dungeon Master::OnBossDeath") > 0) { + npctalk3 l("What are you doing? Fight!"); + end; + } + + 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 0~20 area."); + next; + if (strcharinfo(0) != getpartyleader(getcharid(1))) goto L_NotYou; + mesn; + mesq l("He is strong though, so keep your party togheter!"); + 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-1", rand(37,54), rand(109,122), "First Dungeon Boss", Sarracenus, 1, "First Dungeon Master::OnBossDeath"; + close; + + + + + + + + + + +// Only the party leader can start this. But you can rejoin, as long map leader is on 008-2+ +L_NotYou: + getmapxy(.@m$, .@x, .@y, 0, getpartyleader(getcharid(1))); + if (.@m$ ~= "008-*" && + .@m$ != "008-0" && + .@m$ != "008-1" && + BaseLevel > 20 && + mobcount("008-1", "First Dungeon Master::OnBossDeath") == 0 && + @pmloop) { + mesn; + mesq l("Go and follow @@, your party leader!", getpartyleader(getcharid(1))); + warp "008-1", 176, 20; // 008-2 + } else if (BaseLevel > 20) { + mesn; + mesq l("If you bring me @@, your party leader, and the boss is defeated, I can let you in.", getpartyleader(getcharid(1))); + } else { + mesn; + mesq l("I cannot let you pass, because you are 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. + } + close; + +// Minimum 3 players +L_TooSmall: + mesn; + mesq l("However, I need to see at least three volunteers here, to allow you in."); + close; + +// Second Floor special monsters +OnMobTime: + getmapxy(.@m$, .@x, .@y, 0); + areatimer(.@m$, .@x-4, .@y-4, .@x+4, .@y+4, 10, "Party Master::OnAddTime"); + end; + +OnReward: + Zeny=Zeny+200; + getexp 200, 20; + dispbottom l("Reward: 200 GP, 200 XP"); +OnAddTime: + @pmloop=60; + end; + +OnBossDeath: + // Give every party member in map a reward + partytimer("008-1", 200, "First Dungeon Master::OnReward", getcharid(1)); + + // Warp everyone and add timers + warpparty("008-1", 176, 20, getcharid(1), "008-1", true); + + // Bonus Monsters + monster("008-1", 90, 69, "Time Bonus", Scorpion, 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); + end; + +OnInit: + .sex = G_MALE; + .distance = 5; + end; +} + |