summaryrefslogtreecommitdiff
path: root/npc/001-8
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/001-8
downloadserverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.gz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.bz2
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.xz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.zip
Initial commit (Moubootaur Legends fork)
Diffstat (limited to 'npc/001-8')
-rw-r--r--npc/001-8/_import.txt5
-rw-r--r--npc/001-8/_mobs.txt8
-rw-r--r--npc/001-8/hub.txt433
-rw-r--r--npc/001-8/mapflags.txt5
4 files changed, 451 insertions, 0 deletions
diff --git a/npc/001-8/_import.txt b/npc/001-8/_import.txt
new file mode 100644
index 0000000..0dce527
--- /dev/null
+++ b/npc/001-8/_import.txt
@@ -0,0 +1,5 @@
+// Map 001-8: Hungry Quirin Arena
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/001-8/_mobs.txt",
+"npc/001-8/hub.txt",
+"npc/001-8/mapflags.txt",
diff --git a/npc/001-8/_mobs.txt b/npc/001-8/_mobs.txt
new file mode 100644
index 0000000..24a0290
--- /dev/null
+++ b/npc/001-8/_mobs.txt
@@ -0,0 +1,8 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 001-8: Hungry Quirin Arena mobs
+001-8,49,49,30,30 monster Piousse 1003,11,20000,20000
+001-8,28,47,10,7 monster Plushroom Field 1011,18,30000,30000
+001-8,70,51,10,7 monster Chagashroom Field 1128,18,30000,30000
+001-8,49,28,31,10 monster Manana Tree 1017,26,30000,30000
+001-8,28,70,10,10 monster Squirrel 1032,8,30000,30000
+001-8,67,72,14,9 monster Manana Tree 1017,8,30000,30000
diff --git a/npc/001-8/hub.txt b/npc/001-8/hub.txt
new file mode 100644
index 0000000..9ba3cf5
--- /dev/null
+++ b/npc/001-8/hub.txt
@@ -0,0 +1,433 @@
+// TMW2 Script
+// Author:
+// Ernando <ernando.quirino@hotmail.com> (Creator)
+// Jesusalva <admin@tmw2.org>
+// Description:
+// Hunger Games™ version for The Mana World Brazil v2, created by Ernando Quirino.
+
+001-8,0,0,0 script #QuirinoHUB NPC_HIDDEN,{
+ end;
+
+ // HUBspawn( mobID, amount )
+ function HUBspawn {
+ areamonster "001-8", 20, 20, 80, 80, strmobinfo(1, getarg(0)), getarg(0), getarg(1);
+ return; }
+
+ // HUBscatter( itemID )
+ function HUBscatter {
+ makeitem(getarg(0), 1, "001-8", rand(20,80), rand(20,80));
+ return; }
+
+ // HUBarrow()
+ function HUBarrow {
+ makeitem(rand(TrainingArrow,BoneArrow), rand(10,30), "001-8", rand(20,80), rand(20,80));
+ return; }
+
+ // HUBrandwpn( full )
+ function HUBrandwpn {
+ if (getarg(0)) {
+ .@x=rand(20,80); .@y=rand(20,80);
+ } else {
+ .@x=rand(44,55); .@y=rand(46,54);
+ }
+
+ .@r=rand(1,8);
+ switch(.@r){
+ case 1:
+ makeitem(rand(Knife, WoodenSword), 1, "001-8", .@x, .@y); break;
+ case 2:
+ makeitem(rand(SharpKnife, Dagger), 1, "001-8", .@x, .@y); break;
+ case 3:
+ makeitem(rand(ThunderStaff,Judgment), 1, "001-8", .@x, .@y); break;
+ case 4:
+ makeitem(rand(BronzeGladius,Scythe), 1, "001-8", .@x, .@y); break;
+ case 5:
+ makeitem(rand(WoodenBow, ElficBow), 1, "001-8", .@x, .@y); break;
+ case 6:
+ makeitem(rand(WoodenBow, ShortBow), 1, "001-8", .@x, .@y); break;
+ case 7:
+ makeitem(rand(ForestBow, BansheeBow), 1, "001-8", .@x, .@y); break;
+ default:
+ makeitem(WoodenShield, 1, "001-8", .@x, .@y); break;
+ }
+
+ return; }
+
+// Only one player standing! CONGRATULATIONS, YOU HAVE WON!!
+OnGameOver:
+ .@u=getmapusers("001-8")-1;
+ debugmes "OnGameOver Check: "+str(.@u);
+ if (.@u == 1) {
+ $@EQ_STATUS=2;
+ maptimer("001-8", 10, "#QuirinoHUB::OnVictory");
+ killmonsterall("001-8");
+ stopnpctimer;
+ cleanmap("001-8");
+ }
+ end;
+
+
+// Ordered by GM to start.
+OnStart:
+ $@EQ_STATUS=1;
+
+ // 2 Necklaces, 1 Charm and 1 Quiver
+ makeitem(rand(1000,1003), 1, "001-8", rand(44,55), rand(46,54));
+ makeitem(rand(1006,1011), 1, "001-8", rand(44,55), rand(46,54));
+ makeitem(rand(1150,1151), 1, "001-8", rand(44,55), rand(46,54));
+ makeitem(rand(1172,1174), 1, "001-8", rand(44,55), rand(46,54));
+
+ makeitem(GoldenRing, 1, "001-8", rand(44,55), rand(46,54));
+ makeitem(SilverRing, 1, "001-8", rand(44,55), rand(46,54));
+ makeitem(SilverRing, 1, "001-8", rand(44,55), rand(46,54));
+ makeitem(rand(PolishedDiamond,PolishedEmerald), 1, "001-8", rand(44,55), rand(46,54));
+ makeitem(rand(PolishedDiamond,PolishedEmerald), 1, "001-8", rand(44,55), rand(46,54));
+ makeitem(rand(PolishedDiamond,PolishedEmerald), 1, "001-8", rand(44,55), rand(46,54));
+ makeitem(rand(TrainingArrow,BoneArrow), 50, "001-8", rand(44,55), rand(46,54));
+
+ makeitem(CandorBoots, 1, "001-8", rand(44,55), rand(46,54));
+ makeitem(LousyMoccasins, 1, "001-8", rand(44,55), rand(46,54));
+ makeitem(CottonBoots, 1, "001-8", rand(44,55), rand(46,54));
+ makeitem(CreasedBoots, 1, "001-8", rand(44,55), rand(46,54));
+ makeitem(TulimsharGuardBoots, 1, "001-8", rand(44,55), rand(46,54));
+
+ makeitem(rand(CreasedGloves, MinerGloves), 1, "001-8", rand(44,55), rand(46,54));
+
+ makeitem(CottonShorts, 1, "001-8", rand(44,55), rand(46,54));
+ makeitem(JeansShorts, 1, "001-8", rand(44,55), rand(46,54));
+ makeitem(PirateShorts, 1, "001-8", rand(44,55), rand(46,54));
+
+
+ maptimer("001-8", 5000, "#QuirinoHUB::OnCount10");
+ announce("##1HUNGRY QUIRIN EVENT: ##3##BCountdown: 15 seconds!", bc_all|bc_npc);
+ end;
+
+OnCount10:
+ // Random arrows + weapon
+ makeitem(rand(TrainingArrow,BoneArrow), 50, "001-8", rand(44,55), rand(46,54));
+
+ // Random Weapon
+ HUBrandwpn(0);
+
+ // Throw some random, weighty stuff on the whole map.
+ HUBscatter(rand(CopperOre, TitaniumOre));
+
+ specialeffect(4, AREA, getcharid(3));
+ addtimer(5000, "#QuirinoHUB::OnCount5");
+ dispbottom l("10 seconds!");
+ end;
+
+OnCount5:
+ specialeffect(4, AREA, getcharid(3));
+
+ // Random Helmet
+ .@r=rand(1,9);
+ switch(.@r){
+ case 1:
+ makeitem(Bandana, 1, "001-8", rand(44,55), rand(46,54)); break;
+ case 2:
+ makeitem(Bucket, 1, "001-8", rand(44,55), rand(46,54)); break;
+ case 3:
+ makeitem(MoubooHat, 1, "001-8", rand(44,55), rand(46,54)); break;
+ case 4:
+ makeitem(CandleHelmet, 1, "001-8", rand(44,55), rand(46,54)); break;
+ case 5:
+ makeitem(PinkieHat, 1, "001-8", rand(44,55), rand(46,54)); break;
+ case 6:
+ makeitem(GraduationCap, 1, "001-8", rand(44,55), rand(46,54)); break;
+ case 7:
+ makeitem(SerfHat, 1, "001-8", rand(44,55), rand(46,54)); break;
+ case 8:
+ makeitem(MinerHat, 1, "001-8", rand(44,55), rand(46,54)); break;
+ default:
+ makeitem(PaperBag, 1, "001-8", rand(44,55), rand(46,54)); break;
+ }
+
+ // Throw some random, weighty stuff on the whole map.
+ HUBscatter(rand(CopperIngot, TitaniumIngot));
+
+ addtimer(5000, "#QuirinoHUB::OnBegin");
+ dispbottom l("5 seconds!");
+ end;
+
+OnBegin:
+ // Scatter some healing items, specially where the weapons are, to mess drop lists; Send armor too
+ makeitem(rand(Acorn, Croconut), 1, "001-8", rand(44,55), rand(46,54));
+ makeitem(rand(Manana, Carrot), 1, "001-8", rand(24,75), rand(26,74));
+ makeitem(rand(RoastedMaggot, CherryCake), 1, "001-8", rand(24,75), rand(26,74));
+ makeitem(rand(CreasedShirt, CandorShirt), 1, "001-8", rand(24,75), rand(26,74));
+ HUBscatter(rand(BottleOfDivineWater, BottleOfSewerWater));
+
+ // Scatter around whole map a few arrows, a training bow, a knife, a creased shirt and a creased knife
+ HUBarrow();
+ HUBscatter(TrainingBow);
+ HUBscatter(Knife);
+ HUBscatter(CreasedShirt);
+ HUBscatter(CreasedShorts);
+
+ // Throw some random stuff on the whole map.
+ HUBscatter(rand(AquadaBox, WoodenLog));
+
+ // Free player, let's start!
+ delcells "qhubN";
+ delcells "qhubS";
+ setpcblock(PCBLOCK_SOFT, false);
+ specialeffect(FX_MGSHIELD, AREA, getcharid(3));
+ specialeffect(FX_CRITICAL, AREA, getcharid(3));
+ dispbottom col(l("Run! Event started!"), 1);
+ initnpctimer; // Restart the timer to fix any desync.
+ end;
+
+// We only have a schedule for the first 15 minutes. This accelerate stuff.
+OnSendWave:
+ HUBspawn(AngryRedScorpion, 3);
+ HUBspawn(BlackScorpion, 1);
+ HUBscatter(rand(PiberriesInfusion,LachesisBrew));
+ HUBscatter(CelestiaTea);
+ HUBarrow();
+ // Throw some ENTIRELY random stuff on the whole map.
+ HUBscatter(rand(700, 713));
+ HUBscatter(rand(731, 875));
+ HUBrandwpn(1);
+ HUBspawn(SlimeBlast, 1);
+ end;
+
+// 15 seconds after, I'm sure it is synced, so start spawning monsters.
+OnTimer15000:
+ HUBspawn(WhiteSlime, 3);
+ HUBspawn(SlimeBlast, 1);
+ // Throw some random stuff on the whole map.
+ HUBscatter(rand(731, 875));
+ end;
+
+
+// one minute is due.
+OnTimer60000:
+ HUBspawn(RedSlime, 12);
+ HUBspawn(SlimeBlast, 4);
+ HUBarrow();
+ // Throw some random stuff on the whole map.
+ HUBscatter(rand(731, 875));
+ end;
+
+// Two minutes are due.
+OnTimer120000:
+ HUBspawn(LavaSlime, 2);
+ HUBspawn(GreenSlime, 2);
+ HUBspawn(SeaSlime, 2);
+ HUBspawn(CaveMaggot, 2);
+ HUBspawn(Bandit, 2);
+ HUBarrow();
+ HUBarrow();
+ HUBscatter(ElixirOfLife);
+ HUBscatter(FatesPotion);
+ HUBscatter(LachesisBrew);
+ // Throw some random stuff on the whole map.
+ HUBscatter(rand(731, 875));
+ end;
+
+
+// Three minutes are due.
+OnTimer180000:
+ HUBspawn(GreenSlime, 4);
+ HUBspawn(SeaSlime, 4);
+ HUBspawn(Squirrel, 4);
+ HUBspawn(Snake, 1);
+ HUBarrow();
+ HUBarrow();
+ HUBarrow();
+ HUBarrow();
+ HUBarrow();
+ HUBarrow();
+ HUBscatter(AshUrn);
+ HUBscatter(Monocle);
+ HUBscatter(GreenEggshellHat);
+ HUBscatter(LeatherShirt);
+ // Throw some random stuff on the whole map.
+ HUBscatter(rand(731, 875));
+ end;
+
+// Five minutes are due.
+OnTimer300000:
+ HUBspawn(GreenSlime, 4);
+ HUBspawn(AngryRedScorpion, 3);
+ HUBspawn(Sarracenus, 1);
+ HUBspawn(Snake, 2);
+ HUBarrow();
+ HUBarrow();
+ HUBarrow();
+ HUBscatter(LeatherGloves);
+ HUBrandwpn(1);
+ HUBrandwpn(1);
+ HUBscatter(GoldenPearlRing);
+ HUBscatter(ElixirOfLife);
+ // Throw some random stuff on the whole map.
+ HUBscatter(rand(731, 875));
+ HUBscatter(rand(731, 875));
+ end;
+
+// Nine minutes are due.
+OnTimer540000:
+ HUBspawn(BlackScorpion, 2);
+ HUBspawn(DarkLizard, 3);
+ HUBspawn(Tipiou, 2);
+ HUBspawn(Snake, 2);
+ HUBspawn(MountainSnake, 1);
+ HUBspawn(SeaSlime, 2);
+ HUBarrow();
+ HUBarrow();
+ HUBarrow();
+ HUBarrow();
+ HUBarrow();
+ HUBrandwpn(1);
+ HUBrandwpn(1);
+ HUBscatter(GoldenBlackPearlRing);
+ HUBscatter(ElixirOfLife);
+ // Throw some random stuff on the whole map.
+ HUBscatter(rand(731, 875));
+ HUBscatter(rand(731, 875));
+ end;
+
+// Fifteen minutes are due. No more random stuff will show.
+OnTimer900000:
+ HUBspawn(BlackScorpion, 4);
+ HUBspawn(DarkLizard, 3);
+ HUBspawn(Tipiou, 2);
+ HUBspawn(Snake, 1);
+ HUBspawn(MountainSnake, 2);
+ HUBspawn(SeaSlime, 2);
+ HUBarrow();
+ HUBarrow();
+ HUBarrow();
+ HUBarrow();
+ HUBarrow();
+ HUBrandwpn(1);
+ HUBrandwpn(1);
+ HUBrandwpn(1);
+ HUBscatter(ElixirOfLife);
+ // Throw some random stuff on the whole map.
+ HUBscatter(rand(731, 875));
+ HUBscatter(rand(731, 875));
+ HUBscatter(rand(731, 875));
+ end;
+
+OnVictory:
+ @qhub_victor=1;
+ announce(sprintf("##1HUNGRY QUIRIN EVENT: ##3##B%s has won the match! Hail!", strcharinfo(0)), bc_all|bc_npc);
+ if (!QUIRINO_WINNER)
+ QUIRINO_WINNER = gettimetick(2);
+OnPCDieEvent:
+ @qhub_died=1;
+OnPCLogoutEvent:
+ getmapxy(.@mapa$, .@a,.@b, 0);
+ if (.@mapa$ == "001-8") {
+ // Deal with the environment {
+ .@u=getmapusers("001-8")-1;
+ mapannounce("001-8", "Total remaining players: "+.@u,0);
+ HUBscatter(rand(PiberriesInfusion,AtroposMixture));
+ HUBscatter(CelestiaTea);
+ HUBarrow();
+ HUBspawn(SlimeBlast, 1);
+ if (.@u % 2 == 1)
+ HUBscatter(Piberries);
+ if (.@u == 2) {
+ mapannounce("001-8", "The wolves were released!",0);
+ HUBscatter(ElixirOfLife);
+ HUBscatter(Aquada);
+ HUBscatter(Piberries);
+ HUBscatter(Beer);
+ HUBarrow();
+ HUBspawn(Wolvern, 4);
+ HUBspawn(NightScorpion, 2);
+ }
+ if (.@u == 1 && !@qhub_victor) {
+ donpcevent "#QuirinoHUB::OnGameOver";
+ }
+
+ // } Deal with the player {
+ clearitem();
+ if (checkpcblock() & PCBLOCK_ATTACK)
+ setpcblock(PCBLOCK_SOFT, false);
+
+ // Check if to reduce clearitem() efficiency you've used the cart in an illegal way.
+ getcartinventorylist();
+ if (@cartinventorylist_count>=1) {
+ // Obviously a cheater, you should not be using the cart on the event. I HATE CHEATERS!
+ // Destroy everything you had on the cart
+ if ($@HAS_API) {
+ query_sql("DELETE FROM `cart_inventory` WHERE `char_id`="+getcharid(0));
+ } else {
+ apiasync("SQL", sprintf("DELETE FROM `cart_inventory` WHERE `char_id`='%d'", getcharid(0)));
+ apiasync("SQLRUN", "");
+ }
+ // Destroy the cart. Cheaters doesn't deserve it!!
+ setcart(0);
+ // Delete the storage register. You now need to pay it again, to don't cheat anymore!
+ setq General_Banker, 0;
+ // You'll also forsake any event reward.
+ @qhub_victor=0;
+ @qhub_died=0;
+ }
+
+ // If you are the victor (and didn't cheat), you can now hold your reward ;-)
+ if (@qhub_victor) {
+ getitem any(MercBoxA, MercBoxA, SilverGift, MercBoxBB, GoldenGift), 1;
+ Zeny=Zeny+rand2(500, 2500);
+ }
+ if (@qhub_died || @qhub_victor)
+ getexp rand2(100,300), BaseLevel*10; // Dying on this map is enough to get a reward. Logout = no reward.
+
+ // You'll be revived/fully healed, and then warped.
+ // FIXME: It will throw you in Nard's ship if you are on logout...
+ recovery(getcharid(3));
+ // If recovery() is broken:
+ //atcommand "#alive \""+strcharinfo(0)+"\"";
+ //percentheal 100, 100;
+ warp "000-1", 22, 22;
+ }
+
+ // TODO: Checks which doesn't belong here shouldn't be here!
+ HUB_Logout(@qhub_died);
+
+ @qhub_victor=0;
+ @qhub_died=0;
+ end;
+
+OnCancel:
+ setpcblock(PCBLOCK_SOFT, false);
+ warp "Save", 0, 0;
+ end;
+
+// No penalty override
+OnNoPenaltyCommand:
+ @realvalue=@deathpenalty_realvalue-readparam(BaseExp);
+ @realvaljob=@deathpenalty_realvaljob-readparam(JobExp);
+
+ // GM Report
+ if (is_staff())
+ debugmes("Old values: %d %d Current Values: %d %d Real Difference: %d %d", @deathpenalty_realvalue, @deathpenalty_realvaljob, readparam(BaseExp), readparam(JobExp), @realvalue, @realvaljob);
+
+ // Revive and Warp you to save point or it'll have no effect
+ recovery(getcharid(3));
+ warp "Save", 0, 0;
+ addtimer(500, "#QuirinoHUB::OnNoPenaltyCommand2");
+ end;
+
+OnNoPenaltyCommand2:
+ // Restitute the lost experience
+ if (@deathpenalty_override == 1)
+ getexp @realvalue, @realvaljob;
+ else if (@deathpenalty_override == 2)
+ getexp @realvalue/2, @realvaljob/2;
+ else
+ dispbottom l("BUG, REPORT ME: QHUB PENALTY OVERRIDE INVALID SIGNAL @@", @deathpenalty_override);
+
+ // Clear temporary variables
+ @deathpenalty_override=0;
+ @deathpenalty_realvalue=0;
+ @deathpenalty_realvaljob=0;
+ @realvalue=0;
+ @realvaljob=0;
+ end;
+}
+
diff --git a/npc/001-8/mapflags.txt b/npc/001-8/mapflags.txt
new file mode 100644
index 0000000..5fcbceb
--- /dev/null
+++ b/npc/001-8/mapflags.txt
@@ -0,0 +1,5 @@
+001-8 mapflag zone MMO
+001-8 mapflag pvp
+001-8 mapflag pvp_noparty
+001-8 mapflag pvp_noguild
+001-8 mapflag nostorage