// 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.
// Entrance to Hungry Quirin Arena
// Variables:
// $@EQ_STATUS
// 0: Register open
// 1: Fight happening
// 2: Event finished
003-10,27,60,0 script Quirin NPC_ERNANDO,{
if (is_gm()) goto L_Hub;
if ($EVENT$ != "Hunger") goto L_NoSeason;
if ($@EQ_STATUS == 0)
goto L_Register;
hello;
end;
L_NoSeason:
npctalkonce l("Heya!");
end;
L_Register:
mesn;
mesq l("Hello player, do you want to participate on HUNGRY QUIRIN event?!");
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 (rand(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_ITEM|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.");
mesc l("Current Event: "+$EVENT$);
mesc l("Event stage: "+$@EQ_STATUS);
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 ($EVENT$ == "" && (getusers(1) >= 5 || $@GM_OVERRIDE)) {
next;
mesc l("Activate event?"), 1;
if (askyesno() == ASK_YES) {
$EVENT$="Hunger";
setcells "001-8", 41, 58, 41, 43, 5, "qhubN";
setcells "001-8", 41, 58, 56, 58, 5, "qhubS";
announce("##1HUNGRY QUIRIN EVENT: ##3##BRegister is now open! Talk to Quirin, on Tulimshar Guardhouse!", bc_all|bc_npc);
}
close;
}
// Main Control menu. Not using l() on purpose.
select
rif($@EQ_STATUS == 0 && (getmapusers("001-8") >= 3 || $@GM_OVERRIDE), "Start Event!"),
rif($@EQ_STATUS == 1, "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"),
"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;
OnInit:
.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
*/