// TMW2 Scripts
// Author:
// 4144
// Jesusalva
// Description:
// Arena for Duels and PVP (003-13,31,31)
003-10,26,60,0 script Arnea NPC_ELF_F,{
npctalk3 l("Hello!");
L_Menu:
mes "";
mesn;
mesq l("Welcome to the Arena. Select your action");
menu
l("Create new arena"), L_NewArena,
l("Join existing arena"), L_JoinArena,
rif(is_staff(), l("Debug Information")), L_Debug,
l("Information"), L_Info,
l("Leave"), L_Quit;
L_NewArena:
mes "";
mesn;
if (Zeny < .price) {
mesq l("You need @@ GP to use this arena.", .price);
} else {
mesq l("Okay, which arena will you rent? Cost is @@ GP.", .price);
menu
rif(Zeny > 1000, l("Rent arena")), -,
l("Give Up"), L_Quit;
// Register to HTTable $@ARENAS (or override existing entry) your ID and a password
.@PASSWORD=getcharid(0)**1.137;
htput($@ARENAS, .@PASSWORD, getcharid(0));
// XXX - Important Note - XXX
// map name MUST be only 4 chars long (eg. "abcd") on char instances
.@ID=getcharid(0);
.@MAP$="AREN@"+str(.@ID);
// Check if arena was already created
if(has_instance2("003-10@"+.@ID)) {
mesn;
mesq l("You already purchased an arena, and password is @@", .@PASSWORD);
next;
goto L_Menu;
}
// Create the arena
.@INSTID = instance_create("003-10@"+(.@ID), getcharid(3), IOT_CHAR);
.@instanceMapName$ = instance_attachmap("003-13", .@INSTID, 0, .@MAP$);
instance_set_timeout(1800, 1800, .@INSTID);
instance_init(.@INSTID);
dispbottom l("Arena created, it can be used for 10 minutes.");
dispbottom l("Room password: @@", .@PASSWORD);
goto L_Menu;
L_JoinArena:
mes "";
mesn;
mesq l("Okay, to join an arena, you need the unique password. Leave blank if you don't know.");
input .@user_password;
.@m = htget($@ARENAS, .@user_password, -1);
if (.@m > 0) {
if(has_instance2("003-10@"+.@m)) {
warp "AREN@"+str(.@m), 31,31;
} else {
mes "";
mesn;
mesq l("Sorry, that arena is already closed.");
next;
mesn;
mesq l("All arenas stay open for only 30 minutes after being purchased.");
}
}
close;
L_Debug:
mes "npc name: " + .name$;
mes "npc ext name: " + .extname$;
mes "npc id: " + .id;
mes "npc parent id: " + .parent;
mes "npc src id: " + .srcId;
mes "char id 3: " + getcharid(3);
if (instance_id() >= 0)
mes "instance id: " + instance_id();
goto L_Menu;
L_Info:
mesn;
mesq lg("Hello darling.");
next;
mesq l("I am @@, and I take care of the Arena.", .name$);
next;
mesq l("Guards use it to spar against each other on friendly matches, to see who is stronger.");
next;
mesq l("We arranged a small underground room for that, while the Colliseum doesn't get done.");
next;
goto L_Menu;
L_Quit:
close;
OnInit:
.@npcId = getnpcid(0, .name$);
setunitdata(.@npcId, UDT_HEADTOP, Darkelm);
setunitdata(.@npcId, UDT_HEADMIDDLE, LegionCopperArmor);
setunitdata(.@npcId, UDT_HEADBOTTOM, JeansChaps);
setunitdata(.@npcId, UDT_WEAPON, RockKnife);
setunitdata(.@npcId, UDT_HAIRSTYLE, 14);
setunitdata(.@npcId, UDT_HAIRCOLOR, 18);
.sex = G_FEMALE;
.distance = 5;
//.alwaysVisible = true; // This is dumb, why Jesusalva put it here?
.price=1000;
// create hashtable
$@ARENAS = htnew();
end;
}
/*
mes (@menu-1);
.@ARENA_INSTID = instance_create("003-13@arenax"+(@menu), 0, IOT_NONE);
if (.@ARENA_INSTID >= 0)
{
mes "new instance id: " + str(.@ARENA_INSTID);
.@instanceMapName$ = instance_attachmap("003-13", .@ARENA_INSTID, 0, "003-13@a" + (@menu-1));
if (.@instanceMapName$ == "")
{
mes "Error: instance attach map error";
} else {
mes "Attached instance map name: " + .@instanceMapName$;
instance_set_timeout(1000000, 1000000, .@ARENA_INSTID);
instance_init(.@ARENA_INSTID);
set Zeny, Zeny-1000;
$@ARENA_INSTANCES[@menu-1]=getcharid(3);
}
} else {
mes l("An error happened.");
}
}
menu
rif($@ARENA_INSTANCES[0] > 0, l("Arena 1")), -,
rif($@ARENA_INSTANCES[1] > 0, l("Arena 2")), -,
rif($@ARENA_INSTANCES[2] > 0, l("Arena 3")), -,
rif($@ARENA_INSTANCES[3] > 0, l("Arena 4")), -,
rif($@ARENA_INSTANCES[4] > 0, l("Arena 5")), -,
l("Give Up"), L_Quit;
warp "003-13@a"+(@menu-1), 31,31;
set Zeny, Zeny-.price;
//instance_warpall("003-13@a"+@menu, 30, 31); // Only use while in instance
*/