Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // (c) 2008 - 2012 eAmod Project; Andres Garbanzo / Zephyrus
- //
- // - [email protected]
- // - MSN [email protected]
- // - Skype: Zephyrus_cr
- // - Site: http://dev.terra-gaming.com
- //
- // This file is NOT public - you are not allowed to distribute it.
- // Authorized Server List : http://dev.terra-gaming.com/index.php?/topic/72-authorized-eamod-servers/
- // eAmod is a non Free, extended version of eAthena Ragnarok Private Server.
- // ==============================================================================
- // BattleGround System - Common NPCs
- // ==============================================================================
- // Battleground Queue Admin
- // *********************************************************************
- - script BG_Queue_Join -1,{
- end;
- OnInit:
- // Configuration
- // *****************************************************
- // Battleground Rotation - Main NPC name
- setarray .BG_Arenas$[0],"Flavius_TD","Conquest","Rush";
- // Battleground Arena Name - for announcements
- setarray .BG_Names$[0],"Death Match","Conquest","Rush";
- // Minimum Players to start the BG
- setarray .BG_Min[0],3,3,3;
- // Maximum Players per Team
- setarray .BG_Max[0],35,35,35;
- // BG Message Colors
- setarray .BG_Color$[0],"0xC12283","0x348017","0xE42217";
- // Team Building Mode : 0 = Lineal | 1 = Random | 2 = Class Priority | 3 = Faction Mode | 4 = Team Color ( by script set Bat_Team,N; )
- set .TeamMode, 0;
- // Main Code
- // *****************************************************
- set .BG_Count, getarraysize(.BG_Arenas$);
- set .BG_Queue, bg_queue_create("Battleground Arena","BG_Queue_Join::OnJoinEvent",80);
- set .VS_Queue, bg_queue_create("Free For All Arena","BG_Queue_Join::OnVersusJoin",80);
- // Move to Next Arena
- if( $BG_Index >= .BG_Count ) set $BG_Index,0; // Restart Rotation
- set .BG_Arena$,.BG_Arenas$[$BG_Index];
- set .Ready, 1;
- donpcevent "BG_Queue_Join::OnDoHappyHour";
- initnpctimer; // Rotation if BG don't start... Comment if you don't want to use this method
- // Comment the next two lines if you don't want to allow @joinbg and @leavebg commands.
- bindatcmd "joinbg","BG_Queue_Join::OnDoJoin",0,99;
- bindatcmd "leavebg","BG_Queue_Join::OnDoLeave",0,99;
- end;
- OnDoJoin: // @joinbg
- if( gettime(4) == 0 && gettime(3) >= 16 && gettime(3) < 18 ){
- if( BaseLevel < 255 && bg_logincount() > 0 ){
- dispbottom "[Battlegrounds] Min required level to join a battleground is 255.";
- }
- if( checkquest(8506,PLAYTIME) == 2 ){
- erasequest 8506;
- }else if( checkquest(8506,PLAYTIME) != -1 ){
- dispbottom "[You are a Deserter. You can't participate until the indicator goes off]";
- }
- bg_queue_join .BG_Queue;
- }else{
- dispbottom "Only available at Sunday 4pm ~ 6pm";
- }
- end;
- OnDoLeave: // @leavebg
- if( gettime(4) == 0 && gettime(3) >= 16 && gettime(3) < 18 ){
- bg_queue_leave .BG_Queue;
- }else{
- dispbottom "Only available at Sunday 4pm ~ 6pm";
- }
- end;
- OnRotate:
- OnTimer600000: // Rotation if BG don't start... Comment if you don't want to use this method. 120 = 2 Minutes
- set $@BG_Status, 0;
- // Warps Teams
- bg_warp $@BG_Team1,"volterra",115,174;
- bg_warp $@BG_Team2,"volterra",115,174;
- bg_warp $@BG_Team3,"volterra",115,174;
- // Destroy Teams
- bg_destroy $@BG_Team1; set $@BG_Team1, 0;
- bg_destroy $@BG_Team2; set $@BG_Team2, 0;
- bg_destroy $@BG_Team3; set $@BG_Team3, 0;
- // Move to Next Arena
- if( set($BG_Index,$BG_Index + 1) >= .BG_Count )
- set $BG_Index,0; // Restart Rotation
- set .BG_Arena$,.BG_Arenas$[$BG_Index];
- initnpctimer; // Rotation if BG don't start... Comment if you don't want to use this method
- // Trigger the Event - Maybe people is waiting...
- OnJoinEvent:
- if( $@BG_Status == 2 )
- end; // BG Ending... Must wait until OnRotate is called
- set .@Queue_Count, bg_queue_data(.BG_Queue,0);
- switch( $@BG_Status )
- {
- case 0: // Idle - Ready to Start
- if( .BG_Arena$ == "Tierra_TI" )
- set .@Req, .BG_Min[$BG_Index] * 3;
- else
- set .@Req, .BG_Min[$BG_Index] * 2;
- if( bg_queue_checkstart(.BG_Queue,.TeamMode,( (.BG_Arena$ == "Tierra_TI") ? 3 : 2 ),.BG_Min[$BG_Index]) )
- {
- donpcevent .BG_Arena$ + "::OnBuildTeams";
- // Fill Teams with Queue Members
- if( .BG_Arenas$[$BG_Index] == "Tierra_TI" )
- bg_queue2teams .BG_Queue,.BG_Min[$BG_Index],.BG_Max[$BG_Index],.TeamMode,$@BG_Team1,$@BG_Team2,$@BG_Team3;
- else
- bg_queue2teams .BG_Queue,.BG_Min[$BG_Index],.BG_Max[$BG_Index],.TeamMode,$@BG_Team1,$@BG_Team2;
- stopnpctimer; // Rotation if BG don't start... Comment if you don't want to use this method
- set $@BG_Status,1;
- set .@msg$, "Battleground -- " + .BG_Names$[$BG_Index] + " -- Begining";
- bgannounce .@msg$,.BG_Color$[$BG_Index];
- donpcevent .BG_Arena$ + "::OnReady";
- }
- else
- {
- set .@msg$, "Battleground -- " + .BG_Names$[$BG_Index] + " -- " + (.@Req - .@Queue_Count) + " more players to start (@joinbg) if you want to join.";
- announce .@msg$,0,.BG_Color$[$BG_Index];
- }
- break;
- case 1: // Running - Others can join
- if( .@Queue_Count > 0 )
- {
- if( .BG_Arena$ == "Tierra_TI" )
- {
- bg_balance_teams .BG_Queue,.BG_Max[$BG_Index],.TeamMode,$@BG_Team1,$@BG_Team2,$@BG_Team3;
- set .@BG_Count1, bg_get_data($@BG_Team1,0);
- set .@BG_Count2, bg_get_data($@BG_Team2,0);
- set .@BG_Count3, bg_get_data($@BG_Team3,0);
- set .@msg$, "Battleground -- " + .BG_Names$[$BG_Index] + " -- B: " + .@BG_Count1 + "/" + .BG_Max[$BG_Index] + ", R: " + .@BG_Count2 + "/" + .BG_Max[$BG_Index] + ", G: " + .@BG_Count3 + "/" + .BG_Max[$BG_Index] + " (Playing)";
- }
- else
- {
- bg_balance_teams .BG_Queue,.BG_Max[$BG_Index],.TeamMode,$@BG_Team1,$@BG_Team2;
- set .@BG_Count1, bg_get_data($@BG_Team1,0);
- set .@BG_Count2, bg_get_data($@BG_Team2,0);
- set .@msg$, "Battleground -- " + .BG_Names$[$BG_Index] + " -- B: " + .@BG_Count1 + "/" + .BG_Max[$BG_Index] + ", R: " + .@BG_Count2 + "/" + .BG_Max[$BG_Index] + " (Playing)";
- }
- bgannounce .@msg$,.BG_Color$[$BG_Index];
- }
- break;
- }
- end;
- OnVersusJoin:
- if( $@VS_Status != 0 )
- end;
- set .@Queue_Count, bg_queue_data(.VS_Queue,0);
- if( .@Queue_Count >= 10 )
- {
- donpcevent "FFA_Arena::OnBuildTeams";
- bg_queue2teams .VS_Queue,1,1,0,$@VS_Team[0],$@VS_Team[1],$@VS_Team[2],$@VS_Team[3],$@VS_Team[4],$@VS_Team[5],$@VS_Team[6],$@VS_Team[7],$@VS_Team[8],$@VS_Team[9];
- set $@VS_Status,1;
- announce "Battleground -- Free For All -- Begining",0,0x483D8B;
- donpcevent "FFA_Arena::OnReady";
- }
- else
- announce "Battleground -- Free For All -- " + (10 - .@Queue_Count) + " more players to start",0,0x483D8B;
- end;
- OnFri0600: // Friday, 6 a.m.
- rankreset 1; // Ranking Reset
- end;
- // BattleGround Happy Hour
- OnDoHappyHour:
- switch( gettime(4) )
- {
- case 1:
- case 3:
- case 5:
- if( gettime(3) >= 20 && gettime(3) < 22 )
- {
- announce "-- Battleground Happy Hour has begun | Ranked Arena Mode --",0,0x00FF00;
- setbattleflag "bg_reward_rates",200; // +20% Reward Rates
- setbattleflag "bg_ranked_mode",1;
- end;
- }
- if( gettime(3) == 22 )
- {
- announce "-- Battleground Happy Hour is over | Regular Arena Mode --",0,0x00BFFF;
- setbattleflag "bg_reward_rates",100; // Normal Rates
- setbattleflag "bg_ranked_mode",0;
- end;
- }
- break;
- case 2:
- case 4:
- case 6:
- if( gettime(3) >= 16 && gettime(3) < 18 )
- {
- announce "-- Battleground Happy Hour has begun | Ranked Arena Mode --",0,0x00FF00;
- setbattleflag "bg_reward_rates",120; // +20% Reward Rates
- setbattleflag "bg_ranked_mode",1;
- end;
- }
- if( gettime(3) == 18 )
- {
- announce "-- Battleground Happy Hour is over | Regular Arena Mode --",0,0x00BFFF;
- setbattleflag "bg_reward_rates",100; // Normal Rates
- setbattleflag "bg_ranked_mode",0;
- end;
- }
- break;
- }
- end;
- }
- // Registration NPC
- // *********************************************************************
- - script BG_Register -1,{
- if( getvariableofnpc(.Ready,"BG_Queue_Join") == 0 )
- donpcevent "BG_Queue_Join::OnInit";
- mes "[^FFA500Battle Recruiter^000000]";
- mes "This is the Battleground Information and Registration service.";
- mes "What do you want to do?";
- next;
- switch( select("^FFA500Battleground Arenas^000000:^0000FFFree For All Arena^000000") )
- {
- case 1:
- mes "[^FFA500Battle Recruiter^000000]";
- mes "Battlegrounds Arena are different kinds of games where Teams fight for victory.";
- mes "What do you want to do?";
- next;
- switch( select("Register:Party Register:Leave Queue:Battleground Help") )
- {
- case 1:
- if( BaseLevel < 255 && bg_logincount() > 0 )
- {
- mes "[^FFA500Battle Recruiter^000000]";
- mes "Min required level to join a battleground is 255.";
- close;
- }
- if( checkquest(8506,PLAYTIME) == 2 )
- erasequest 8506;
- if( checkquest(8506,PLAYTIME) != -1 )
- {
- mes "[^FFA500Battle Recruiter^000000]";
- mes "You are a Deserter. You can't participate until the indicator goes off";
- close;
- }
- mes "[^FFA500Battle Recruiter^000000]";
- mes "Let's proceed with the registration...";
- mes "You must wait on any City until BG starts.";
- mes "Close this window to continue...";
- close2;
- bg_queue_join getvariableofnpc(.BG_Queue,"BG_Queue_Join");
- end;
- case 2:
- if( getcharid(1) == 0 )
- {
- mes "[^FFA500Battle Recruiter^000000]";
- mes "You are not on a Party.";
- close;
- }
- mes "[^FFA500Battle Recruiter^000000]";
- mes "Let's proceed with the registration...";
- mes "You must wait on any City until BG starts.";
- mes "Close this window to continue...";
- close2;
- bg_queue_partyjoin getcharid(1),getvariableofnpc(.BG_Queue,"BG_Queue_Join");
- end;
- case 3:
- mes "[^FFA500Battle Recruiter^000000]";
- mes "If you are registered, you will be removed.";
- mes "Are you sure?";
- next;
- if( select("Yes, leave queue:No, I will stay") == 2 )
- {
- mes "[^FFA500Battle Recruiter^000000]";
- mes "Ok, nothing to change.";
- close;
- }
- mes "[^FFA500Battle Recruiter^000000]";
- mes "Close this window to continue...";
- close2;
- bg_queue_leave getvariableofnpc(.BG_Queue,"BG_Queue_Join");
- end;
- case 4:
- mes "[^FFA500Battle Recruiter^000000]";
- mes "Tell me... what battleground you don't understand?";
- next;
- switch( select("Death Match:Triple Inferno:Conquest:Rush") )
- {
- case 1:
- mes "[^FFA500Battle Recruiter^000000]";
- mes "Kill all the enemy players to let their Team without points.";
- mes "Protect our army.";
- break;
- case 2:
- mes "[^FFA500Battle Recruiter^000000]";
- mes "There are 3 teams in the battlefield, your team and other 2 enemies.";
- next;
- mes "[^FFA500Battle Recruiter^000000]";
- mes "Kill the enemy players, collect the skulls and bring then to the Sacrifice Totem to win points.";
- next;
- mes "[^FFA500Battle Recruiter^000000]";
- mes "You can collect your own team skulls and bring then to your Sacrifice Totem to avoid other teams to score.";
- next;
- mes "[^FFA500Battle Recruiter^000000]";
- mes "If you get killed all your skulls will be drop to the floor, including your own skull. First Team to get 80 points wins the battle.";
- break;
- case 3:
- mes "[^FFA500Battle Recruiter^000000]";
- mes "If you are Attacking, destroy the enemy defenses and it's Flag.";
- next;
- mes "[^FFA500Battle Recruiter^000000]";
- mes "If you are Defending, protect your castle defenses and the Flag.";
- break;
- case 4:
- mes "[^FFA500Battle Recruiter^000000]";
- mes "Fight to capture the Castle and organize your team to defend it.";
- next;
- mes "[^FFA500Battle Recruiter^000000]";
- mes "If you fail on the first capture, kill the defender and take it for your team.";
- break;
- }
- break;
- }
- close;
- case 2:
- mes "[^FFA500Battle Recruiter^000000]";
- mes "Free For All Arena is a Duel between 10 players with No Teams.";
- mes "The target is to kill 25 players.";
- mes "What do you want to do?";
- next;
- switch( select("Register:Leave Queue") )
- {
- case 1:
- if( BaseLevel < 255 && bg_logincount() > 0 )
- {
- mes "[^FFA500Battle Recruiter^000000]";
- mes "Min required level to join a battleground is 255.";
- close;
- }
- if( checkquest(8506,PLAYTIME) == 2 )
- erasequest 8506;
- if( checkquest(8506,PLAYTIME) != -1 )
- {
- mes "[^FFA500Battle Recruiter^000000]";
- mes "You are a Deserter. You can't participate until the indicator goes off";
- close;
- }
- mes "[^FFA500Battle Recruiter^000000]";
- mes "Let's proceed with the registration...";
- mes "You must wait on any City until BG starts.";
- mes "Close this window to continue...";
- close2;
- bg_queue_join getvariableofnpc(.VS_Queue,"BG_Queue_Join");
- end;
- case 2:
- mes "[^FFA500Battle Recruiter^000000]";
- mes "If you are registered, you will be removed.";
- mes "Are you sure?";
- next;
- if( select("Yes, leave queue:No, I will stay") == 2 )
- {
- mes "[^FFA500Battle Recruiter^000000]";
- mes "Ok, nothing to change.";
- close;
- }
- mes "[^FFA500Battle Recruiter^000000]";
- mes "Close this window to continue...";
- close2;
- bg_queue_leave getvariableofnpc(.VS_Queue,"BG_Queue_Join");
- end;
- }
- end;
- case 3:
- mes "[^FFA500Battle Recruiter^000000]";
- mes "May the War God bless you.";
- close2;
- warp "volterra",115,174;
- end;
- }
- end;
- }
- //bat_room,160,150,3 duplicate(BG_Register) Battle Recruiter#bat 728
- // prontera,155,180,4 duplicate(BG_Register) Battle Recruiter#prt 728
- /**
- // General Guillaume
- // *********************************************************************
- bat_room,160,159,3 script General Guillaume 420,{
- cutin "bat_kiyom2",2;
- mes "[General Guillaume]";
- mes "Hot-blooded adventurer, we need your ability to win this battle.";
- next;
- cutin "bat_kiyom1",2;
- mes "[General Guillaume]";
- mes "Our great king, Marcel Marollo VII, is very sick lately. His Majesty has declared that he chosen either me or Prince Croix as the next king amongst his 9 sons.";
- next;
- mes "[General Guillaume]";
- mes "Two kings can't share a nation!";
- mes "Only the one victorious from His Majesty's appointed battle will be enthroned.";
- next;
- mes "[General Guillaume]";
- mes "This is however, not just a battle between us. This battle will determine the future of this country. I pledge on my honor to prove that I'm the one who can protect this Maroll from outside threats.";
- next;
- switch( select("Join the Blue Team","Join the Green Team","End Conversation") )
- {
- case 1:
- cutin "bat_kiyom2",2;
- mes "[General Guillaume]";
- mes "Welcome to my army, comrade.";
- mes "Your eyes tell me that you're a soldier that I can trust.";
- set Bat_Team,1;
- next;
- mes "[General Guillaume]";
- mes "Now, go upstairs and apply for battle with your comrades. I'm sure they'll welcome you whole-heartedly!";
- break;
- case 2:
- cutin "bat_kiyom2",2;
- mes "[General Guillaume]";
- mes "So you will take this fight as your own...";
- mes "Then you are my enemy.";
- set Bat_Team,0;
- next;
- mes "[General Guillaume]";
- mes "Go now, We will meet again in the Battlefield.";
- break;
- case 3:
- mes "[General Guillaume]";
- mes "I'll be the one who will capture the flag!";
- break;
- }
- close2;
- cutin "",255;
- end;
- }
- // General Croix
- // *********************************************************************
- bat_room,160,140,3 script Prince Croix 416,{
- cutin "bat_crua1",2;
- mes "[Prince Croix]";
- mes "Wise adventurer, why don't you lend us your power for victory?";
- next;
- cutin "bat_crua2",2;
- mes "[Prince Croix]";
- mes "I do not wish to shed blood, but I have no choice but to fight for the possibility of peace and for the sake of my people.";
- next;
- mes "[Prince Croix]";
- mes "General Guillaume may have an advantage in this battle as he is the great general of Maroll, but that doesn't automatically mean he'll win. I want to win this battle so that I can grant a better future for my people.";
- next;
- switch( select("Join the Red Team","Join the Green Team","End Conversation") )
- {
- case 1:
- mes "[Prince Croix]";
- mes "Thank you so much. I feel like I can win with the help of adventurers like you. Now, please go downstairs and join your comrades in sharpening their skills to fight the enemy!";
- set Bat_Team,2;
- break;
- case 2:
- mes "[Prince Croix]";
- mes "So you will take this fight as your own...";
- mes "Then you are my enemy.";
- set Bat_Team,0;
- next;
- mes "[Prince Croix]";
- mes "Go now, We will meet again in the Battlefield.";
- break;
- case 3:
- mes "[Prince Croix]";
- mes "For Maroll!";
- break;
- }
- close2;
- cutin "",255;
- end;
- }
- // Guard Dummy
- // *********************************************************************
- bat_room,161,141,3 script Prince Croix's Aid::bat_aid 415,{ end; }
- bat_room,161,139,3 duplicate(bat_aid) Prince Croix's Aid::bat_aid2 415
- bat_room,161,160,3 duplicate(bat_aid) General Guillaume's Aid::bat_aid3 419
- bat_room,161,158,3 duplicate(bat_aid) General Guillaume's Aid::bat_aid4 419
- **/
- // Flags
- // *********************************************************************
- - script Base Flag#bg -1,{ end; }
- // BattleGround Warper - Exit
- // *********************************************************************
- /*
- bat_room,148,150,4 script Teleporter#bat 124,{
- mes "[Teleporter]";
- mes "Do you wish to leave the battlefield? Use my service to return to town.";
- next;
- if( select("Leave:Don't Leave") == 2 )
- {
- mes "[Teleporter]";
- mes "I'll be here whenever you're in need of my service.";
- close;
- }
- switch( @ArenaPVP_out )
- {
- // Rune Midgard Republic
- case 1: warp "prontera",149,92; break;
- case 2: warp "payon",165,98; break;
- case 3: warp "morocc",153,94; break;
- case 4: warp "umbala",121,143; break;
- case 5: warp "comodo",196,140; break;
- case 6: warp "niflheim",214,193; break;
- case 7: warp "aldebaran",143,111; break;
- case 8: warp "geffen",107,53; break;
- // Schwarzard Republic
- case 9: warp "yuno",151,177; break;
- case 10: warp "hugel",99,143; break;
- case 11: warp "lighthalzen",167,93; break;
- case 12: warp "einbroch",70,194; break;
- case 13: warp "einbech",168,130; break;
- // Arunafelz Republic
- case 14: warp "rachel",118,114; break;
- case 15: warp "veins",207,122; break;
- // Islands
- case 16: warp "nameless_n",161,179; break;
- case 17: warp "louyang",213,106; break;
- case 18: warp "gonryun",154,111; break;
- case 19: warp "ayothaya",148,109; break;
- case 20: warp "moscovia",229,195; break;
- case 21: warp "xmas",151,127; break;
- case 22: warp "amatsu",203,107; break;
- case 23: warp "izlude",126,114; break;
- case 24: warp "brasilis",195,211; break;
- case 25: warp "manuk",279,214; break;
- case 26: warp "splendide",200,174; break;
- // Anyplace else
- default:
- set .@spoint$, getsavepoint(0);
- set .@x, getsavepoint(1);
- set .@y, getsavepoint(2);
- mes "[Teleporter]";
- mes "You will be sent back to " + .@spoint$ + ".";
- close2;
- warp .@spoint$, .@x, .@y;
- break;
- }
- set @ArenaPVP_out, 0;
- end;
- }
- // Kafra
- // *********************************************************************
- bat_room,148,147,4 script Kafra Staff::kaf_bat 861,{
- cutin "kafra_09",2;
- callfunc "F_KafSetPront";
- mes "[Kafra Employee]";
- mes "Welcome to the";
- mes "Kafra Corporation~";
- mes "The Kafra Services are";
- mes "always here to support";
- mes "you. So how can I be";
- mes "of service today?";
- callfunc "F_Kafra",5,0,0,40,800;
- M_Save:
- savepoint "bat_room",153,149;
- callfunc "F_KafEnd",0,1,"in the city of Prontera";
- }
- */
- // Badges Exchange
- // *********************************************************************
- volterra,117,180,3 script Telma 701,{
- mes "[Telma]";
- mes "Welcome, mighty warrior.";
- mes "Do you need supply for your battles?";
- mes "I can exchange you a nice amount for your badges or open the normal StrikeRO Supply Store for you.";
- next;
- switch( select("^0000FFBattleground Exclusive^000000:^FF0000War of Emperium Exclusive^000000") )
- {
- case 1: // BG Supply
- setarray .@Items[0],607,12028,678,12020,12114,12115,12116,12117,12118,12119,12120,12121,12072,12087,12082,12077,12092,12097;
- setarray .@Amount[0],100,100,50,50,50,50,50,50,30,30,30,30,10,10,10,10,10,10;
- setarray .@Value[0],3,3,3,2,2,2,2,2,2,2,2,2,5,5,5,5,5,5;
- set .@cID, getbattleflag("bg_reserved_char_id");
- set .@Tarjet$, "Battleground";
- break;
- case 2: // WoE Supply Boxs
- setarray .@Items[0],607,12028,678,12020,12114,12115,12116,12117,12118,12119,12120,12121,12202,12203,12204,12205,12206,12207,14287,14288;
- setarray .@Amount[0],100,100,50,50,50,50,50,50,30,30,30,30,1,1,1,1,1,1,5,5;
- setarray .@Value[0],7,7,7,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,15,15;
- set .@cID, getbattleflag("woe_reserved_char_id");
- set .@Tarjet$, "War of Emperium";
- break;
- }
- set .@Menu$, "";
- for( set .@i, 0; .@i < getarraysize(.@Items); set .@i, .@i + 1 )
- set .@Menu$, .@Menu$ + .@Amount[.@i] + " " + getitemname(.@Items[.@i]) + " (" + .@Value[.@i] + " badges):";
- set .@j, select(.@Menu$) - 1;
- mes "[Telma]";
- mes "^0000FF" + .@Amount[.@j] + " " + getitemname(.@Items[.@j]) + "^000000";
- mes "It will cost you " + .@Value[.@j] + " badges per pack.";
- mes "Remember this can only be used on " + .@Tarjet$ + ".";
- next;
- mes "[Telma]";
- mes "But tell me first, where do you want to receive the items?";
- next;
- set .@Destiny, select("Here, in my Inventory:Direct to my Storage") - 1;
- mes "[Telma]";
- mes "How many packets do you want to buy? (1..50)";
- next;
- input .@total;
- if( .@total < 1 || .@total > 50 )
- {
- mes "[Telma]";
- mes "I am sorry, please input a value from 1 to 50.";
- mes "Talk to me again when you do your selections.";
- close;
- }
- set .@vtotal, .@total * .@Value[.@j]; // Value of all Packages
- set .@total, .@total * .@Amount[.@j]; // Total Amount of Items
- if( .@Destiny )
- { // Check Storage Space Limit
- if( .@cID )
- {
- if( checkspace(.@Items[.@j],.@total,1,0,0,254,0,.@cID&0xffff,(.@cID>>16)&0xffff) == 0 )
- {
- mes "[Telma]";
- mes "It's seen your storage cannot accept more items.";
- mes "Go to your store and check the free space.";
- close;
- }
- }
- else
- {
- if( checkspace(.@Items[.@j],.@total,1,0,0,0,0,0,0) == 0 )
- {
- mes "[Telma]";
- mes "It's seen your storage cannot accept more items.";
- mes "Go to your store and check the free space.";
- close;
- }
- }
- }
- else
- { // Check Weight Limit
- if( checkweight(.@Items[.@j],.@total) == 0 )
- {
- mes "[Telma]";
- mes "It's seen you can't carry the stuff you want to buy.";
- mes "Go and store some items on your Kafra Storage.";
- close;
- }
- }
- if( countitem(7828) + countitem(7829) + countitem(7773) < .@vtotal )
- {
- mes "[Telma]";
- mes "Required Badges: ^0000FF" + .@vtotal + "^000000";
- mes "You do not have enough badges. Sorry...";
- mes "Participate in Battleground arenas to receive it.";
- close;
- }
- set .@vcount, .@vtotal;
- set .@i7828, 0;
- set .@i7829, 0;
- set .@i7773, 0;
- // Bravery Badges
- if( countitem(7828) > 0 )
- {
- mes "[Telma]";
- mes "Required Badges: ^0000FF" + .@vcount + "^000000";
- mes "Bravery Badges to expend:";
- next;
- input .@i7828;
- if( .@i7828 < 0 || .@i7828 > countitem(7828) )
- {
- mes "[Telma]";
- mes "Invalid number... Sorry.";
- close;
- }
- if( .@i7828 > .@vcount ) set .@i7828,.@vcount;
- set .@vcount, .@vcount - .@i7828;
- }
- // Valor Badges
- if( .@vcount && countitem(7829) > 0 )
- {
- mes "[Telma]";
- mes "Required Badges: ^0000FF" + .@vcount + "^000000";
- mes "Valor Badges to expend:";
- next;
- input .@i7829;
- if( .@i7829 < 0 || .@i7829 > countitem(7829) )
- {
- mes "[Telma]";
- mes "Invalid number... Sorry.";
- close;
- }
- if( .@i7829 > .@vcount ) set .@i7829,.@vcount;
- set .@vcount, .@vcount - .@i7829;
- }
- // Heroism Badges
- if( .@vcount && countitem(7773) > 0 )
- {
- mes "[Telma]";
- mes "Required Badges: ^0000FF" + .@vcount + "^000000";
- mes "Heroism Badges to expend:";
- next;
- input .@i7773;
- if( .@i7773 < 0 || .@i7773 > countitem(7773) )
- {
- mes "[Telma]";
- mes "Invalid number... Sorry.";
- close;
- }
- if( .@i7773 > .@vcount ) set .@i7773, .@vcount;
- set .@vcount, .@vcount - .@i7773;
- }
- // Final Checks
- if( .@vcount != 0 )
- {
- mes "[Telma]";
- mes "Sorry, not enough badges to pay the total value.";
- close;
- }
- mes "[Telma]";
- mes "Are you ready to pay and receive your items?";
- mes "Your payment details:";
- mes "^0000FF" + .@i7828 + "^000000 Bravery Badges";
- mes "^0000FF" + .@i7829 + "^000000 Valor Badges";
- mes "^0000FF" + .@i7773 + "^000000 Heroism Badges";
- next;
- if( select("Yes, let's do it:I am sorry... not this time") == 2 )
- {
- mes "[Telma]";
- mes "Ok, come again if you change your mind.";
- close;
- }
- if( .@Destiny )
- { // Check Storage Space Limit
- if( .@cID )
- {
- if( checkspace(.@Items[.@j],.@total,1,0,0,254,0,.@cID&0xffff,(.@cID>>16)&0xffff) == 0 )
- {
- mes "[Telma]";
- mes "It's seen your storage cannot accept more items.";
- mes "Go to your store and check the free space.";
- close;
- }
- }
- else
- {
- if( checkspace(.@Items[.@j],.@total,1,0,0,0,0,0,0) == 0 )
- {
- mes "[Telma]";
- mes "It's seen your storage cannot accept more items.";
- mes "Go to your store and check the free space.";
- close;
- }
- }
- }
- else
- { // Check Weight Limit
- if( checkweight(.@Items[.@j],.@total) == 0 )
- {
- mes "[Telma]";
- mes "It's seen you can't carry the stuff you want to buy.";
- mes "Go and store some items on your Kafra Storage.";
- close;
- }
- }
- if( .@i7828 > countitem(7828) || .@i7829 > countitem(7829) || .@i7773 > countitem(7773) )
- {
- mes "[Telma]";
- mes "What!?, are you a magician or a thief? What did you do with your badges!?";
- mes "Get out of here!";
- close;
- }
- delitem 7828,.@i7828;
- delitem 7829,.@i7829;
- delitem 7773,.@i7773;
- if( .@cID )
- {
- if( .@Destiny )
- storeitem2 .@Items[.@j],.@total,1,0,0,254,0,.@cID&0xffff,(.@cID>>16)&0xffff;
- else
- getitem2 .@Items[.@j],.@total,1,0,0,254,0,.@cID&0xffff,(.@cID>>16)&0xffff;
- }
- else
- {
- if( .@Destiny )
- storeitem .@Items[.@j],.@total;
- else
- getitem .@Items[.@j],.@total;
- }
- mes "[Telma]";
- mes "Here it is... Now take care and fight for the honor and glory of your prince.";
- close;
- }
- volterra,1,1,3,7828 sshop BraveryExchanger 111,4709:1250,4719:1250,4729:1250,4739:1250,4749:1250,4759:1250
- volterra,1,1,3,7829 sshop ValorExchanger 111,20060:1000,20061:1000,20062:1000,20063:1000,20064:1000,20065:1000
- volterra,1,1,3,7773 sshop HeroismExchanger 111,1309:2000,13414:2000,1224:4000,1225:4000,1228:5000,1230:5000
- volterra,113,180,3 script Battlegrounds Shop 109,{
- mes "[Erundek]";
- mes "Welcome, mighty warrior.";
- mes "What can I do for you today ?";
- next;
- switch( select("Bravery Badges Shop","Valor Badges Shop","Battle Badges Shop","Hmm, nothing I guess.") )
- {
- case 4:
- mes "[Erundek]";
- mes "As you wish.";
- mes "See you later.";
- close;
- case 1: // Bravery Badges
- mes "[Erundek]";
- mes "So you want to exchange ^0000FFBravery Badges^000000 from the Battle of Tierra Valley.";
- mes "Close this window to open shop.";
- close2;
- callshop "BraveryExchanger",0;
- end;
- case 2: // Valor Badges
- mes "[Erundek]";
- mes "So you want to exchange ^FF0000Valor Badges^000000 from the Battle of Flavius.";
- mes "Close this window to open shop.";
- close2;
- callshop "ValorExchanger",0;
- end;
- case 3: // Heroism Badges
- mes "[Erundek]";
- mes "So you want to exchange ^FFA500Heroism Badges^000000 from the Battle of Kriger Von Midgard.";
- mes "Close this window to open shop.";
- close2;
- callshop "HeroismExchanger",0;
- end;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment