diff options
Diffstat (limited to 'npc/other/pvp.txt')
-rw-r--r-- | npc/other/pvp.txt | 443 |
1 files changed, 443 insertions, 0 deletions
diff --git a/npc/other/pvp.txt b/npc/other/pvp.txt new file mode 100644 index 000000000..5e3eadc3e --- /dev/null +++ b/npc/other/pvp.txt @@ -0,0 +1,443 @@ +//===== eAthena Script =======================================
+//= PvP
+//===== By: ==================================================
+//= kobra_k88
+//===== Current Version: =====================================
+//= 1.1
+//===== Compatible With: =====================================
+//= eAthena 0.5.2 +
+//===== Description: =========================================
+//=
+//===== Additional Comments: =================================
+//= v1.1 Fixed arena names for Nightmare mode. Added room limit check.
+//============================================================
+
+
+//***********************************************************************************************************************************************************//
+// PvP Narrator and Gate Keeper Scripts //
+//***********************************************************************************************************************************************************//
+
+// Alberta =========================================================>\\
+// PvP Narrator ------------------------------------------------------
+alberta_in.gat, 22, 146,4 script PvP Narrator#1::PvPNarr 84,
+{
+ mes "[PvP Narrator]";
+ mes "Hello and welcome! I am in charge of explaining the PvP mode to all of those who inquire. I am the PvP Narrator!";
+ M_Menu:
+ next;
+ menu "What is PvP?",M_0, "What are the PvP modes?",M_1, "What are the rules for PvP?",M_2, "Save position.",M_3;
+
+ M_0:
+ mes "[PvP Narrator]";
+ mes "PvP is short for 'Player versus Player'! It is a unique play mode that allows players to duel other players!";
+ next;
+ mes "[PvP Narrator]";
+ mes "If you're interested just speak with the ^5533FFGate Keeper'^000000. He will let you into the PvP square.";
+ next;
+ mes "[PvP Narrator]";
+ mes "That IS, IF you have at least a base level of 31 and you have 500 zeny to pay for the enterance fee.";
+ mes "Those are the requirements to participate in PvP.";
+ goto M_Menu;
+ M_1:
+ mes "[PvP Narrator]";
+ mes "There are 2 PvP modes to choose from.";
+ mes "One is called ^5533FF'Yoyo'^000000 Mode and the other is called ^5533FF'Nightmare'^000000 Mode.";
+ next;
+ mes "[PvP Narrator]";
+ mes "Yoyo mode essentially lets you play risk free. You can experience the thrill of PvP without any restrictions or penalties.";
+ mes "It is recomended that you practice your skills in this mode before you move on.";
+ next;
+ mes "[PvP Narrator]";
+ mes "Nightmare Mode is very dangerous! Please use caution when trying this mode of play.";
+ mes "You will lose some of your real EXP if you are defeated. There is also the small chance that you will drop some items and equipment.";
+ next;
+ mes "[PvP Narrator]";
+ mes "Of course if you win, the rewards can be great!! Even so you should really think twice before you attempt Nightmare Mode.";
+ mes "Anyways, good luck.";
+ goto M_Menu;
+ M_2:
+ mes "[PvP Narrator]";
+ mes "Before you enter any actual PvP areana, you must first choose your level of ability based on your base level.";
+ mes "You will do this in the pre-fight room. There will be a row of narrators, each one representing a set of player levels.";
+ next;
+ mes "[PvP Narrator]";
+ mes "Speak to the narrator that represents your base level. You will then be asked to choose from five different fight maps.";
+ mes "You will be able to see how many people are currently participating in any given map.";
+ next;
+ mes "[PvP Narrator]";
+ mes "This will be represented by the 'Attendee/Total' figure in the corner of the screen. There is a limit to how many can play on a map.";
+ mes "There is a hidden EXP value in PvP mode. This EXP will only apply inside of the PvP zone and not outside.";
+ next;
+ mes "[PvP Narrator]";
+ mes "Every one will recieve a base EXP of 5 points when they first start. If you win a match your EXP with increase by 1 point.";
+ mes "If you loose your EXP will drop by 5 points, so be carefull!";
+ next;
+ mes "[PvP Narrator]";
+ mes "If you are defeated and your EXP is equal to or less than 0, you will be removed from the PvP arena.";
+ mes "If your EXP is more than 0 than you may continue fighting and even get help from healers.";
+ next;
+ mes "[PvP Narrator]";
+ mes "The fighting commands inside of PvP are the same as outside. Just remember that you won't be able to save inside a PvP arena.";
+ next;
+ mes "[PvP Narrator]";
+ mes "Remember these rules well as they can help to ensure your victory.";
+ goto M_Menu;
+ M_3:
+ savepoint "geffen_in.gat",64,60;
+ mes "[PvP Narrator]";
+ mes "Your position has been saved.";
+ close;
+}
+
+// Gate Keeper ---------------------------------------------------------------
+alberta_in.gat, 26,146,4 script Gate Keeper#1::GateKeep 83,
+{
+ mes "[Gate Keeper]";
+ mes "Hi. I'm glad to be of service. I will open the PvP fight square for you!";
+ mes "If you have any questions about the PvP modes or rules, please ask the Narrator.....";
+ next;
+ menu "^5533FF'PvP Yoyo Mode'^000000 Fight Square.",M_0,
+ "^FF5533'PvP Nightmare Mode'^000000 Fight Square.",M_1,
+ "^5533FF'PvP Duel (Fighting) Mode'^000000 Combat Square.",M_2, "End Conversation.",M_End;
+ M_0:
+ set @mode$, "Yoyo";
+ set @players1, 128;
+ set @players2, 128;
+ set @room1$, "Prontera";
+ set @room2$, "Izlude";
+ set @room3$, "Payon";
+ set @room4$, "Alberta";
+ set @room5$, "Morroc";
+ callsub sF_Move;
+ warp "pvp_y_room.gat", 51, 23;
+ end;
+ M_1:
+ set @mode$, "Nightmare";
+ set @players1, 64;
+ set @players2, 32;
+ set @room1$, "Sandwhich Arena";
+ set @room2$, "Rock Arena";
+ set @room3$, "Four Arena";
+ set @room4$, "UnderCross Arena";
+ set @room5$, "Copass Arena";
+ callsub sF_Move;
+ warp "pvp_n_room.gat", 51, 23;
+ end;
+ M_2:
+
+ mes "[Gate Keeper]";
+ mes "To enter the Duel (Fighting) Mode square you must have an admission ticket. Do you have one?";
+ next;
+ menu "Yes I do.",-, "No I don't.",sM_1;
+
+ if(countitem(7029) < 1) goto sM_1;
+ delitem 7029, 1;
+ set @mode$, "Fighting";
+ callsub sF_Move;
+ warp "pvp_y_room.gat", 51, 23;
+ end;
+
+ sM_1:
+ mes "[Gate Keeper]";
+ mes "Eh? You don't have one? I'm sorry but this fight square is only for people who have admission or viewing tickets.";
+ mes "You cannot come in without one.";
+ close;
+ M_End:
+ mes "[Gate Keeper]";
+ mes "In this war between Monsters and Humans this competition between people, PvP, encourages all of us to become stronger.";
+ mes "Come again anytime. We welcome your challenge!";
+ close;
+
+sF_Move:
+ mes "[Gate Keeper]";
+ mes "The admission fee is 500 Zeny. Do you want to move to the "+@mode$+" fight square?";
+ next;
+ menu "Yes",-, "No",M_End;
+
+ if(BaseLevel < 31) goto sL_LowLvl;
+ if(Zeny < 500) goto sL_NdZeny;
+ set Zeny, Zeny - 500;
+ mes "[Gate Keeper]";
+ mes "Prepare to be warped to the arena.....";
+ next;
+ return;
+
+ sL_LowLvl:
+ mes "[Gate Keeper]";
+ mes "In order to participate in PvP you must have a base level of at least ^FF4444'31'^000000.";
+ close;
+ sL_NdZeny:
+ mes "[Gate Keeper]";
+ mes "As I stated, the admission fee is ^FF4444'500'^000000 Zeny. You seem to be short on Zeny.";
+ close;
+}
+
+// Geffen ===================================================>\\
+geffen_in.gat, 67,63,4 duplicate(PvPNarr) PvP Narrator#2 84
+geffen_in.gat, 63,63,4 duplicate(GateKeep) Gate Keeper#2 83
+
+// Morroc ===================================================>\\
+morocc_in.gat,144,138,4 duplicate(PvPNarr) PvP Narrator#3 84
+morocc_in.gat, 144,142,4 duplicate(GateKeep) Gate Keeper#3 83
+
+// Payon ===================================================>\\
+payon_in01.gat,6,55,4 duplicate(PvPNarr) PvP Narrator#5 84
+payon_in01.gat,10,54,4 duplicate(GateKeep) Gate Keeper#5 83
+
+// Prontera =================================================>\\
+prt_in.gat,56,140,4 duplicate(PvPNarr) PvP Narrator#6 84
+prt_in.gat,52,140,4 duplicate(GateKeep) Gate Keeper#6 83
+
+
+
+//***********************************************************************************************************************************************//
+// PvP Yoyo Mode Fight Square Helpers //
+//***********************************************************************************************************************************************//
+
+// LV31 ~ 40 ------------------------------------------------------------------------------
+pvp_y_room.gat,30,85,4 script Fight Square Helper::YHelper1 105,
+{
+ set @map$, "y_1";
+ set @lvl2, 40;
+ callfunc "F_PvPRoom";
+OnInit:
+ waitingroom "LV31 ~ LV40",0;
+ end;
+}
+
+// LV41 ~ 50 ------------------------------------------------------------------------------
+pvp_y_room.gat,38,85,4 script Fight Square Helper::YHelper2 105,
+{
+ set @map$, "y_2";
+ set @lvl1, 41;
+ set @lvl2, 50;
+ callfunc "F_PvPRoom";
+OnInit:
+ waitingroom "LV41 ~ LV50",0;
+ end;
+}
+
+// LV51 ~ 60 ------------------------------------------------------------------------------
+pvp_y_room.gat,46,85,4 script Fight Square Helper::YHelper3 105,
+{
+ set @map$, "y_3";
+ set @lvl1, 51;
+ set @lvl2, 60;
+ callfunc "F_PvPRoom";
+OnInit:
+ waitingroom "LV51 ~ LV60", 0;
+ end;
+}
+
+// LV61 ~ 70 ------------------------------------------------------------------------------
+pvp_y_room.gat,54,85,4 script Fight Square Helper::YHelper4 105,
+{
+ set @map$, "y_4";
+ set @lvl1, 61;
+ set @lvl2, 70;
+ callfunc "F_PvPRoom";
+OnInit:
+ waitingroom "LV61 ~ LV70", 0;
+ end;
+}
+
+// LV71 ~ 80 ------------------------------------------------------------------------------
+pvp_y_room.gat,62,85,4 script Fight Square Helper::YHelper5 105,
+{
+ set @map$, "y_5";
+ set @lvl1, 71;
+ set @lvl2, 80;
+ callfunc "F_PvPRoom";
+OnInit:
+ waitingroom "LV71 ~ LV80", 0;
+ end;
+}
+
+// LV81 ~ 90 ------------------------------------------------------------------------------
+pvp_y_room.gat,70,85,4 script Fight Square Helper::YHelper6 105,
+{
+ set @map$, "y_6";
+ set @lvl1, 81;
+ set @lvl2, 90;
+ callfunc "F_PvPRoom";
+OnInit:
+ waitingroom "LV81 ~ LV90", 0;
+ end;
+}
+
+// LV91 ~ ------------------------------------------------------------------------------
+pvp_y_room.gat,78,85,4 script Fight Square Helper::YHelper7 105,
+{
+ set @map$, "y_7";
+ set @lvl1, 91;
+ callfunc "F_PvPRoom";
+OnInit:
+ waitingroom "LV91 ~ ", 0;
+ end;
+}
+
+// No Limit ------------------------------------------------------------------------------
+pvp_y_room.gat,86,85,4 script Fight Square Helper::YHelper8 105,
+{
+ set @map$, "y_8";
+ set @lvl1, 0;
+ set @lvl2, 200;
+ callfunc "F_PvPRoom";
+OnInit:
+ waitingroom "No Limit", 0;
+ end;
+}
+
+
+
+//***********************************************************************************************************************************************//
+// PvP Nightmare Mode Fight Square Helpers //
+//***********************************************************************************************************************************************//
+// LV31 ~ 40 ------------------------------------------------------------------------------
+pvp_n_room.gat,30,85,4 script Fight Square Helper#N1 105,
+{
+ set @map$, "n_1";
+ set @lvl2, 40;
+ callfunc "F_PvPRoom";
+OnInit:
+ waitingroom "LV31 ~ LV40",0;
+ end;
+}
+
+// LV41 ~ 50 ------------------------------------------------------------------------------
+pvp_n_room.gat,38,85,4 script Fight Square Helper#N2 105,
+{
+ set @map$, "n_2";
+ set @lvl1, 41;
+ set @lvl2, 50;
+ callfunc "F_PvPRoom";
+OnInit:
+ waitingroom "LV41 ~ LV50",0;
+ end;
+}
+
+// LV51 ~ 60 ------------------------------------------------------------------------------
+pvp_n_room.gat,46,85,4 script Fight Square Helper#N3 105,
+{
+ set @map$, "n_3";
+ set @lvl1, 51;
+ set @lvl2, 60;
+ callfunc "F_PvPRoom";
+OnInit:
+ waitingroom "LV51 ~ LV60", 0;
+ end;
+}
+
+// LV61 ~ 70 ------------------------------------------------------------------------------
+pvp_n_room.gat,54,85,4 script Fight Square Helper#N4 105,
+{
+ set @map$, "n_4";
+ set @lvl1, 61;
+ set @lvl2, 70;
+ callfunc "F_PvPRoom";
+OnInit:
+ waitingroom "LV61 ~ LV70", 0;
+ end;
+}
+
+// LV71 ~ 80 ------------------------------------------------------------------------------
+pvp_n_room.gat,62,85,4 script Fight Square Helper#N5 105,
+{
+ set @map$, "n_5";
+ set @lvl1, 71;
+ set @lvl2, 80;
+ callfunc "F_PvPRoom";
+OnInit:
+ waitingroom "LV71 ~ LV80", 0;
+ end;
+}
+
+// LV81 ~ 90 ------------------------------------------------------------------------------
+pvp_n_room.gat,70,85,4 script Fight Square Helper#N6 105,
+{
+ set @map$, "n_6";
+ set @lvl1, 81;
+ set @lvl2, 90;
+ callfunc "F_PvPRoom";
+OnInit:
+ waitingroom "LV81 ~ LV90", 0;
+ end;
+}
+
+// LV91 ~ ------------------------------------------------------------------------------
+pvp_n_room.gat,78,85,4 script Fight Square Helper#N7 105,
+{
+ set @map$, "n_7";
+ set @lvl1, 91;
+ set @lvl2, 255;
+ callfunc "F_PvPRoom";
+OnInit:
+ waitingroom "LV91 ~ ", 0;
+ end;
+}
+
+// No Limit ------------------------------------------------------------------------------
+pvp_n_room.gat,86,85,4 script Fight Square Helper#N8 105,
+{
+ set @map$, "n_8";
+ set @lvl1, 0;
+ set @lvl2, 255;
+ callfunc "F_PvPRoom";
+OnInit:
+ waitingroom "No Limit", 0;
+ end;
+}
+
+
+
+//***********************************************************************************************************************************************************//
+// Function: PvP Fight Square Helper //
+//***********************************************************************************************************************************************************//
+function script F_PvPRoom {
+
+ mes "[Fight Square Helper]";
+ if(BaseLevel < @lvl1) goto L_LowLvl;
+ if(BaseLevel > @lvl2) goto L_HiLvl;
+ mes "Please choose an arena to fight in...";
+ M_Menu:
+ next;
+ menu @room1$ + " [" + getmapusers("pvp_"+@map$ + "-1.gat") + "/" +@players1+ "]",M_Rm1,
+ @room2$ + " [" + getmapusers("pvp_"+@map$ + "-2.gat") + "/" +@players2+ "]",M_Rm2,
+ @room3$ + " [" + getmapusers("pvp_"+@map$ + "-3.gat") + "/" +@players2+ "]",M_Rm3,
+ @room4$ + " [" + getmapusers("pvp_"+@map$ + "-4.gat") + "/" +@players2+ "]",M_Rm4,
+ @room5$ + " [" + getmapusers("pvp_"+@map$ + "-5.gat") + "/" +@players2+ "]",M_Rm5, "Cancel",M_End;
+ M_Rm1:
+ if (getmapusers("pvp_"+@map$+"-1.gat") == @players1) goto L_Full;
+ warp "pvp_"+@map$+"-1.gat",0,0;
+ end;
+ M_Rm2:
+ if (getmapusers("pvp_"+@map$+"-2.gat") == @players2) goto L_Full;
+ warp "pvp_"+@map$+"-2.gat",0,0;
+ end;
+ M_Rm3:
+ if (getmapusers("pvp_"+@map$+"-3.gat") == @players2) goto L_Full;
+ warp "pvp_"+@map$+"-3.gat",0,0;
+ end;
+ M_Rm4:
+ if (getmapusers("pvp_"+@map$+"-4.gat") == @players2) goto L_Full;
+ warp "pvp_"+@map$+"-4.gat",0,0;
+ end;
+ M_Rm5:
+ if (getmapusers("pvp_"+@map$+"-5.gat") == @players2) goto L_Full;
+ warp "pvp_"+@map$+"-5.gat",0,0;
+ end;
+ M_End:
+ close;
+
+
+ L_LowLvl:
+ mes "I'm sorry but you do not meet the Base Level requirements to enter. Please try a lower level room.";
+ close;
+ L_HiLvl:
+ mes "I'm sorry but you exceed the Base Level requirements to enter. Please try a higher level room.";
+ close;
+ L_Full:
+ mes "[Fight Square Helper]";
+ mes "I'm sorry but this arena is full. Please choose another one to participate in....";
+ goto M_Menu;
+}
|