//===== Hercules Script ====================================== // BattleGround System - Flavius //===== By: ================================================== //= L0ne_W0lf //===== Current Version: ===================================== //= 1.5b //===== Description: ========================================= //= [AEGIS Conversion] //= Flavius Battleground. //= - Winning Team: 9 badges //= - Losing Team: 3 badge //===== Additional Comments: ================================= //= 1.0 First Version. //= 1.1 Fixed pink crystal spawning as blue. [L0ne_W0lf] //= 1.2 Updated 'waitingroom' to support required zeny/lvl. [Kisuka] //= 1.3 Removed MaxLvl check in waitingrooms. Replaced setwall with setcell. //= 1.4 Attempt at implementing BG Queue [Ind/Hercules] //= 1.5 Attempt at implementing BG Queue team-algorithm [jaBote] //= 1.5b Adjustments to the team-splitting algorithm [Haruna] //============================================================ //Tacham, while the script is under testings the original will remain, meaning if you wanna test this you need to disable the other, or they'll conflict. bat_b01,15,15,3 script start#bat_b01 CLEAR_NPC,{ OnInit: mapwarp "bat_b01","bat_room",154,150; end; //$@bg_queue_id is cleared after this event ends OnPlayerListReady: set $@FlaviusBG1_id1, bg_create_team("bat_b01",10,290); set $@FlaviusBG1_id2, bg_create_team("bat_b01",390,10); set $@Croix_QueueBG1, queue(); set $@Guill_QueueBG1, queue(); queueopt($@Guill_QueueBG1, QUEUEOPT_LOGOUT, "start#bat_b01::OnGuillaumeQuit"); queueopt($@Croix_QueueBG1, QUEUEOPT_LOGOUT, "start#bat_b01::OnCroixQuit"); set .@i, 0; copyarray .@bg_member[0],$@bg_member[0],$@bg_member_size; copyarray .@bg_member_group[0],$@bg_member_group[0],$@bg_member_size; copyarray .@bg_member_type[0],$@bg_member_type[0],$@bg_member_size; freeloop(1); // Counting all participants and determining sizes, condensing .@bg_member_group set .@nogroupcount, 0; for (set .@i, 0; .@i < getarraysize(.@bg_member); set .@i, .@i + 1) { if (.@bg_member_group[.@i] == 0) { // Just count them set .@nogroupcount, .@nogroupcount + 1; continue; } // check if .@bg_member_group and .@bg_member_type already exists on these groups. for (set .@j, 0; .@j < getarraysize(.@bg_groups); set .@j, .@j + 1) { // <= since it has to start working even if the array is still blank if ( (.@bg_member_group[.@i] == .@bg_groups[.@j]) && (.@bg_member_type[.@i] == .@bg_types[.@j]) ) { set .@bg_count[.@j], .@bg_count[.@j] + 1; break; } // Else keep running the loop until we find there's a group already made or make a new one } if (.@j == (getarraysize(.@bg_groups)) ) { // It isn't there, insert a new entry at j set .@bg_groups[.@j], .@bg_member_group[.@i]; set .@bg_types[.@j], .@bg_member_type[.@i]; set .@bg_count[.@j], 1; } } // Now, sorting the group arrays from amount of population descending! Bubble sort powers, I call upon thee! // Type doesn't matter here for precedence checks, but also needs to be sorted the same way along with groups for (set .@i, 0; .@i < getarraysize(.@bg_groups); set .@i, .@i + 1) { for (set .@j, 0; .@j < (getarraysize(.@bg_groups) - .@i); set .@j, .@j + 1) { if (.@bg_count[.@j] < .@bg_count[.@j+1]){ set .@temp1, .@bg_groups[.@j]; set .@temp2, .@bg_types[.@j]; set .@temp3, .@bg_count[.@j]; set .@bg_groups[.@j], .@bg_groups[.@j+1]; set .@bg_types[.@j], .@bg_types[.@j+1]; set .@bg_count[.@j], .@bg_count[.@j+1]; set .@bg_groups[.@j+1], .@temp1; set .@bg_types[.@j+1], .@temp2; set .@bg_count[.@j+1], .@temp3; } } } // Add the groups to the queues! :D for (set .@i, 0; .@i < getarraysize(.@bg_groups); set .@i, .@i + 1){ if (queuesize($@Croix_QueueBG1) <= queuesize($@Guill_QueueBG1)){ // Catch'em all and add to the queue! for (set .@j, 0; .@j < getarraysize(.@bg_member); set .@j, .@j + 1) { if ( (.@bg_groups[.@i] == .@bg_member_group[.@j]) && (.@bg_types[.@i] == .@bg_member_type[.@j]) ) { bg_join_team($@FlaviusBG1_id1,.@bg_member[.@j]); queueadd($@Croix_QueueBG1, .@bg_member[.@j]); } } } else { for (set .@j, 0; .@j < getarraysize(.@bg_member); set .@j, .@j + 1) { if ( (.@bg_groups[.@i] == .@bg_member_group[.@j]) && (.@bg_types[.@i] == .@bg_member_type[.@j]) ) { bg_join_team($@FlaviusBG1_id2,.@bg_member[.@j]); queueadd($@Guill_QueueBG1, .@bg_member[.@j]); } } } } // Don't forget the people that go on their own! for (set .@i, 0; .@i <= getarraysize(.@bg_member); set .@i, .@i+1) { if (.@bg_member_group[.@i] == 0) { // Get alone people only if (queuesize($@Croix_QueueBG1) <= queuesize($@Guill_QueueBG1)) { bg_join_team($@FlaviusBG1_id1,.@bg_member[.@i]); queueadd($@Croix_QueueBG1, .@bg_member[.@i]); } else { bg_join_team($@FlaviusBG1_id2,.@bg_member[.@i]); queueadd($@Guill_QueueBG1, .@bg_member[.@i]); } } } freeloop(0); set $@FlaviusBG1, 1; set $@FlaviusBG1_Victory, 0; set $@Croix_ScoreBG1, 0; set $@Guill_ScoreBG1, 0; bg_updatescore "bat_b01",$@Guill_ScoreBG1,$@Croix_ScoreBG1; donpcevent "OBJ#bat_b01_a::OnKill"; donpcevent "OBJ#bat_b01_a::OnEnable"; donpcevent "OBJ#bat_b01_b::OnKill"; donpcevent "OBJ#bat_b01_b::OnEnable"; donpcevent "guardian#bat_b01_a::OnKill"; donpcevent "guardian#bat_b01_b::OnKill"; donpcevent "guardian#bat_b01_a::OnEnable"; donpcevent "guardian#bat_b01_b::OnEnable"; donpcevent "cell#bat_b01_a::OnRed"; donpcevent "cell#bat_b01_b::OnRed"; donpcevent "time#bat_b01::OnEnable"; disablenpc "Guillaume Vintenar#b01_a"; disablenpc "Croix Vintenar#b01_b"; disablenpc "Vintenar#bat_b01_aover"; disablenpc "Vintenar#bat_b01_bover"; bg_warp $@FlaviusBG1_id1,"bat_b01",87,75; bg_warp $@FlaviusBG1_id2,"bat_b01",311,224; /* after warp */ queueopt($@Guill_QueueBG1, QUEUEOPT_MAPCHANGE, "start#bat_b01::OnGuillaumeQuit"); queueopt($@Croix_QueueBG1, QUEUEOPT_MAPCHANGE, "start#bat_b01::OnCroixQuit"); donpcevent "countdown#bat_b01::OnEnable"; end; OnReset: donpcevent "OBJ#bat_b01_a::OnKill"; donpcevent "OBJ#bat_b01_a::OnEnable"; donpcevent "OBJ#bat_b01_b::OnKill"; donpcevent "OBJ#bat_b01_b::OnEnable"; donpcevent "guardian#bat_b01_a::OnKill"; donpcevent "guardian#bat_b01_b::OnKill"; donpcevent "guardian#bat_b01_a::OnEnable"; donpcevent "guardian#bat_b01_b::OnEnable"; donpcevent "cell#bat_b01_a::OnRed"; donpcevent "cell#bat_b01_b::OnRed"; donpcevent "time#bat_b01::OnEnable"; disablenpc "Guillaume Vintenar#b01_a"; disablenpc "Croix Vintenar#b01_b"; disablenpc "Vintenar#bat_b01_aover"; disablenpc "Vintenar#bat_b01_bover"; bg_warp $@FlaviusBG1_id1,"bat_b01",87,75; bg_warp $@FlaviusBG1_id2,"bat_b01",311,224; end; OnCroixQuit: queueremove($@Croix_QueueBG1,getcharid(CHAR_ID_ACCOUNT)); callsub L_OnPlayerQuit; end; OnGuillaumeQuit: queueremove($@Guill_QueueBG1,getcharid(CHAR_ID_ACCOUNT)); callsub L_OnPlayerQuit; end; L_OnPlayerQuit: bg_leave; setd $@bg_delay_var$,gettimetick(2); if( queuesize($@Guill_QueueBG1) == 0 || queuesize($@Croix_QueueBG1) == 0 ) /* todo check score and decide a winner if anyone left */ callsub OnMatchOver; end; OnMatchOver: if( $@FlaviusBG1_id1 || $@FlaviusBG1_id2 ) { queuedel($@Croix_QueueBG1); queuedel($@Guill_QueueBG1); bg_match_over("Flavius"); } if( $@FlaviusBG1_id1 ) { bg_destroy $@FlaviusBG1_id1; set $@FlaviusBG1_id1, 0; } if( $@FlaviusBG1_id2 ) { bg_destroy $@FlaviusBG1_id2; set $@FlaviusBG1_id2, 0; } end; } bat_b01,1,1,3 script OBJ#bat_b01_a CLEAR_NPC,{ OnEnable: bg_monster $@FlaviusBG1_id1,"bat_b01",61,150,"Pink Crystal",1915,"OBJ#bat_b01_a::OnMyMobDead"; end; OnKill: killmonster "bat_b01","OBJ#bat_b01_a::OnMyMobDead"; end; OnMyMobDead: if (mobcount("bat_b01","OBJ#bat_b01_a::OnMyMobDead") < 1) { mapannounce "bat_b01", "Guillaume's Crystal has been destroyed.",bc_map,"0xFFCE00"; if ($@Croix_ScoreBG1 > 0) { set $@FlaviusBG1_Victory,2; set $@Croix_ScoreBG1,$@Croix_ScoreBG1+1; enablenpc "Guillaume Vintenar#b01_a"; enablenpc "Croix Vintenar#b01_b"; donpcevent "time#bat_b01::OnStop"; donpcevent "start#bat_b01::OnMatchOver"; } else { set $@Croix_ScoreBG1,1; donpcevent "time#bat_b01::OnEnable"; donpcevent "start#bat_b01::OnReset"; } bg_updatescore "bat_b01",$@Guill_ScoreBG1,$@Croix_ScoreBG1; bg_warp $@FlaviusBG1_id1,"bat_b01",10,290; bg_warp $@FlaviusBG1_id2,"bat_b01",390,10; } end; } bat_b01,1,2,3 script OBJ#bat_b01_b CLEAR_NPC,{ OnEnable: bg_monster $@FlaviusBG1_id2,"bat_b01",328,150,"Blue Crystal",1914,"OBJ#bat_b01_b::OnMyMobDead"; end; OnKill: killmonster "bat_b01","OBJ#bat_b01_b::OnMyMobDead"; end; OnMyMobDead: if (mobcount("bat_b01","OBJ#bat_b01_b::OnMyMobDead") < 1) { mapannounce "bat_b01", "Croix's Crystal has been destroyed.",bc_map,"0xFFCE00"; if ($@Guill_ScoreBG1 > 0) { set $@FlaviusBG1_Victory,1; set $@Guill_ScoreBG1,$@Guill_ScoreBG1+1; enablenpc "Guillaume Vintenar#b01_a"; enablenpc "Croix Vintenar#b01_b"; donpcevent "time#bat_b01::OnStop"; donpcevent "start#bat_b01::OnMatchOver"; } else { set $@Guill_ScoreBG1,1; donpcevent "time#bat_b01::OnEnable"; donpcevent "start#bat_b01::OnReset"; } bg_updatescore "bat_b01",$@Guill_ScoreBG1,$@Croix_ScoreBG1; bg_warp $@FlaviusBG1_id1,"bat_b01",10,290; bg_warp $@FlaviusBG1_id2,"bat_b01",390,10; } end; } bat_b01,1,3,3 script guardian#bat_b01_a CLEAR_NPC,{ OnEnable: bg_monster $@FlaviusBG1_id1,"bat_b01",108,159,"Guillaume Camp Guardian",1949,"guardian#bat_b01_a::OnMyMobDead"; bg_monster $@FlaviusBG1_id1,"bat_b01",108,141,"Guillaume Camp Guardian",1949,"guardian#bat_b01_a::OnMyMobDead"; end; OnKill: killmonster "bat_b01","guardian#bat_b01_a::OnMyMobDead"; end; OnMyMobDead: if (mobcount("bat_b01","guardian#bat_b01_a::OnMyMobDead") < 1) { donpcevent "cell#bat_b01_a::OnGreen"; mapannounce "bat_b01", "The Guardian protecting Guillaume's Crystal has been slain.",bc_map,"0xFFCE00"; } end; } bat_b01,1,3,3 script guardian#bat_b01_b CLEAR_NPC,{ OnEnable: bg_monster $@FlaviusBG1_id2,"bat_b01",307,160,"Croix Camp Guardian",1949,"guardian#bat_b01_b::OnMyMobDead"; bg_monster $@FlaviusBG1_id2,"bat_b01",307,138,"Croix Camp Guardian",1949,"guardian#bat_b01_b::OnMyMobDead"; end; OnKill: killmonster "bat_b01","guardian#bat_b01_b::OnMyMobDead"; end; OnMyMobDead: if (mobcount("bat_b01","guardian#bat_b01_b::OnMyMobDead") < 1) { donpcevent "cell#bat_b01_b::OnGreen"; mapannounce "bat_b01", "The Guardian protecting Croix's Crystal has been slain.",bc_map,"0xFFCE00"; } end; } bat_b01,1,4,3 script cell#bat_b01_a CLEAR_NPC,{ OnRed: setcell "bat_b01",62,149,60,151,cell_basilica,1; setcell "bat_b01",62,149,60,151,cell_walkable,0; end; OnGreen: setcell "bat_b01",62,149,60,151,cell_basilica,0; setcell "bat_b01",62,149,60,151,cell_walkable,1; end; } bat_b01,1,5,3 script cell#bat_b01_b CLEAR_NPC,{ OnRed: setcell "bat_b01",327,151,329,149,cell_basilica,1; setcell "bat_b01",327,151,329,149,cell_walkable,0; end; OnGreen: setcell "bat_b01",327,151,329,149,cell_basilica,0; setcell "bat_b01",327,151,329,149,cell_walkable,1; end; } bat_b01,1,6,1 script time#bat_b01 CLEAR_NPC,{ OnEnable: donpcevent "Battle Therapist#b01_a::OnEnable"; donpcevent "Battle Therapist#b01_b::OnEnable"; end; OnStop: donpcevent "Battle Therapist#b01_a::OnStop"; donpcevent "Battle Therapist#b01_b::OnStop"; end; } bat_b01,10,294,3 script Battle Therapist#b01_a 4_F_SISTER,{ specialeffect(EF_HEAL, AREA, playerattached()); mes "[Battle Therapist]"; mes "Just close your eyes,"; mes "and take a deep breath."; mes "You can be free from pain."; close; OnTimer25000: specialeffect EF_SANCTUARY; enablenpc "bat_b01_rp1_a_warp"; end; OnTimer26000: disablenpc "bat_b01_rp1_a_warp"; end; OnTimer26500: stopnpctimer; donpcevent "Battle Therapist#b01_a::OnEnable"; end; OnEnable: initnpctimer; enablenpc "Battle Therapist#b01_a"; end; OnStop: disablenpc "bat_b01_rp1_a_warp"; disablenpc "Battle Therapist#b01_a"; stopnpctimer; end; } bat_b01,10,290,0 script bat_b01_rp1_a_warp WARPNPC,10,10,{ OnInit: disablenpc "bat_b01_rp1_a_warp"; end; OnTouch: percentheal 100,100; warp "bat_b01",87,73; end; } bat_b01,389,14,3 script Battle Therapist#b01_b 4_F_SISTER,{ specialeffect(EF_HEAL, AREA, playerattached()); mes "[Battle Therapist]"; mes "Just close your eyes,"; mes "and take a deep breath."; mes "You can be free from pain."; close; OnTimer25000: specialeffect EF_SANCTUARY; enablenpc "bat_b01_rp1_b_warp"; end; OnTimer26000: disablenpc "bat_b01_rp1_b_warp"; end; OnTimer26500: stopnpctimer; donpcevent "Battle Therapist#b01_b::OnEnable"; end; OnEnable: initnpctimer; enablenpc "Battle Therapist#b01_b"; end; OnStop: disablenpc "bat_b01_rp1_b_warp"; disablenpc "Battle Therapist#b01_b"; stopnpctimer; end; } bat_b01,389,10,0 script bat_b01_rp1_b_warp WARPNPC,9,9,{ OnInit: disablenpc "bat_b01_rp1_a_warp"; end; OnTouch: percentheal 100,100; warp "bat_b01",312,225; end; } bat_b01,87,76,0 script A_CODE#bat_b01 FAKE_NPC,5,5,{ OnTouch: if (!questprogress(2070)) setquest 2070; end; } bat_b01,312,224,0 script B_CODE#bat_b01 FAKE_NPC,5,5,{ OnTouch: if (!questprogress(2070)) setquest 2070; end; } bat_b01,10,294,3 script Guillaume Vintenar#b01_a 4_M_RASWORD,{ if ($@FlaviusBG1_id1 == getcharid(CHAR_ID_BG)) { if ($@FlaviusBG1_Victory == 1) { set .@your_medal,countitem(BF_Badge2); set .@medal_gap,500 - .@your_medal; if (.@medal_gap > 8) { mes "[Axl Rose]"; mes "Blessed Guillaume!"; mes "Let's enjoy our glorious victory!"; mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory."; close2; getitem BF_Badge2,9; } else { mes "[Axl Rose]"; mes "Blessed Guillaume!"; mes "Let's enjoy our glorious victory!"; mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory."; close2; getitem BF_Badge2,.@medal_gap; } } else { set .@your_medal,countitem(BF_Badge2); set .@medal_gap,500 - .@your_medal; if (.@medal_gap > 2) { mes "[Axl Rose]"; mes "You lost, but you're dedicated to this battle."; mes "This is a reward for your great dedication by Guillaume Marollo!"; mes "Just take this defeat as a lesson, next time you will definitely win."; close2; getitem BF_Badge2,3; } else { mes "[Axl Rose]"; mes "You lost, but you're dedicated to this battle."; mes "This is a reward for your great dedication by Guillaume Marollo!"; mes "Just take this defeat as a lesson, next time you will definitely win."; close2; getitem BF_Badge2,.@medal_gap; } } } bg_leave; warp "bat_room",154,150; end; OnInit: disablenpc "Guillaume Vintenar#b01_a"; end; } bat_b01,389,14,3 script Croix Vintenar#b01_b 4_M_RASWORD,{ if ($@FlaviusBG1_id2 == getcharid(CHAR_ID_BG)) { if ($@FlaviusBG1_Victory == 2) { set .@your_medal,countitem(BF_Badge2); set .@medal_gap,500 - .@your_medal; if (.@medal_gap > 8) { mes "[Swandery]"; mes "Blessed Croix!"; mes "Let's enjoy our glorious victory!"; mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory."; close2; getitem BF_Badge2,9; } else { mes "[Swandery]"; mes "Blessed Croix!"; mes "Let's enjoy our glorious victory!"; mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory."; close2; getitem BF_Badge2,.@medal_gap; } } else { set .@your_medal,countitem(BF_Badge2); set .@medal_gap,500 - .@your_medal; if (.@medal_gap > 2) { mes "[Swandery]"; mes "Oh, "+strcharinfo(PC_NAME)+". Don't be sad."; mes "Even though we didn't win, we did our best."; mes "This is a Royal gift from Croix, and please don't forget this battle. We will win the next one."; close2; getitem BF_Badge2,3; } else { mes "[Swandery]"; mes "Oh, "+strcharinfo(PC_NAME)+". Don't be sad."; mes "Even though we didn't win, we did our best."; mes "This is a Royal gift from Croix, and please don't forget this battle. We will win the next one."; close2; getitem BF_Badge2,.@medal_gap; } } } bg_leave; warp "bat_room",154,150; end; OnInit: disablenpc "Croix Vintenar#b01_b"; end; } bat_b01,1,5,3 script countdown#bat_b01 CLEAR_NPC,{ OnInit: stopnpctimer; end; OnEnable: stopnpctimer; initnpctimer; end; OnStop: stopnpctimer; end; OnTimer7000: mapannounce "bat_b01", "Guillaume Vintenar Axl Rose : Let's attack to destroy that Crystal!",bc_map,"0xFF9900"; end; OnTimer8000: mapannounce "bat_b01", "Croix Vintenar Swandery : Even though Guillaume is struggling to win against us, the victory is ours. Let's show them our power.",bc_map,"0xFF99CC"; end; OnTimer1800000: mapannounce "bat_b01", "Marollo VII : Guillaume Marollo, Croix Marollo! And their followers!",bc_map,"0x99CC00"; end; OnTimer1803000: mapannounce "bat_b01", "Marollo VII : Both camps are competitive, so it's hard to judge which team is superior.",bc_map,"0x99CC00"; end; OnTimer1808000: mapannounce "bat_b01", "Marollo VII : This battle of Flavian is such a waste of time. I will decide victory and defeat by your progress.",bc_map,"0x99CC00"; end; OnTimer1822000: mapannounce "bat_b01", "Marollo VII : If you can't accept the results, try again in another valley battle!",bc_map,"0x99CC00"; end; OnTimer1825000: mapannounce "bat_b01", "Axl Rose, Swandery : Yes, sir.",bc_map,"0x99CC00"; end; OnTimer1830000: donpcevent "time#bat_b01::OnStop"; bg_warp $@FlaviusBG1_id1,"bat_b01",10,290; bg_warp $@FlaviusBG1_id2,"bat_b01",390,10; enablenpc "Vintenar#bat_b01_aover"; enablenpc "Vintenar#bat_b01_bover"; end; OnTimer1900000: mapwarp "bat_b01","bat_room",154,150; donpcevent "countdown#bat_b01::OnStop"; donpcevent "start#bat_b01::OnMatchOver"; end; } bat_b01,81,83,3 script Guillaume Camp#flag21 1_FLAG_LION,{ end; } bat_b01,94,83,3 script Guillaume Camp#flag22 1_FLAG_LION,{ end; } bat_b01,81,66,3 script Guillaume Camp#flag23 1_FLAG_LION,{ end; } bat_b01,94,66,3 script Guillaume Camp#flag24 1_FLAG_LION,{ end; } bat_b01,139,142,3 script Guillaume Camp#flag25 1_FLAG_LION,{ end; } bat_b01,139,158,3 script Guillaume Camp#flag26 1_FLAG_LION,{ end; } bat_b01,110,161,3 script Guillaume Camp#flag27 1_FLAG_LION,{ end; } bat_b01,110,137,3 script Guillaume Camp#flag28 1_FLAG_LION,{ end; } bat_b01,63,135,3 script Guillaume Camp#flag29 1_FLAG_LION,{ end; } bat_b01,63,165,3 script Guillaume Camp#flag30 1_FLAG_LION,{ end; } bat_b01,10,296,3 script Guillaume Camp#flag31 1_FLAG_LION,{ end; } bat_b01,306,233,3 script Croix Camp#flag21 1_FLAG_EAGLE,{ end; } bat_b01,317,233,3 script Croix Camp#flag22 1_FLAG_EAGLE,{ end; } bat_b01,306,216,3 script Croix Camp#flag23 1_FLAG_EAGLE,{ end; } bat_b01,317,216,3 script Croix Camp#flag24 1_FLAG_EAGLE,{ end; } bat_b01,257,158,3 script Croix Camp#flag25 1_FLAG_EAGLE,{ end; } bat_b01,257,141,3 script Croix Camp#flag26 1_FLAG_EAGLE,{ end; } bat_b01,297,164,3 script Croix Camp#flag27 1_FLAG_EAGLE,{ end; } bat_b01,297,136,3 script Croix Camp#flag28 1_FLAG_EAGLE,{ end; } bat_b01,336,161,3 script Croix Camp#flag29 1_FLAG_EAGLE,{ end; } bat_b01,336,139,3 script Croix Camp#flag30 1_FLAG_EAGLE,{ end; } bat_b01,389,16,3 script Croix Camp#flag31 1_FLAG_EAGLE,{ end; } bat_b01,10,294,3 script Vintenar#bat_b01_aover 4_M_KY_HEAD,{ set .@A_B_gap,$@Guill_ScoreBG1 - $@Croix_ScoreBG1; if ($@FlaviusBG1_id1 == getcharid(CHAR_ID_BG)) { if (.@A_B_gap > 0) { set .@your_medal,countitem(BF_Badge2); set .@medal_gap,500 - .@your_medal; if (.@medal_gap > 8) { mes "[Axl Rose]"; mes "Blessed Guillaume!"; mes "Let's enjoy our glorious victory!"; mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory."; close2; getitem BF_Badge2,9; } else { mes "[Axl Rose]"; mes "Blessed Guillaume!"; mes "Let's enjoy our glorious victory!"; mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory."; close2; getitem BF_Badge2,.@medal_gap; } } else if (.@A_B_gap == 0) { set .@your_medal,countitem(BF_Badge2); set .@medal_gap,500 - .@your_medal; if (.@medal_gap > 2) { mes "[Axl Rose]"; mes "You lost, but you're dedicated to this battle."; mes "This is a reward for your great dedication by Guillaume Marollo!"; mes "Just take this defeat as a lesson, next time you will definitely win."; close2; getitem BF_Badge2,3; } else { mes "[Axl Rose]"; mes "You lost, but you're dedicated to this battle."; mes "This is a reward for your great dedication by Guillaume Marollo!"; mes "Just take this defeat as a lesson, next time you will definitely win."; close2; getitem BF_Badge2,.@medal_gap; } } else { set .@your_medal,countitem(BF_Badge2); set .@medal_gap,500 - .@your_medal; if (.@medal_gap > 2) { mes "[Axl Rose]"; mes "You lost, but you're dedicated to this battle."; mes "This is a reward for your great dedication by Guillaume Marollo!"; mes "Just take this defeat as a lesson, next time you will definitely win."; close2; getitem BF_Badge2,3; } else { mes "[Axl Rose]"; mes "You lost, but you're dedicated to this battle."; mes "This is a reward for your great dedication by Guillaume Marollo!"; mes "Just take this defeat as a lesson, next time you will definitely win."; close2; getitem BF_Badge2,.@medal_gap; } } } else { mes "[Axl Rose]"; mes "Why are you here, Croix mercenary? I am definitely sure of victory against foolish Croix such as you. Ha!"; close; } bg_leave; warp "bat_room",154,150; end; OnInit: disablenpc "Vintenar#bat_b01_aover"; end; } bat_b01,389,14,3 script Vintenar#bat_b01_bover 4_M_CRU_HEAD,{ set .@A_B_gap,$@Guill_ScoreBG1 - $@Croix_ScoreBG1; if ($@FlaviusBG1_id2 == getcharid(CHAR_ID_BG)) { if (.@A_B_gap > 0) { set .@your_medal,countitem(BF_Badge2); set .@medal_gap,500 - .@your_medal; if (.@medal_gap > 2) { mes "[Swandery]"; mes "Oh, "+strcharinfo(PC_NAME)+". Don't be sad."; mes "Even though we didn't win, we did our best."; mes "This is a Royal gift from Croix, and please don't forget this battle. We will win the next one."; close2; getitem BF_Badge2,3; } else { mes "[Swandery]"; mes "Oh, "+strcharinfo(PC_NAME)+". Don't be sad."; mes "Even though we didn't win, we did our best."; mes "This is a Royal gift from Croix, and please don't forget this battle. We will win the next one."; close2; getitem BF_Badge2,.@medal_gap; } } else if (.@A_B_gap == 0) { set .@your_medal,countitem(BF_Badge2); set .@medal_gap,500 - .@your_medal; if (.@medal_gap > 2) { mes "[Swandery]"; mes "Oh, "+strcharinfo(PC_NAME)+". Don't be sad."; mes "Even though we didn't win, we did our best."; mes "This is a Royal gift from Croix, and please don't forget this battle. We will win the next one."; close2; getitem BF_Badge2,3; } else { mes "[Swandery]"; mes "Oh, "+strcharinfo(PC_NAME)+". Don't be sad."; mes "Even though we didn't win, we did our best."; mes "This is a Royal gift from Croix, and please don't forget this battle. We will win the next one."; close2; getitem BF_Badge2,.@medal_gap; } } else { set .@your_medal,countitem(BF_Badge2); set .@medal_gap,500 - .@your_medal; if (.@medal_gap > 8) { mes "[Swandery]"; mes "Blessed Croix!"; mes "Let's enjoy our glorious victory!"; mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory."; close2; getitem BF_Badge2,9; } else { mes "[Swandery]"; mes "Blessed Croix!"; mes "Let's enjoy our glorious victory!"; mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory."; close2; getitem BF_Badge2,.@medal_gap; } } } else { mes "[Swandery]"; mes "Why do you come here as a Guillaume? You will be sent to where you should be!"; close; } bg_leave; warp "bat_room",154,150; end; OnInit: disablenpc "Vintenar#bat_b01_bover"; end; }