e_tower,81,105,0 script Tower Protection Stone 2_MONEMUS,{
.@party_id = getcharid(CHAR_ID_PARTY);
.@p_name$ = getpartyname(.@party_id);
.@md_name$ = _("Endless Tower");
.@etower_timer = questprogress(60200, PLAYTIME); // 1 week
.@etower_timer2 = questprogress(60201, PLAYTIME); // 4 hours
if (!instance_check_party(.@party_id, 2)) {
mes("Make or join a party with more than 1 member and try again.");
close();
}
if (!.@etower_timer) {
if (getcharid(CHAR_ID_CHAR) == getpartyleader(.@party_id, 2)) {
mes("Confirmed the party has been made. Would you like to reserve entrance to the Endless Tower?");
next();
.@str$ = sprintf(_$("Generate Dungeon %s"), .@md_name$);
switch (select(.@str$, "Enter the Dungeon", "Return to Alberta", "Cancel")) {
case 1:
.@instance = instance_create(.@md_name$, .@party_id);
if (.@instance < 0) {
mesf("Party Name: %s", .@p_name$);
mesf("Party Leader: %s", strcharinfo(PC_NAME));
mesf("^0000ff%s ^000000- Reservation Failed!", .@md_name$);
close();
}
mesf("^0000ff%s^000000 - Try to reserve", .@md_name$);
mes("After making a reservation, you have to talk to NPC behind and select the menu 'Enter the Dungeon' to enter the dungeon.");
for (.@i = 1; .@i <= 6; ++.@i) {
if (instance_attachmap(.@i + "@tower", .@instance) == "") {
mesf("^0000ff%s ^000000- Reservation Failed!", .@md_name$);
instance_destroy(.@instance);
close();
}
}
instance_set_timeout(14400, 300, .@instance);
instance_init(.@instance);
close();
case 2:
callsub(L_Enter, 0, 1, .@md_name$, .@p_name$);
case 3:
mes("I will move you to Alberta.");
close2();
warp("alberta", 223, 36);
end;
case 4:
close();
}
}
mes("If you have the dungeon generated already, you can enter it.");
next();
switch (select("Enter the Dungeon", "Return to Alberta", "Cancel")) {
case 1:
callsub(L_Enter, 1, 1, .@md_name$, .@p_name$);
case 2:
mes("I will move you to Alberta.");
close2();
warp("alberta", 223, 36);
end;
case 3:
end;
}
} else if (.@etower_timer == 1 && .@etower_timer2 == 2) {
.@dun_lim_time = etower_timer + 604800; // 1 week
.@dun_lim_time2 = etower_timer + 14400; // 4 hours
.@dun_cur_time = gettimetick(2);
.@dun_ent_t = .@dun_lim_time - .@dun_cur_time;
.@dun_h = .@dun_ent_t / 3600;
.@dun_m = (.@dun_ent_t - (.@dun_h * 3600)) / 60;
.@dun_s = .@dun_ent_t - ((.@dun_h * 3600) + (.@dun_m * 60));
mesf("Due to the tower's aftereffects, you cannot enter the dungeon right now, %d hours %d minutes %d seconds left to enter the next dungeon.", .@dun_h, .@dun_m, .@dun_s);
next();
mes("It is dangerous here. Let me move you to Alberta.");
close2();
warp("alberta", 223, 36);
end;
} else if (.@etower_timer == 1) {
mes("If you have the dungeon generated already, you can enter it.");
next();
switch (select("Enter the Dungeon", "Return to Alberta", "Cancel")) {
case 1:
callsub(L_Enter, 0, 0, .@md_name$, .@p_name$);
case 2:
mes("I will move you to Alberta.");
close2();
warp("alberta", 223, 36);
end;
case 3:
break;
}
close();
} else {
etower_timer = 0;
erasequest(60200);
erasequest(60201);
mes("^0000ffThe records and after effects related to the Endless Tower have been removed. You can generate and enter the Endless Tower again.^000000");
close();
}
L_Enter:
if (has_instance("1@tower") == "") {
mesf("The memorial dungeon %s does not exist.", getarg(2));
mes("The party leader did not generate the dungeon yet.");
close();
} else {
mapannounce("e_tower", sprintf(_$("%s of the party, %s, is entering the dungeon, Endless Tower."), strcharinfo(PC_NAME), getarg(3)), bc_map, C_SPRINGGREEN, FW_NORMAL, 12);
if (getarg(1)) {
etower_timer = gettimetick(2);
setquest(60200);
setquest(60201);
}
warp("1@tower", 52, 354);
if (getarg(0) == 0)
close();
else
end;
}
}
e_tower,30,30,2 script Huge Vortex CLEAR_NPC,2,2,{
end;
OnTouch:
mapannounce("e_tower", sprintf(_$("[ %s ], seems to be engulfed by a huge vortex"), strcharinfo(PC_NAME)), bc_map, C_SPRINGGREEN, FW_NORMAL, 12);
warp("alberta", 223, 36);
end;
}
// Original name: "#102Administrator Mode104"
e_tower,1,1,2 script #102Administrator Mode CLEAR_NPC,{
callfunc("F_GM_NPC");
mes("Please enter the password.");
.@i = callfunc("F_GM_NPC", "dmc2008", 1);
next();
if (.@i == 1) {
switch (select("Generate Purification Stone", "Remove Purification Stone", "Cancel")) {
case 1:
mes("Create the Purification Stone that stays for 30 minutes.");
donpcevent("Purification Stone#et1::OnEnable");
break;
case 2:
mes("Destroy the Purification Stone immediately");
donpcevent("Purification Stone#et1::OnDisable");
break;
case 3:
mes("You have canceled it.");
break;
}
close();
} else {
mes("Enter the password exactly.");
close();
}
}
e_tower,69,117,4 script Purification Stone#et1 2_MONEMUS,{
etower_timer = 0;
mes("^0000ffThe records and aftereffects related to the Endless Tower have been removed. You can generate and enter the Endless Tower again.^000000");
close();
OnInit:
disablenpc("Purification Stone#et1");
end;
OnEnable:
initnpctimer();
end;
OnDisable:
stopnpctimer();
disablenpc("Purification Stone#et1");
end;
OnTimer1000:
enablenpc("Purification Stone#et1");
end;
OnTimer1740000:
mapannounce("e_tower", _("The Purification Stone will be destroyed in one minute."), bc_map, C_SPRINGGREEN);
end;
OnTimer1800000:
disablenpc("Purification Stone#et1");
end;
}
e_tower,151,185,4 script Purification Stone#et2 CLEAR_NPC,{
callfunc("F_GM_NPC");
etower_timer = 0;
mes("^0000ffThe records and aftereffects related to the Endless Tower have been removed. You can generate and enter the Endless Tower again.^000000");
close2();
warp("e_tower", 75, 108);
end;
}