// TMW2 Script // Author: // Ernando (Creator) // Jesusalva // Description: // Hunger Games™ version for The Mana World Brazil v2, created by Ernando Quirino. // Entrance to Hungry Quirin Arena // Variables: // EQ - Ernando Quirino // $@EQ_TIMER // < gettimetick(2): Can be open! // > gettimetick(2): Registration open! // = gettimetick(2): Event start! // $@EQ_STATUS // 0: Register open // 1: Fight happening // 2: Event finished 003-1,48,73,0 script Quirin NPC_ERNANDO,{ if (is_admin()) goto L_Hub; if ($@EQ_STATUS) goto L_NoSeason; if ($@EQ_STATUS == 0) { if ($@EQ_TIMER < gettimetick(2)) goto L_Hub; else goto L_Register; } npctalk3 l("Bug, report me!"); end; L_NoSeason: // If it finished, it can be done again in one hour if ($@EQ_STATUS == 2) { if ($@EQ_TIMER+3600 < gettimetick(2)) { $@EQ_STATUS=0; npctalkonce l("A sec... And... Done! I just finished cleaning it up!"); } else { npctalkonce l("I'm currently cleaning the arena, wait just @@ more.", FuzzyTime($@EQ_TIMER+3600)); } } else { npctalkonce l("I'm currently hosting a fight."); } end; L_Register: mesn; mesq l("Hello player, do you want to participate on HUNGRY QUIRIN event?!"); if ($@EQ_TIMER+180 < gettimetick(2)) mesc l("Event will start in @@", FuzzyTime($@EQ_TIMER)); else mesc l("Event will start in @@", FuzzyTime($@EQ_TIMER)), 1; next; select l("Yeah, sign me up!"), l("No, not at the moment."), l("Information"); switch (@menu) { case 1: goto L_SignUp; case 2: close; case 3: goto L_Info; } L_Info: mesn col(l("Hungry Quirin Arena Rules"), 3); mesc l("1- You must not be carrying anything with you."); mesc l("2- You must not use a cart. If you do, YOU WILL BE SEVERELY PENALIZED."); mesc l("3- All items from the Arena are from the Arena. You won't carry any of them back with you."); mesc l("4- Experience and Gold earned during this event can be kept."); next; mesn col(l("Hungry Quirin Arena Information"), 3); mesc l("1- Survive. If you die, you will gain nothing. And people want to kill you."); mesc l("2- Take everything you can find. You'll be warped without equip or healing items! Kill monsters to get some stuff too!"); mesc l("3- Trust nobody. There can be only one winner, and it must be you."); mesc l("4- Take Care. Wildlife can kill you too. There can be traps."); mesc l("5- Trust yourself. You will lose the moment you enter in panic. This arena is not for the weak-willed!"); next; goto L_Register; L_SignUp: // Player cannot be carrying anything getinventorylist; if(@inventorylist_count>=1) goto L_Full; getcartinventorylist(); if(@cartinventorylist_count>=1) goto L_Full; // Warp player if (rand2(1,2) == 1) warp "001-8", rand(42, 57), 42; else warp "001-8", rand(42, 57), 57; // Prevent further movements! setpcblock(PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_MOVE|PCBLOCK_COMMANDS, true); //dispbottom l("Stay ready!"); dispbottom l("##1DON'T MOVE until the signal. Stay ready! If you move, you will desync client!"); close; L_Full: mesn; mesq l("You cannot bring anything to the arena. Please put everything on the storage."); close; L_Hub: mesn; mesc l("Welcome to HUNGRY QUIRIN ARENA mangment panel."); next; mesn; mesq l("I am Quirino Voraz, and my arena is the coolest PVP Arena on all Mana Worlds."); mesq l("However, I need a tax to start, and you need to arrange players. There are no refunds."); next; mes l("Current player count: @@/5 must be online.", getusers(1)); mes l("Current arena player count: @@ on map. (Min. 3 to begin event)", getmapusers("001-8")); // Open event? Minimum 5 connections or GM_OVERRIDE flag. if ($@EQ_TIMER < gettimetick(2) && !$@EQ_STATUS && (getusers(1) >= 5 || $@GM_OVERRIDE)) { next; mesc l("Activate event?"), 1; mesc l("It'll cost @@ GP", .price); if (Zeny < .price) close; menuint l("NO"), -1, l("Give players 5 minutes"), 300, l("Give players 10 minutes"), 600, l("Give players 15 minutes"), 900, l("Give players 20 minutes"), 1200, l("Give players 25 minutes"), 1500, l("Give players 30 minutes"), 1800, l("NO"), -1; mes ""; if (@menuret > 0) { Zeny=Zeny-.price; $@EQ_TIMER=gettimetick(2)+@menuret; initnpctimer; setcells "001-8", 41, 58, 41, 43, 6, "qhubN"; setcells "001-8", 41, 58, 56, 58, 6, "qhubS"; announce("##1HUNGRY QUIRIN EVENT: ##3##BRegister is now open! Talk to Quirin, on Tulimshar Councilroom!", bc_all|bc_npc); channelmes("#world", strcharinfo(0)+" invites everyone to HUNGER QUIRIN PVP ARENA in Tulimshar. It'll start in "+FuzzyTime($@EQ_TIMER)); } close; } // Main Control menu. Not using l() on purpose. select rif($@EQ_STATUS == 0 && (getmapusers("001-8") >= 3 || $@GM_OVERRIDE) && is_admin(), "Start Event at once!"), rif($@EQ_STATUS == 1 && is_admin(), "Send wave of items and monsters!"), rif($@EQ_STATUS == 0 && $@GM_OVERRIDE && is_admin(), "[DEBUG] Join Event"), rif($@EQ_STATUS == 0 && $@GM_OVERRIDE && is_admin(), "[DEBUG] Join & Start Event Now"), "I'm done."; if (@menu == 1) donpcevent("#QuirinoHUB::OnStart"); if (@menu == 2) donpcevent("#QuirinoHUB::OnSendWave"); if (@menu == 3) goto L_Register; if (@menu == 4) { addtimer 1000, "Quirin::OnDebugReg"; goto L_SignUp; } close; OnDebugReg: donpcevent("#QuirinoHUB::OnStart"); end; // Each minute OnTimer60000: // We must autostart event now if ($@EQ_TIMER <= gettimetick(2)) { if (getmapusers("001-8") >= 3 || $@GM_OVERRIDE) { donpcevent("#QuirinoHUB::OnStart"); } else { delcells "qhubN"; delcells "qhubS"; maptimer("001-8", 1000, "#QuirinoHUB::OnCancel"); announce("##1HUNGRY QUIRIN EVENT: ##3##BCancelled due lack of players!", bc_all|bc_npc); } end; } mapannounce "003-1", "Hungry Quirin starts in " + FuzzyTime($@EQ_TIMER) + " and there are " + getmapusers("001-8") + "/3 player(s) standing by." , 0; mapannounce "001-8", "Hungry Quirin starts in " + FuzzyTime($@EQ_TIMER), 0; initnpctimer; end; OnInit: .price=570; .sex=G_MALE; .distance=5; end; } /* Blockwalls TileCondition and masks for setcells manaplus/src/enums/resources/map/blockmask.h WALL = 0x80, // 1000 0000 = 128 AIR = 0x04, // 0000 0100 = 4 WATER = 0x08, // 0000 1000 = 8 GROUND = 0x10, // 0001 0000 = 16 GROUNDTOP = 0x20, // 0010 0000 = 32 PLAYERWALL = 0x40, // 0100 0000 = 64 MONSTERWALL = 0x02 // 0000 0010 = 2 */