|
@@ -1,37 +1,188 @@
|
|
|
//===== rAthena Script =======================================
|
|
|
//= PvP NPCs
|
|
|
-//===== By: ==================================================
|
|
|
-//= kobra_k88; L0ne_W0lf
|
|
|
-//===== Current Version: =====================================
|
|
|
-//= 1.5
|
|
|
-//===== Compatible With: =====================================
|
|
|
+//===== By: ==================================================
|
|
|
+//= kobra_k88; L0ne_W0lf, Elias (og2)
|
|
|
+//===== Current Version: =====================================
|
|
|
+//= 1.6
|
|
|
+//===== Compatible With: =====================================
|
|
|
//= rAthena SVN
|
|
|
-//===== Description: =========================================
|
|
|
-//= [Aegis Conversion]
|
|
|
+//===== Description: =========================================
|
|
|
//= PvP NPCs that are found in the Inns in major cities.
|
|
|
//= Includes Yoyo Mode, Nightmare Mode, and Event Mode
|
|
|
-//=
|
|
|
-//= Breakdown of function "F_PVPNarrator"
|
|
|
-//= arg(0): Map to save player on
|
|
|
-//= arg(1): X position on getarg(0) map to save player
|
|
|
-//= arg(2): Y position on getarg(0) map to save player
|
|
|
//===== Additional Comments: =================================
|
|
|
//= 1.1 Fixed arena names for Nightmare mode. Added room limit
|
|
|
//= check.[kobra_k88]
|
|
|
//= 1.2 Fixed the bug that you aways savepoint in geffen.[shadowlady]
|
|
|
//= 1.2a Added PvP Narrator function. Using args for Fight
|
|
|
//= Square Helpers. [kobra_k88]
|
|
|
-//= 1.3 Rescripted to Aegis 10.3 standards. [L0ne_W0lf]
|
|
|
+//= 1.3 Rescripted to the official 10.3 standards. [L0ne_W0lf]
|
|
|
//= Removed all receptioned for Yoyo mode, with the
|
|
|
//= exception of the "Free for all" mode.
|
|
|
//= Added PVP event NPCs.
|
|
|
//= 1.4 Corrected NPC names to fall within proper restrictions. [L0ne_W0lf]
|
|
|
//= 1.5 Duplicates now spawn from floating NPCs. [L0ne_W0lf]
|
|
|
-//============================================================
|
|
|
+//= 1.6 Narrators/GateKeepers,etc. Translated from the Official 2011 [Elias]
|
|
|
+//============================================================
|
|
|
+morocc_in,144,138,4 script PVP Narrator::pvpe 84,{
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "Hello and welcome!";
|
|
|
+ mes "I am in charge of";
|
|
|
+ mes "explaining the PVP Mode.";
|
|
|
+ mes "I am the PVP Narrator!";
|
|
|
+ next;
|
|
|
+ switch(select("What is PVP?","What are the PVP Modes?","What are the rules for PVP?","Save Position.","End Dialog."))
|
|
|
+ {
|
|
|
+ case 1:
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "In short form";
|
|
|
+ mes "PVP means,";
|
|
|
+ mes "' Player VS Player Mode '";
|
|
|
+ mes "It's a unique place for people";
|
|
|
+ mes "To duel with each other.";
|
|
|
+ next;
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "Just tell the";
|
|
|
+ mes "^3355FFGate Keeper^000000";
|
|
|
+ mes "That you want to try. He will";
|
|
|
+ mes "let you into the PVP square.";
|
|
|
+ next;
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "But, You need to be at";
|
|
|
+ mes "least level 31. And you";
|
|
|
+ mes "must pay the 500 zeny";
|
|
|
+ mes "entrance fee in order to";
|
|
|
+ mes "To enter a PVP Fight Square.";
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "When you are qualified, You";
|
|
|
+ mes "can choose one of two Modes.";
|
|
|
+ mes "Yoyo Mode, Or";
|
|
|
+ mes "Nightmare Mode.";
|
|
|
+ next;
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "Yoyo Mode is risk free.";
|
|
|
+ mes "You can experience PVP";
|
|
|
+ mes "without any restriction or";
|
|
|
+ mes "punishment. It is recommended";
|
|
|
+ mes "that you practice your skills";
|
|
|
+ mes "here before you move on.";
|
|
|
+ next;
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "Nightmare Mode is very";
|
|
|
+ mes "dangerous! Please use caution.";
|
|
|
+ mes "You will lose some of your real";
|
|
|
+ mes "EXP when you are defeated. And";
|
|
|
+ mes "There is a small chance that";
|
|
|
+ mes "you will drop some equipment.";
|
|
|
+ next;
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "However, if you win, the";
|
|
|
+ mes "rewards can be great!";
|
|
|
+ mes "To avoid misunderstanding.";
|
|
|
+ mes "You should think it over";
|
|
|
+ mes "twice before you go there...";
|
|
|
+ mes "Good Luck!";
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "Each of the Fight squares";
|
|
|
+ mes "have a row of Narrators to";
|
|
|
+ mes "choose from based on your";
|
|
|
+ mes "qualifications.";
|
|
|
+ next;
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "Each Narrator will ask";
|
|
|
+ mes "which of the five PVP maps";
|
|
|
+ mes "you wish to go to.";
|
|
|
+ mes "Choose, and go in!";
|
|
|
+ next;
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "Each map has a limitation on";
|
|
|
+ mes "the number of people who can";
|
|
|
+ mes "participate. So you will see";
|
|
|
+ mes "figures in the corner showing";
|
|
|
+ mes "'Attendee/total'.";
|
|
|
+ next;
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "Also, there is a hidden EXP";
|
|
|
+ mes "value in PVP mode. This EXP";
|
|
|
+ mes "score will only apply inside";
|
|
|
+ mes "of the PVP zone, so do not";
|
|
|
+ mes "worry.";
|
|
|
+ next;
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "Every player's EXP at the";
|
|
|
+ mes "beginning is usually 5 points.";
|
|
|
+ mes "If you win, you will";
|
|
|
+ mes "increse your EXP by 1 point";
|
|
|
+ next;
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "In the same way, when you";
|
|
|
+ mes "lose... Your EXP will";
|
|
|
+ mes "drop by 5 points.";
|
|
|
+ mes "So be careful!";
|
|
|
+ next;
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "When you are defeated";
|
|
|
+ mes "And your EXP is equal";
|
|
|
+ mes "to or less than 0,";
|
|
|
+ mes "You will be removed from PVP";
|
|
|
+ mes "And your duel is finished!";
|
|
|
+ next;
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "However, If your EXP is more";
|
|
|
+ mes "than 0. You can still get help";
|
|
|
+ mes "Through other players healing...";
|
|
|
+ mes "Do you get it?";
|
|
|
+ next;
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "The fighting commands inside of";
|
|
|
+ mes "PVP Are the same as the normal.";
|
|
|
+ mes "All the basic controls are the";
|
|
|
+ mes "same.";
|
|
|
+ next;
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "However, there is one thing...";
|
|
|
+ mes "Within the PVP fight square,";
|
|
|
+ mes "And in the PVP fighting zones";
|
|
|
+ mes "You cannot save your position.";
|
|
|
+ mes "Remember well... These rules";
|
|
|
+ mes "can help to ensure your victory.";
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "Position saved...";
|
|
|
+ mes "Successfully.";
|
|
|
+ mes "Thank you very much, We";
|
|
|
+ mes "will see you again soon.";
|
|
|
+ if(strnpcinfo(4) == "morocc_in") { savepoint "morocc_in",141,139; }
|
|
|
+ if(strnpcinfo(4) == "alberta_in") { savepoint "alberta_in",22,148; }
|
|
|
+ if(strnpcinfo(4) == "prt_in") { savepoint "prt_in",54,137; }
|
|
|
+ if(strnpcinfo(4) == "geffen_in") { savepoint "geffen_in",70,59; }
|
|
|
+ if(strnpcinfo(4) == "payon_in01") { savepoint "payon_in01",142,46; }
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ mes "[PVP Narrator]";
|
|
|
+ mes "In this war between Monsters";
|
|
|
+ mes "and Humans. This competition";
|
|
|
+ mes "between people, The PVP Mode!";
|
|
|
+ mes "Encourages us all to become";
|
|
|
+ mes "stronger. Come again.";
|
|
|
+ mes "We welcome your challenge!";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+close;
|
|
|
+}
|
|
|
|
|
|
-// Floating NPC
|
|
|
-//============================================================
|
|
|
-- script Gate Keeper#dummy::PVPGateKeeper -1,{
|
|
|
+//PVP Narrator's Duplicates
|
|
|
+alberta_in,22,146,4 duplicate(pvpe) PVP Narrator#pe1 84
|
|
|
+prt_in,56,140,4 duplicate(pvpe) PVP Narrator#pe2 84
|
|
|
+geffen_in,67,63,4 duplicate(pvpe) PVP Narrator#pe3 84
|
|
|
+payon_in01,142,50,4 duplicate(pvpe) PVP Narrator#pe4 84
|
|
|
+geffen_in,67,63,4 duplicate(pvpe) PVP Narrator#pe5 84
|
|
|
+
|
|
|
+morocc_in,144,142,4 script Gate Keeper::gkut 83,{
|
|
|
mes "[Gate Keeper]";
|
|
|
mes "Glad to be of service.";
|
|
|
mes "I will open the PVP fight";
|
|
@@ -40,36 +191,67 @@
|
|
|
mes "modes or rules, Please ask";
|
|
|
mes "the Narrator...";
|
|
|
next;
|
|
|
- switch(select("^FF5533' PvP Nightmare Mode'^000000:^3355FF' PvP Yoyo Mode'^000000:^3355FF' PvP Event Mode'^000000:Quit")) {
|
|
|
- case 1:
|
|
|
- mes "[Gate Keeper]";
|
|
|
- mes "I am sorry, but currently the Nightmare mode service is not available.";
|
|
|
- mes "Please use the Yoyo mode instead. We apologize for the inconvenience.";
|
|
|
- close;
|
|
|
- case 2:
|
|
|
- mes "[Gate Keeper]";
|
|
|
- mes "The admission fee is 500 Zeny.";
|
|
|
- mes "Do you want to move";
|
|
|
- mes "to the Yoyo Mode";
|
|
|
- mes "fight square?";
|
|
|
- next;
|
|
|
- switch(select("Move:Cancel")) {
|
|
|
+ switch(select("^FF5533' PvP Nightmare Mode'^000000","^3355FF' PvP Yoyo Mode'^000000","^3355FF' PvP Event Mode'^000000","Quit"))
|
|
|
+ {
|
|
|
case 1:
|
|
|
- if (Zeny > 499 && BaseLevel > 30) {
|
|
|
- set zeny,zeny-500;
|
|
|
- warp "pvp_y_room",51,23;
|
|
|
- end;
|
|
|
+ mes "[Gate Keeper]";
|
|
|
+ mes "I am sorry, but currently the Nightmare mode service is not available.";
|
|
|
+ mes "Please use the Yoyo mode instead. We apologize for the inconvenience.";
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ mes "[Gate Keeper]";
|
|
|
+ mes "The admission fee is 500 Zeny.";
|
|
|
+ mes "Do you want to move";
|
|
|
+ mes "to the Yoyo Mode";
|
|
|
+ mes "fight square?";
|
|
|
+ next;
|
|
|
+ switch(select("Move","Cancel")) {
|
|
|
+ case 1:
|
|
|
+ if ((Zeny > 499) && (BaseLevel > 30)) {
|
|
|
+ set Zeny, Zeny - 500;
|
|
|
+ warp "pvp_y_room",51,23;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ mes "[Gate Keeper]";
|
|
|
+ mes "Excuse me, but";
|
|
|
+ mes "did you not come prepared?";
|
|
|
+ mes "Double check that you have the";
|
|
|
+ mes "500 Zeny entrance fee, and";
|
|
|
+ mes "that you are at least level 31!";
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ mes "[Gate Keeper]";
|
|
|
+ mes "In this war between Monsters";
|
|
|
+ mes "and Humans. This competition";
|
|
|
+ mes "between people, The PVP Mode!";
|
|
|
+ mes "Encourages us all to become";
|
|
|
+ mes "stronger. Come again.";
|
|
|
+ mes "We welcome your challenge!";
|
|
|
+ break;
|
|
|
}
|
|
|
- else {
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ mes "[Gate Keeper]";
|
|
|
+ mes "Welcome";
|
|
|
+ mes "Please double check";
|
|
|
+ mes "That you have the admission or viewing ticket!";
|
|
|
+ next;
|
|
|
+ if ((countitem(7028) == 0) && (countitem(7029) == 0))
|
|
|
+ {
|
|
|
mes "[Gate Keeper]";
|
|
|
- mes "Excuse me, but";
|
|
|
- mes "did you not come prepared?";
|
|
|
- mes "Double check that you have the";
|
|
|
- mes "500 Zeny entrance fee, and";
|
|
|
- mes "that you are at least level 31!";
|
|
|
+ mes "Eh? You don't have it? Then I";
|
|
|
+ mes "am sorry, this fight square is";
|
|
|
+ mes "only for people who have";
|
|
|
+ mes "admission or viewing tickets.";
|
|
|
+ mes "You cannot come in without it.";
|
|
|
close;
|
|
|
}
|
|
|
- case 2:
|
|
|
+ mes "[Gate Keeper]";
|
|
|
+ mes "Yes, thank you for participating. Have fun!";
|
|
|
+ warp "pvp_room",51,23;
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
mes "[Gate Keeper]";
|
|
|
mes "In this war between Monsters";
|
|
|
mes "and Humans. This competition";
|
|
@@ -77,324 +259,133 @@
|
|
|
mes "Encourages us all to become";
|
|
|
mes "stronger. Come again.";
|
|
|
mes "We welcome your challenge!";
|
|
|
- close;
|
|
|
- }
|
|
|
- case 3:
|
|
|
- mes "[Gate Keeper]";
|
|
|
- mes "Welcome";
|
|
|
- mes "Please double check";
|
|
|
- mes "That you have the admission or viewing ticket!";
|
|
|
- next;
|
|
|
- if (countitem(7028) == 0 && countitem(7029) == 0) {
|
|
|
- mes "[Gate Keeper]";
|
|
|
- mes "Eh? You don't have it? Then I";
|
|
|
- mes "am sorry, this fight square is";
|
|
|
- mes "only for people who have";
|
|
|
- mes "admission or viewing tickets.";
|
|
|
- mes "You cannot come in without it.";
|
|
|
- close;
|
|
|
- }
|
|
|
- mes "[Gate Keeper]";
|
|
|
- mes "Yes, thank you for participating. Have fun!";
|
|
|
- close2;
|
|
|
- warp "pvp_room",51,23;
|
|
|
- end;
|
|
|
- case 4:
|
|
|
- mes "[Gate Keeper]";
|
|
|
- mes "In this war between Monsters";
|
|
|
- mes "and Humans. This competition";
|
|
|
- mes "between people, The PVP Mode!";
|
|
|
- mes "Encourages us all to become";
|
|
|
- mes "stronger. Come again.";
|
|
|
- mes "We welcome your challenge!";
|
|
|
- close;
|
|
|
+ break;
|
|
|
}
|
|
|
+close;
|
|
|
}
|
|
|
|
|
|
-// Morroc
|
|
|
-//============================================================
|
|
|
-morocc_in,144,138,4 script PVPNarrator#moc 84,{
|
|
|
- callfunc "F_PVPNarrator","morocc_in",141,139;
|
|
|
-}
|
|
|
-
|
|
|
-morocc_in,144,142,4 duplicate(PVPGateKeeper) Gate Keeper#moc 83,{
|
|
|
-
|
|
|
-
|
|
|
-// Alberta
|
|
|
-//============================================================
|
|
|
-alberta_in,22,146,4 script PVP Narrator#alb 84,{
|
|
|
- callfunc "F_PVPNarrator","alberta_in",22,148;
|
|
|
-}
|
|
|
-
|
|
|
-alberta_in,26,146,4 duplicate(PVPGateKeeper) Gate Keeper#alb 83
|
|
|
-
|
|
|
-// Prontera
|
|
|
-//============================================================
|
|
|
-prt_in,56,140,4 script PVPNarrator#prt 84,{
|
|
|
- callfunc "F_PVPNarrator","prt_in",54,137;
|
|
|
-}
|
|
|
-
|
|
|
-prt_in,52,140,4 duplicate(PVPGateKeeper) Gate Keeper#prt 83
|
|
|
-
|
|
|
-// Geffen
|
|
|
-//============================================================
|
|
|
-geffen_in,67,63,4 script PVPNarrator#gef 84,{
|
|
|
- callfunc "F_PVPNarrator","geffen_in",70,59;
|
|
|
-}
|
|
|
-
|
|
|
-geffen_in,63,63,4 duplicate(PVPGateKeeper) Gate Keeper#gef 83
|
|
|
-
|
|
|
-// Payon
|
|
|
-//============================================================
|
|
|
-payon_in01,142,50,4 script PVPNarrator#pay 84,{
|
|
|
- callfunc "F_PVPNarrator","payon_in01",142,46;
|
|
|
-}
|
|
|
-
|
|
|
-payon_in01,140,53,4 duplicate(PVPGateKeeper) Gate Keeper#pay 83
|
|
|
-
|
|
|
-
|
|
|
-// PVP Yoyo Mode Staff
|
|
|
-//============================================================
|
|
|
-pvp_y_room,86,85,4 script Fight Square Reception#1 105,{
|
|
|
- set .@mapcount_1,getmapusers("pvp_y_8-1");
|
|
|
- set .@mapcount_2,getmapusers("pvp_y_8-2");
|
|
|
- set .@mapcount_3,getmapusers("pvp_y_8-3");
|
|
|
- set .@mapcount_4,getmapusers("pvp_y_8-4");
|
|
|
- set .@mapcount_5,getmapusers("pvp_y_8-5");
|
|
|
- while(1) {
|
|
|
- switch(select("Prontera [ "+.@mapcount_1+" / 128 ]:Izlude [ "+.@mapcount_2+" / 128 ]:Payon [ "+.@mapcount_3+" / 128 ]:Alberta [ "+.@mapcount_4+" / 128 ]:Morroc [ "+.@mapcount_5+" / 128 ]:Cancel")) {
|
|
|
+//Gate Keeper's Duplicates
|
|
|
+alberta_in,26,146,4 duplicate(gkut) Gate Keeper#gke1 83
|
|
|
+prt_in,52,140,4 duplicate(gkut) Gate Keeper#gke2 83
|
|
|
+geffen_in,63,63,4 duplicate(gkut) Gate Keeper#gke3 83
|
|
|
+payon_in01,140,53,4 duplicate(gkut) Gate Keeper#gke4 83
|
|
|
+
|
|
|
+//Fight square Reception Staff (Locations below)
|
|
|
+- script FSRS::fsr 105,{
|
|
|
+if(strnpcinfo(4) == "pvp_y_room") {
|
|
|
+ set .@mapc1, getmapusers("pvp_y_8-1");
|
|
|
+ set .@mapc2, getmapusers("pvp_y_8-2");
|
|
|
+ set .@mapc3, getmapusers("pvp_y_8-3");
|
|
|
+ set .@mapc4, getmapusers("pvp_y_8-4");
|
|
|
+ set .@mapc5, getmapusers("pvp_y_8-5");
|
|
|
+ set .@showc1$, "Prontera [ "+.@mapc1+" / 128 ]";
|
|
|
+ set .@showc2$, "Izlude [ "+.@mapc2+" / 128 ]";
|
|
|
+ set .@showc3$, "Payon [ "+.@mapc3+" / 128 ]";
|
|
|
+ set .@showc4$, "Alberta [ "+.@mapc4+" / 128 ]";
|
|
|
+ set .@showc5$, "Morroc [ "+.@mapc5+" / 128 ]";
|
|
|
+ set .@showcexit$, "Cancel.";
|
|
|
+ switch(select(.@showc1$,.@showc2$,.@showc3$,.@showc4$,.@showc5$,.@showcexit$)) {
|
|
|
case 1:
|
|
|
- callsub S_CheckPVPRoom,.@mapcount_1,"pvp_y_8-1";
|
|
|
- break;
|
|
|
+ if (.@mapc1 >= 128) {
|
|
|
+ mes "[PVP Fight Square Reception Staff]";
|
|
|
+ mes "This map is currently full.";
|
|
|
+ } else { warp "pvp_y_8-1",0,0; }
|
|
|
+ break;
|
|
|
case 2:
|
|
|
- callsub S_CheckPVPRoom,.@mapcount_2,"pvp_y_8-2";
|
|
|
- break;
|
|
|
+ if (.@mapc2 >= 128) {
|
|
|
+ mes "[PVP Fight Square Reception Staff]";
|
|
|
+ mes "This map is currently full.";
|
|
|
+ } else { warp "pvp_y_8-2",0,0; }
|
|
|
+ break;
|
|
|
case 3:
|
|
|
- callsub S_CheckPVPRoom,.@mapcount_3,"pvp_y_8-3";
|
|
|
- break;
|
|
|
+ if (.@mapc3 >= 128) {
|
|
|
+ mes "[PVP Fight Square Reception Staff]";
|
|
|
+ mes "This map is currently full.";
|
|
|
+ } else { warp "pvp_y_8-3",0,0; }
|
|
|
+ break;
|
|
|
case 4:
|
|
|
- callsub S_CheckPVPRoom,.@mapcount_4,"pvp_y_8-4";
|
|
|
- break;
|
|
|
+ if (.@mapc4 >= 128) {
|
|
|
+ mes "[PVP Fight Square Reception Staff]";
|
|
|
+ mes "This map is currently full.";
|
|
|
+ } else { warp "pvp_y_8-4",0,0; }
|
|
|
+ break;
|
|
|
case 5:
|
|
|
- callsub S_CheckPVPRoom,.@mapcount_5,"pvp_y_8-5";
|
|
|
- break;
|
|
|
+ if (.@mapc5 >= 128) {
|
|
|
+ mes "[PVP Fight Square Reception Staff]";
|
|
|
+ mes "This map is currently full.";
|
|
|
+ } else { warp "pvp_y_8-5",0,0; }
|
|
|
+ break;
|
|
|
case 6:
|
|
|
- close;
|
|
|
+ break;
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
-OnInit:
|
|
|
- waitingroom "Free For All",0;
|
|
|
- end;
|
|
|
-
|
|
|
-S_CheckPVPRoom:
|
|
|
- if (getarg(0) >= 128) {
|
|
|
- mes "[PVP Fight Square Reception Staff]";
|
|
|
- mes "This map is currently full.";
|
|
|
- next;
|
|
|
- return;
|
|
|
- }
|
|
|
- else {
|
|
|
- warp getarg(1),0,0;
|
|
|
- end;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-// PVP Nightmare Mode Staff
|
|
|
-//============================================================
|
|
|
-pvp_n_room,30,85,4 script Fight Square Reception#2 105,{
|
|
|
- set .@mapcount_1,getmapusers("pvp_n_8-1");
|
|
|
- set .@mapcount_2,getmapusers("pvp_n_8-2");
|
|
|
- set .@mapcount_3,getmapusers("pvp_n_8-3");
|
|
|
- set .@mapcount_4,getmapusers("pvp_n_8-4");
|
|
|
- set .@mapcount_5,getmapusers("pvp_n_8-5");
|
|
|
- while(1) {
|
|
|
- switch(select("Sandwich [ "+.@mapcount_1+" / 64 ]:Lock on [ "+.@mapcount_2+" / 32 ]:Four Room [ "+.@mapcount_3+" / 32 ]:Under cross [ "+.@mapcount_4+" / 32 ]:Compass Room [ "+.@mapcount_5+" / 32 ]:Cancel")) {
|
|
|
+close;
|
|
|
+ } else {
|
|
|
+ set .@mapc1, getmapusers("pvp_n_8-1");
|
|
|
+ set .@mapc2, getmapusers("pvp_n_8-2");
|
|
|
+ set .@mapc3, getmapusers("pvp_n_8-3");
|
|
|
+ set .@mapc4, getmapusers("pvp_n_8-4");
|
|
|
+ set .@mapc5, getmapusers("pvp_n_8-5");
|
|
|
+ set .@showc1$, "Sandwich [ "+.@mapc1+" / 64 ]";
|
|
|
+ set .@showc2$, "Lock on [ "+.@mapc2+" / 32 ]";
|
|
|
+ set .@showc3$, "Four Room [ "+.@mapc3+" / 32 ]";
|
|
|
+ set .@showc4$, "Under cross [ "+.@mapc4+" / 32 ]";
|
|
|
+ set .@showc5$, "Compass Room [ "+.@mapc5+" / 32 ]";
|
|
|
+ set .@showcexit$, "Cancel.";
|
|
|
+ switch(select(.@showc1$,.@showc2$,.@showc3$,.@showc4$,.@showc5$,.@showcexit$)) {
|
|
|
case 1:
|
|
|
- callsub S_CheckPVPRoom,.@mapcount_1,"pvp_n_8-1",64;
|
|
|
- break;
|
|
|
+ if (.@mapc1 >= 64) {
|
|
|
+ mes "[PVP Fight Square Reception Staff]";
|
|
|
+ mes "This map is currently full.";
|
|
|
+ } else { warp "pvp_n_8-1",0,0; }
|
|
|
+ break;
|
|
|
case 2:
|
|
|
- callsub S_CheckPVPRoom,.@mapcount_2,"pvp_n_8-2",32;
|
|
|
- break;
|
|
|
+ if (.@mapc2 >= 64) {
|
|
|
+ mes "[PVP Fight Square Reception Staff]";
|
|
|
+ mes "This map is currently full.";
|
|
|
+ } else { warp "pvp_n_8-2",0,0; }
|
|
|
+ break;
|
|
|
case 3:
|
|
|
- callsub S_CheckPVPRoom,.@mapcount_3,"pvp_n_8-3",32;
|
|
|
- break;
|
|
|
+ if (.@mapc3 >= 64) {
|
|
|
+ mes "[PVP Fight Square Reception Staff]";
|
|
|
+ mes "This map is currently full.";
|
|
|
+ } else { warp "pvp_n_8-3",0,0; }
|
|
|
+ break;
|
|
|
case 4:
|
|
|
- callsub S_CheckPVPRoom,.@mapcount_4,"pvp_n_8-4",32;
|
|
|
- break;
|
|
|
+ if (.@mapc4 >= 64) {
|
|
|
+ mes "[PVP Fight Square Reception Staff]";
|
|
|
+ mes "This map is currently full.";
|
|
|
+ } else { warp "pvp_n_8-4",0,0; }
|
|
|
+ break;
|
|
|
case 5:
|
|
|
- callsub S_CheckPVPRoom,.@mapcount_5,"pvp_n_8-5",32;
|
|
|
- break;
|
|
|
+ if (.@mapc5 >= 64) {
|
|
|
+ mes "[PVP Fight Square Reception Staff]";
|
|
|
+ mes "This map is currently full.";
|
|
|
+ } else { warp "pvp_n_8-5",0,0; }
|
|
|
+ break;
|
|
|
case 6:
|
|
|
- close;
|
|
|
+ break;
|
|
|
}
|
|
|
- }
|
|
|
+close;
|
|
|
+}
|
|
|
|
|
|
OnInit:
|
|
|
- waitingroom "Free For All",0;
|
|
|
- end;
|
|
|
-
|
|
|
-S_CheckPVPRoom:
|
|
|
- if (getarg(0) >= getarg(2)) {
|
|
|
- mes "[PVP Fight Square Reception Staff]";
|
|
|
- mes "This map is currently full.";
|
|
|
- next;
|
|
|
- return;
|
|
|
- }
|
|
|
- else {
|
|
|
- warp getarg(1),0,0;
|
|
|
- end;
|
|
|
- }
|
|
|
+ waitingroom "Free for all",0;
|
|
|
+end;
|
|
|
}
|
|
|
|
|
|
-// Function
|
|
|
-//============================================================
|
|
|
-function script F_PVPNarrator {
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "Hello and welcome!";
|
|
|
- mes "I am in charge of";
|
|
|
- mes "explaining the PVP Mode.";
|
|
|
- mes "I am the PVP Narrator!";
|
|
|
- next;
|
|
|
- switch(select("What is PVP?:What are the PVP Modes?:What are the rules for PVP?:Save Position.:End Dialog.")) {
|
|
|
- case 1:
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "In short form";
|
|
|
- mes "PVP means,";
|
|
|
- mes "' Player VS Player Mode '";
|
|
|
- mes "It's a unique place for people";
|
|
|
- mes "To duel with each other.";
|
|
|
- next;
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "Just tell the";
|
|
|
- mes "^3355FFGate Keeper^000000";
|
|
|
- mes "That you want to try. He will";
|
|
|
- mes "let you into the PVP square.";
|
|
|
- next;
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "But, You need to be at";
|
|
|
- mes "least level 31. And you";
|
|
|
- mes "must pay the 500 zeny";
|
|
|
- mes "entrance fee in order to";
|
|
|
- mes "To enter a PVP Fight Square.";
|
|
|
- close;
|
|
|
- case 2:
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "When you are qualified, You";
|
|
|
- mes "can choose one of two Modes.";
|
|
|
- mes "Yoyo Mode, Or";
|
|
|
- mes "Nightmare Mode.";
|
|
|
- next;
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "Yoyo Mode is risk free.";
|
|
|
- mes "You can experience PVP";
|
|
|
- mes "without any restriction or";
|
|
|
- mes "punishment. It is recommended";
|
|
|
- mes "that you practice your skills";
|
|
|
- mes "here before you move on.";
|
|
|
- next;
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "Nightmare Mode is very";
|
|
|
- mes "dangerous! Please use caution.";
|
|
|
- mes "You will lose some of your real";
|
|
|
- mes "EXP when you are defeated. And";
|
|
|
- mes "There is a small chance that";
|
|
|
- mes "you will drop some equipment.";
|
|
|
- next;
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "However, if you win, the";
|
|
|
- mes "rewards can be great!";
|
|
|
- mes "To avoid misunderstanding.";
|
|
|
- mes "You should think it over";
|
|
|
- mes "twice before you go there...";
|
|
|
- mes "Good Luck!";
|
|
|
- close;
|
|
|
- case 3:
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "Each of the Fight squares";
|
|
|
- mes "have a row of Narrators to";
|
|
|
- mes "choose from based on your";
|
|
|
- mes "qualifications.";
|
|
|
- next;
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "Each Narrator will ask";
|
|
|
- mes "which of the five PVP maps";
|
|
|
- mes "you wish to go to.";
|
|
|
- mes "Choose, and go in!";
|
|
|
- next;
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "Each map has a limitation on";
|
|
|
- mes "the number of people who can";
|
|
|
- mes "participate. So you will see";
|
|
|
- mes "figures in the corner showing";
|
|
|
- mes "'Attendee/total'.";
|
|
|
- next;
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "Also, there is a hidden EXP";
|
|
|
- mes "value in PVP mode. This EXP";
|
|
|
- mes "score will only apply inside";
|
|
|
- mes "of the PVP zone, so do not";
|
|
|
- mes "worry.";
|
|
|
- next;
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "Every player's EXP at the";
|
|
|
- mes "beginning is usually 5 points.";
|
|
|
- mes "If you win, you will";
|
|
|
- mes "increse your EXP by 1 point";
|
|
|
- next;
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "In the same way, when you";
|
|
|
- mes "lose... Your EXP will";
|
|
|
- mes "drop by 5 points.";
|
|
|
- mes "So be careful!";
|
|
|
- next;
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "When you are defeated";
|
|
|
- mes "And your EXP is equal";
|
|
|
- mes "to or less than 0,";
|
|
|
- mes "You will be removed from PVP";
|
|
|
- mes "And your duel is finished!";
|
|
|
- next;
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "However, If your EXP is more";
|
|
|
- mes "than 0. You can still get help";
|
|
|
- mes "Through other players healing...";
|
|
|
- mes "Do you get it?";
|
|
|
- next;
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "The fighting commands inside of";
|
|
|
- mes "PVP Are the same as the normal.";
|
|
|
- mes "All the basic controls are the";
|
|
|
- mes "same.";
|
|
|
- next;
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "However, there is one thing...";
|
|
|
- mes "Within the PVP fight square,";
|
|
|
- mes "And in the PVP fighting zones";
|
|
|
- mes "You cannot save your position.";
|
|
|
- mes "Remember well... These rules";
|
|
|
- mes "can help to ensure your victory.";
|
|
|
- close;
|
|
|
- case 4:
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "Position saved...";
|
|
|
- mes "Successfully.";
|
|
|
- mes "Thank you very much, We";
|
|
|
- mes "will see you again soon.";
|
|
|
- close2;
|
|
|
- savepoint getarg(0),getarg(1),getarg(2);
|
|
|
- end;
|
|
|
- case 5:
|
|
|
- mes "[PVP Narrator]";
|
|
|
- mes "In this war between Monsters";
|
|
|
- mes "and Humans. This competition";
|
|
|
- mes "between people, The PVP Mode!";
|
|
|
- mes "Encourages us all to become";
|
|
|
- mes "stronger. Come again.";
|
|
|
- mes "We welcome your challenge!";
|
|
|
- close;
|
|
|
- }
|
|
|
-}
|
|
|
+//Fight Square Reception Staff
|
|
|
+pvp_y_room,86,85,4 duplicate(fsr) Fight SQ Reception#f1 105
|
|
|
+pvp_n_room,30,85,4 duplicate(fsr) Fight SQ Reception#f2 105
|
|
|
+
|
|
|
+pvp_n_8-4,33,122,0 warp Link_1-11 0,2,pvp_n_8-4,0,0
|
|
|
+pvp_n_8-4,62,84,0 warp Link_1-12 1,1,pvp_n_8-4,0,0
|
|
|
+pvp_n_8-4,49,71,0 warp Link_1-21 1,1,pvp_n_8-4,0,0
|
|
|
+pvp_n_8-4,56,166,0 warp Link_1-22 1,1,pvp_n_8-4,0,0
|
|
|
+pvp_n_8-4,99,180,0 warp Link_1-31 2,1,pvp_n_8-4,0,0
|
|
|
+pvp_n_8-4,137,84,0 warp Link_1-32 1,1,pvp_n_8-4,0,0
|
|
|
+pvp_n_8-4,150,71,0 warp Link_1-41 1,1,pvp_n_8-4,0,0
|
|
|
+pvp_n_8-4,144,166,0 warp Link_1-42 1,1,pvp_n_8-4,0,0
|
|
|
+pvp_n_8-5,30,30,0 warp Link_1-99 3,3,pvp_n_8-5,100,100
|
|
|
|
|
|
// Event Contestant Entrance
|
|
|
//============================================================
|
|
@@ -499,11 +490,8 @@ OnInit:
|
|
|
}
|
|
|
|
|
|
pvp_room,62,85,4 duplicate(PVPSpectator) Spectator's Entrance#1 105
|
|
|
-
|
|
|
pvp_room,70,85,4 duplicate(PVPSpectator) Spectator's Entrance#2 105
|
|
|
-
|
|
|
pvp_room,78,85,4 duplicate(PVPSpectator) Spectator's Entrance#3 105
|
|
|
-
|
|
|
pvp_room,86,85,4 duplicate(PVPSpectator) Spectator's Entrance#4 105
|
|
|
|
|
|
// Spectator Warps
|
|
@@ -521,15 +509,11 @@ OnTouch:
|
|
|
}
|
|
|
|
|
|
pvp_2vs2,5,4,0 duplicate(PVPSpecWarp) Combat Square Staff#1 45,1,1,{
|
|
|
-
|
|
|
pvp_2vs2,5,74,0 duplicate(PVPSpecWarp) Combat Square Staff#2 45,1,1
|
|
|
-
|
|
|
pvp_2vs2,74,74,0 duplicate(PVPSpecWarp) Combat Square Staff#3 45,1,1
|
|
|
-
|
|
|
pvp_2vs2,74,5,0 duplicate(PVPSpecWarp) Combat Square Staff#4 45,1,1
|
|
|
-
|
|
|
pvp_2vs2,40,40,0 script Combat Square Staff#5 45,1,1,{
|
|
|
- set mapmove,0;
|
|
|
+ set mapmove,0; //??
|
|
|
mes "[Combat Square Staff]";
|
|
|
mes "May I help you?";
|
|
|
if (select("To the side viewer seat.:Leave Combat Square.") == 1) {
|