diff options
50 files changed, 4888 insertions, 406 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 61c944bca..dbb6872e1 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,6 +3,8 @@ Date Added AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. +2010/08/14 + * Rev. 14373 Quest log kill count now updated properly. (Added from topic 253813) [L0ne_W0lf] 2010/08/11 * Documented Battleground commands with as much information as I've got. [L0ne_W0lf] 2010/08/03 diff --git a/conf/mapflag/battleground.txt b/conf/mapflag/battleground.txt new file mode 100644 index 000000000..4a1ff0f66 --- /dev/null +++ b/conf/mapflag/battleground.txt @@ -0,0 +1,19 @@ +//===== eAthena Script ======================================= +//= Battleground map setting. '2' shows scoreboard. +//===== By: ================================================== +//= Epoque +//===== Current Version: ===================================== +//= 1.0a [Epoque] +//===== Compatible With: ===================================== +//= +//===== Description: ========================================= +//= +//============================================================ + +bat_c01 mapflag battleground 2 +bat_c02 mapflag battleground 2 +bat_c03 mapflag battleground 2 +bat_b01 mapflag battleground 2 +bat_b02 mapflag battleground +bat_a01 mapflag battleground +bat_a02 mapflag battleground diff --git a/conf/mapflag/fireworks.txt b/conf/mapflag/fireworks.txt new file mode 100644 index 000000000..90d89eb1b --- /dev/null +++ b/conf/mapflag/fireworks.txt @@ -0,0 +1,13 @@ +//===== eAthena Script ======================================= +//= Displays Fireworks effect (Depreciated) +//===== By: ================================================== +//= Epoque +//===== Current Version: ===================================== +//= 1.0a [Epoque] +//===== Compatible With: ===================================== +//= +//===== Description: ========================================= +//= +//============================================================ + +//prontera mapflag fireworks diff --git a/conf/mapflag/night.txt b/conf/mapflag/night.txt index 70cd1431f..6daaa1b2a 100644 --- a/conf/mapflag/night.txt +++ b/conf/mapflag/night.txt @@ -271,6 +271,14 @@ que_qaru03 mapflag nightenabled que_qaru04 mapflag nightenabled que_qaru05 mapflag nightenabled +// Battle Grounds ============== +bat_c01 mapflag nightenabled +bat_c02 mapflag nightenabled +bat_c03 mapflag nightenabled + +//Endless Tower ================== +e_tower mapflag nightenabled + // Episode 13 ==================== mid_camp mapflag nightenabled man_fild01 mapflag nightenabled @@ -287,9 +295,5 @@ manuk mapflag nightenabled man_fild02 mapflag nightenabled splendide mapflag nightenabled spl_fild01 mapflag nightenabled -bat_c01 mapflag nightenabled -bat_c02 mapflag nightenabled -bat_c03 mapflag nightenabled -//Endless Tower ================== -e_tower mapflag nightenabled +//evt_zombie mapflag nightenabled diff --git a/conf/mapflag/nobranch.txt b/conf/mapflag/nobranch.txt index 70018fe2e..014fa0169 100644 --- a/conf/mapflag/nobranch.txt +++ b/conf/mapflag/nobranch.txt @@ -9,7 +9,7 @@ //= 1.8 Removed restriction on PVP maps. [L0ne_W0lf] //===== Current Version: ===================================== -// Cities ================>\\ +// Cities ====================== ayo_in01 mapflag nobranch ayo_in02 mapflag nobranch alb_ship mapflag nobranch @@ -95,7 +95,7 @@ ve_in mapflag nobranch ve_in02 mapflag nobranch thor_camp mapflag nobranch -// Job Quests ==================== +// Job Quests ================== job_sword1 mapflag nobranch job_thief1 mapflag nobranch // 2-1 @@ -118,7 +118,7 @@ que_ng mapflag nobranch job_soul mapflag nobranch job_star mapflag nobranch -// Special Quests Places ========= +// Special Quests Places ======= que_god01 mapflag nobranch que_god02 mapflag nobranch que_bingo mapflag nobranch @@ -135,7 +135,7 @@ que_rachel mapflag nobranch que_san04 mapflag nobranch que_thor mapflag nobranch -// Guild Castles ================== +// Guild Castles =============== //alde_gld mapflag nobranch aldeg_cas01 mapflag nobranch aldeg_cas02 mapflag nobranch @@ -178,14 +178,14 @@ nguild_gef mapflag nobranch nguild_pay mapflag nobranch nguild_prt mapflag nobranch -// GvG Arenas ===================== +// GvG Arenas ================== guild_vs1 mapflag nobranch guild_vs2 mapflag nobranch guild_vs3 mapflag nobranch guild_vs4 mapflag nobranch guild_vs5 mapflag nobranch -// Arenas ================>\\ +// Arenas ====================== arena_room mapflag nobranch force_1-1 mapflag nobranch force_1-2 mapflag nobranch @@ -219,11 +219,11 @@ prt_are01 mapflag nobranch //wizard_2-1 mapflag nobranch //wizard_3-1 mapflag nobranch -// PvP Arenas ========================= +// PvP Arenas ================== pvp_y_room mapflag nobranch pvp_n_room mapflag nobranch -//Main City maps +// Main City maps ============== alberta mapflag nobranch aldebaran mapflag nobranch amatsu mapflag nobranch @@ -259,11 +259,11 @@ turbo_e_4 mapflag nobranch turbo_e_8 mapflag nobranch turbo_e_16 mapflag nobranch -//Monster Races ================ +// Monster Races =============== p_track01 mapflag nobranch p_track02 mapflag nobranch -//Vision of Okolnir ============ +// Vision of Okolnir =========== que_qsch01 mapflag nobranch que_qsch02 mapflag nobranch que_qsch03 mapflag nobranch @@ -274,3 +274,15 @@ que_qaru02 mapflag nobranch que_qaru03 mapflag nobranch que_qaru04 mapflag nobranch que_qaru05 mapflag nobranch + +// Battle Grounds ============== +bat_c01 mapflag nobranch +bat_c02 mapflag nobranch +bat_c03 mapflag nobranch +bat_room mapflag nobranch +bat_b01 mapflag nobranch +bat_b02 mapflag nobranch +bat_a01 mapflag nobranch +bat_a02 mapflag nobranch + +//evt_zombie mapflag nobranch diff --git a/conf/mapflag/noloot.txt b/conf/mapflag/noloot.txt index e488f8f0a..7c3c0bfa4 100644 --- a/conf/mapflag/noloot.txt +++ b/conf/mapflag/noloot.txt @@ -1,16 +1,16 @@ //===== eAthena Script ======================================= -//= Map flags that disable drop of loot +//= Mapflag from a script in the NPC folder //===== By: ================================================== -//= eAthena Dev Team -//= 1.2 [Lupus] 1.3 [massdriller] 1.4 Lupus 1.5 Lorky -//= 1.6 Added Lighthalzen (due to quests) [Lupus] -//= 1.7 Commented out entries. (Quests are official) [L0ne_W0lf] +//= Epoque +//===== Current Version: ===================================== +//= 1.0a [Epoque] +//===== Compatible With: ===================================== +//= +//===== Description: ========================================= +//= //============================================================ -// Location for Job's Quests -//job_sword1 mapflag noloot -//in_moc_16 mapflag noloot -//job_hunte mapflag noloot +//hunte mapflag noloot //job_knt mapflag noloot //job_prist mapflag noloot //job_wiz mapflag noloot diff --git a/conf/mapflag/nomemo.txt b/conf/mapflag/nomemo.txt index a2ffb46d6..960b790c4 100644 --- a/conf/mapflag/nomemo.txt +++ b/conf/mapflag/nomemo.txt @@ -1,4 +1,5 @@ //===== eAthena Script ======================================= +//===== eAthena Script ======================================= //= Map flags that disable warp portal memory //===== By: ================================================== //= eAthena Dev Team @@ -637,6 +638,16 @@ que_qaru05 mapflag nomemo 5@tower mapflag nomemo 6@tower mapflag nomemo +// Battle Grounds ================ +bat_c01 mapflag nomemo +bat_c02 mapflag nomemo +bat_c03 mapflag nomemo +bat_room mapflag nomemo +bat_b01 mapflag nomemo +bat_b02 mapflag nomemo +bat_a01 mapflag nomemo +bat_a02 mapflag nomemo + // Episode 13 ==================== mid_campin mapflag nomemo man_fild01 mapflag nomemo @@ -666,3 +677,5 @@ spl_in01 mapflag nomemo // Nidhoggr's Instance =========== 1@nyd mapflag nomemo 2@nyd mapflag nomemo + +//evt_zombie mapflag nomemo diff --git a/conf/mapflag/nopenalty.txt b/conf/mapflag/nopenalty.txt index ddffc147e..b34c99191 100644 --- a/conf/mapflag/nopenalty.txt +++ b/conf/mapflag/nopenalty.txt @@ -238,3 +238,15 @@ que_qaru02 mapflag nopenalty que_qaru03 mapflag nopenalty que_qaru04 mapflag nopenalty que_qaru05 mapflag nopenalty + +// Battle Grounds ============== +bat_c01 mapflag nopenalty +bat_c02 mapflag nopenalty +bat_c03 mapflag nopenalty +bat_room mapflag nopenalty +bat_b01 mapflag nopenalty +bat_b02 mapflag nopenalty +bat_a01 mapflag nopenalty +bat_a02 mapflag nopenalty + +//evt_zombie mapflag nopenalty diff --git a/conf/mapflag/nopvp.txt b/conf/mapflag/nopvp.txt index 379d0eb90..176c3512d 100644 --- a/conf/mapflag/nopvp.txt +++ b/conf/mapflag/nopvp.txt @@ -79,4 +79,5 @@ ein_in01 mapflag pvp off ayothaya mapflag pvp off veins mapflag pvp off ve_in mapflag pvp off -ve_in02 mapflag pvp off
\ No newline at end of file +ve_in02 mapflag pvp off +//evt_zombie mapflag pvp off diff --git a/conf/mapflag/noreturn.txt b/conf/mapflag/noreturn.txt index 3f9a201e9..f6a31b272 100644 --- a/conf/mapflag/noreturn.txt +++ b/conf/mapflag/noreturn.txt @@ -229,3 +229,14 @@ que_hugel mapflag noreturn //pvp_n_8-4 mapflag noreturn //pvp_n_8-5 mapflag noreturn //pvp_2vs2 mapflag noreturn + +// Battle Grounds ============== +bat_c01 mapflag noreturn +bat_c02 mapflag noreturn +bat_c03 mapflag noreturn +bat_b01 mapflag noreturn +bat_b02 mapflag noreturn +bat_a01 mapflag noreturn +bat_a02 mapflag noreturn + +//evt_zombie mapflag noreturn diff --git a/conf/mapflag/nosave.txt b/conf/mapflag/nosave.txt index c02af5947..7c254eee2 100644 --- a/conf/mapflag/nosave.txt +++ b/conf/mapflag/nosave.txt @@ -239,6 +239,15 @@ e_tower mapflag nosave SavePoint 5@tower mapflag nosave SavePoint 6@tower mapflag nosave SavePoint +// Battle Grounds ============== +bat_c01 mapflag nosave SavePoint +bat_c02 mapflag nosave SavePoint +bat_c03 mapflag nosave SavePoint +bat_b01 mapflag nosave SavePoint +bat_b02 mapflag nosave SavePoint +bat_a01 mapflag nosave SavePoint +bat_a02 mapflag nosave SavePoint + // Episode 13 ==================== moc_fild22b mapflag nosave SavePoint que_dan01 mapflag nosave SavePoint @@ -258,3 +267,5 @@ arug_dun01 mapflag nosave SavePoint arug_dun01 mapflag nosave SavePoint schg_dun01 mapflag nosave SavePoint + +//evt_zombie mapflag nosave SavePoint diff --git a/conf/mapflag/noskill.txt b/conf/mapflag/noskill.txt index 35af4894c..28b1b70b7 100644 --- a/conf/mapflag/noskill.txt +++ b/conf/mapflag/noskill.txt @@ -13,12 +13,18 @@ prt_are_in mapflag noskill himinn mapflag noskill
// Quiz Maps ===================
-quiz_00 mapflag noskill
-quiz_01 mapflag noskill
-quiz_02 mapflag noskill
-quiz_test mapflag noskill
+quiz_00 mapflag noskill
+
+quiz_01 mapflag noskill
+
+quiz_02 mapflag noskill
+
+quiz_test mapflag noskill
+
//Hugel Minigames ==============
que_bingo mapflag noskill
p_track01 mapflag noskill
p_track02 mapflag noskill
+
+//evt_zombie mapflag noskill
diff --git a/conf/mapflag/noteleport.txt b/conf/mapflag/noteleport.txt index b532732b4..b88cb0188 100644 --- a/conf/mapflag/noteleport.txt +++ b/conf/mapflag/noteleport.txt @@ -353,6 +353,16 @@ e_tower mapflag noteleport 6@tower mapflag noteleport 6@tower mapflag monster_noteleport +// Battle Grounds ============== +bat_c01 mapflag noteleport +bat_c02 mapflag noteleport +bat_c03 mapflag noteleport +bat_room mapflag noteleport +bat_b01 mapflag noteleport +bat_b02 mapflag noteleport +bat_a01 mapflag noteleport +bat_a02 mapflag noteleport + // Episode 13 ==================== mid_campin mapflag noteleport moc_fild22b mapflag noteleport @@ -377,3 +387,5 @@ nyd_dun02 mapflag noteleport 1@nyd mapflag monster_noteleport 2@nyd mapflag noteleport 2@nyd mapflag monster_noteleport + +//evt_zombie mapflag noteleport diff --git a/conf/mapflag/novending.txt b/conf/mapflag/novending.txt new file mode 100644 index 000000000..34eb4549e --- /dev/null +++ b/conf/mapflag/novending.txt @@ -0,0 +1,14 @@ +//===== eAthena Script ======================================= +//= Mapflag from a script in the NPC folder +//===== By: ================================================== +//= Epoque +//===== Current Version: ===================================== +//= 1.0a [Epoque] +//===== Compatible With: ===================================== +//= +//===== Description: ========================================= +//= +//============================================================ + +//prontera mapflag novending +//prt_in mapflag novending diff --git a/conf/mapflag/nowarp.txt b/conf/mapflag/nowarp.txt index e7c910326..63c9aaaae 100644 --- a/conf/mapflag/nowarp.txt +++ b/conf/mapflag/nowarp.txt @@ -57,3 +57,11 @@ turbo_e_16 mapflag nowarp //Monster Races ================ p_track01 mapflag nowarp p_track02 mapflag nowarp +// Battle Grounds ============== +bat_c01 mapflag nowarp +bat_c02 mapflag nowarp +bat_c03 mapflag nowarp +bat_b01 mapflag nowarp +bat_b02 mapflag nowarp +bat_a01 mapflag nowarp +bat_a02 mapflag nowarp diff --git a/conf/mapflag/nowarpto.txt b/conf/mapflag/nowarpto.txt index c37d6e194..01d27eda5 100644 --- a/conf/mapflag/nowarpto.txt +++ b/conf/mapflag/nowarpto.txt @@ -99,6 +99,16 @@ e_tower mapflag nowarpto 5@tower mapflag nowarpto 6@tower mapflag nowarpto +// Battle Grounds ============== +bat_c01 mapflag nowarpto +bat_c02 mapflag nowarpto +bat_c03 mapflag nowarpto +bat_room mapflag nowarpto +bat_b01 mapflag nowarpto +bat_b02 mapflag nowarpto +bat_a01 mapflag nowarpto +bat_a02 mapflag nowarpto + // Episode 13 ==================== mid_campin mapflag nowarpto man_fild01 mapflag nowarpto diff --git a/conf/mapflag/town.txt b/conf/mapflag/town.txt new file mode 100644 index 000000000..13ba10939 --- /dev/null +++ b/conf/mapflag/town.txt @@ -0,0 +1,33 @@ +//===== eAthena Script ======================================= +//= Allows Mailbox access +//===== By: ================================================== +//= Epoque +//===== Current Version: ===================================== +//= 1.0a [Epoque] +//===== Compatible With: ===================================== +//= +//===== Description: ========================================= +//= +//============================================================ + +prontera mapflag town +izlude mapflag town +moc_ruins mapflag town +geffen mapflag town +payon mapflag town +pay_arche mapflag town +alberta mapflag town +aldebaran mapflag town +yuno mapflag town +lighthalzen mapflag town +einbroch mapflag town +einbech mapflag town +comodo mapflag town +umbala mapflag town +amatsu mapflag town +gonryun mapflag town +ayothaya mapflag town +louyang mapflag town +hugel mapflag town +rachel mapflag town +veins mapflag town diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 7b043fa2b..06a5a7121 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -6735,7 +6735,8 @@ color can be: <On Quit Event> refers to an NPC label that attaches to the character and is run when they relog. <On Death Event> refers to an NPC label that attaches to the character and is run when they die. Can be "" for empty. -Unlike the prior command, the latter will attach a GROUP in a waiting room to the battleground. +Unlike the prior command, the latter will attach a GROUP in a waiting room to the battleground, and +sets the array $@arenamembers[0] where 0 holds the IDs of the first group, and 1 holds the IDs of the second. Example: // Battle Group will be refered to as $@KvM01BG_id1, and when they die, respawn at bat_c01,52,129. diff --git a/npc/Changelog.txt b/npc/Changelog.txt index d6cc8a1ec..8806c17d2 100644 --- a/npc/Changelog.txt +++ b/npc/Changelog.txt @@ -1,7 +1,20 @@ Date Added ====== 2010/08/11 - * Rev. 14369 Another rather large overhaul of the battlegrounds. [L0ne_W0lf] + * Rev. 14374 More battleground editing, and some bug fixes. [L0ne_W0lf] + - * ALL BATTLEGROUNDS ARE NOW ACTIVE BY DEFAULT. PLEASE CONTINUE TESTING * + - Rewrote the Badge Exchange NPC in bg_common.txt, is official now. + - Other changes to the bg_common folder, including disabled GM NPC. + - Completely rewrote Flavius for the most part, from ground up. + - Moved old Flavius battlegrounds to /custom/battleground folder. + - Restored original bg_common, and KVM to /custom/battleground + - Fixed wall bugs in Tierra Gorge, and added an oninit to the timers. + - Other minor tweaks to both Tierra Gorge and KVM scripts. + - Fixed the pseudo-cooldown on KVM not working properly, I hope. + - Added global time2str function which will be used later in Endless tower. + * Applied Epoque's mapflag clean up, which removes flags from scripts. +2010/08/11 + * Rev. 14373 Another rather large overhaul of the battlegrounds. [L0ne_W0lf] - in bg_common.txt, stripped out several more NPCs, split them off. - Most of the NPCs in bg_common.txt are now official Aegis versions. - Completely rewrote Tierra Gorge for the most part, from ground up. diff --git a/npc/battleground/bg_common.txt b/npc/battleground/bg_common.txt index df3dbaf41..cf6a85bc1 100644 --- a/npc/battleground/bg_common.txt +++ b/npc/battleground/bg_common.txt @@ -1,15 +1,23 @@ -// ============================================================================== +//===== eAthena Script ======================================= // BattleGround System - Common NPCs -// ============================================================================== - -// MapFlags -// ********************************************************************* - -bat_room mapflag nomemo -bat_room mapflag nowarpto -bat_room mapflag nobranch -bat_room mapflag nopenalty -bat_room mapflag noteleport +//===== By: ================================================== +//= ????, L0ne_W0lf +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= eAthena 1.0 +//===== Description: ========================================= +//= [AEGIS Conversion] +//= Battleground npcs: +//= - Generals and Aides +//= - Battlegroun Warper +//= - Kafra and Repairman. +//= - GM Management NPC (Disabled by default) +//= - Badge Exhanger (Tierra and Flavius.) +//===== Additional Comments: ================================= +//= 1.0 First Version. +//= 1.1 Updated several NPCs to Official. +//============================================================ // Generals //============================================================ @@ -269,197 +277,551 @@ payon,189,105,3 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit5 728 lighthalzen,153,86,5 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit6 728 rachel,149,138,3 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit7 728 -// Time calculation Function -// ********************************************************************* -function script Time2Str { - set .@Time_Left, getarg(0) - gettimetick(2); - - set .@Days, .@Time_Left / 86400; - set .@Time_Left, .@Time_Left - (.@Days * 86400); - set .@Hours, .@Time_Left / 3600; - set .@Time_Left, .@Time_Left - (.@Hours * 3600); - set .@Minutes, .@Time_Left / 60; - set .@Time_Left, .@Time_Left - (.@Minutes * 60); - - set .@Time$, ""; - if( .@Days > 1 ) - set .@Time$, .@Time$ + .@Days + " days, "; - else if( .@Days > 0 ) - set .@Time$, .@Time$ + .@Days + " day, "; - - if( .@Hours > 1 ) - set .@Time$, .@Time$ + .@Hours + " hours, "; - else if( .@Hours > 0 ) - set .@Time$, .@Time$ + .@Hours + " hour, "; - - if( .@Minutes > 1 ) - set .@Time$, .@Time$ + .@Minutes + " minutes, "; - else if( .@Minutes > 0 ) - set .@Time$, .@Time$ + .@Minutes + " minute, "; - - if( .@Time_Left > 1 || .@Time_Left == 0 ) - set .@Time$, .@Time$ + .@Time_Left + " seconds."; - else if( .@Time_Left == 1 ) - set .@Time$, .@Time$ + .@Time_Left + " second."; - - return .@Time$; -} - -// Exit from Registration -// ********************************************************************* -- script warp2bat_room -1,{ - end; - -OnTouch: - set BG_Delay_Tick, gettimetick(2) + 30; - warp "bat_room",154,149; - end; -} - -// Flavius bat_b02 -bat_room,57,81,0 duplicate(warp2bat_room) bat1 45,1,1 -bat_room,57,90,0 duplicate(warp2bat_room) bat2 45,1,1 +// Additional warps // Empty -bat_room,85,81,0 duplicate(warp2bat_room) bat5 45,1,1 -bat_room,85,90,0 duplicate(warp2bat_room) bat6 45,1,1 +bat_room,57,81,0 warp bat1 1,1,bat_room,154,149 +bat_room,57,90,0 warp bat2 1,1,bat_room,154,149 // Empty -bat_room,85,220,0 duplicate(warp2bat_room) bat7 45,1,1 -bat_room,85,211,0 duplicate(warp2bat_room) bat8 45,1,1 -// Free BG -bat_room,113,81,0 duplicate(warp2bat_room) bat9 45,1,1 -bat_room,113,90,0 duplicate(warp2bat_room) bat10 45,1,1 +bat_room,85,81,0 warp bat5 1,1,bat_room,154,149 +bat_room,85,90,0 warp bat6 1,1,bat_room,154,149 // Free BG -bat_room,141,81,0 duplicate(warp2bat_room) bat13 45,1,1 -bat_room,141,90,0 duplicate(warp2bat_room) bat14 45,1,1 +bat_room,113,81,0 warp bat9 1,1,bat_room,154,149 +bat_room,113,90,0 warp bat10 1,1,bat_room,154,149 // Free BG -bat_room,141,220,0 duplicate(warp2bat_room) bat15 45,1,1 -bat_room,141,211,0 duplicate(warp2bat_room) bat16 45,1,1 +bat_room,141,81,0 warp bat13 1,1,bat_room,154,149 +bat_room,141,90,0 warp bat14 1,1,bat_room,154,149 // Free BG -bat_room,169,81,0 duplicate(warp2bat_room) bat17 45,1,1 -bat_room,169,90,0 duplicate(warp2bat_room) bat18 45,1,1 +bat_room,169,81,0 warp bat17 1,1,bat_room,154,149 +bat_room,169,90,0 warp bat18 1,1,bat_room,154,149 // Free BG -bat_room,197,81,0 duplicate(warp2bat_room) bat21 45,1,1 -bat_room,197,90,0 duplicate(warp2bat_room) bat22 45,1,1 +bat_room,197,81,0 warp bat21 1,1,bat_room,154,149 +bat_room,197,90,0 warp bat22 1,1,bat_room,154,149 // Free BG -bat_room,225,81,0 duplicate(warp2bat_room) bat25 45,1,1 -bat_room,225,90,0 duplicate(warp2bat_room) bat26 45,1,1 -// Flavius bat_b01 -bat_room,253,81,0 duplicate(warp2bat_room) bat29 45,1,1 -bat_room,253,90,0 duplicate(warp2bat_room) bat30 45,1,1 +bat_room,225,81,0 warp bat25 1,1,bat_room,154,149 +bat_room,225,90,0 warp bat26 1,1,bat_room,154,149 +// Empty +bat_room,253,81,0 warp bat29 1,1,bat_room,154,149 +bat_room,253,90,0 warp bat30 1,1,bat_room,154,149 // Empty -bat_room,253,220,0 duplicate(warp2bat_room) bat31 45,1,1 -bat_room,253,211,0 duplicate(warp2bat_room) bat32 45,1,1 +bat_room,253,220,0 warp bat31 1,1,bat_room,154,149 +bat_room,253,211,0 warp bat32 1,1,bat_room,154,149 // Kafra -// ********************************************************************* +//============================================================ bat_room,148,147,4 script Kafra Staff::kaf_bat 861,{ cutin "kafra_09",2; callfunc "F_Kafra",0,2,1,150,0; } -// Badges Repairman -// ********************************************************************* - +// Repairman +//============================================================ bat_room,138,144,5 script Repairman#bg 86,{ callfunc "repairmain","Repairman"; end; } -// Badges Exchange -// ********************************************************************* +/* +// GM Management NPC +//============================================================ +bat_room,1,151,3 script Switch#batgnd 81,{ + input .@input,0,2000; + if (.@input == 0) { + mes "The command has been cancelled."; + close; + } + else if (.@input == 1854) { + mes "May I help ypu?"; + next; + switch(select("Close Battlefield:Open Battlefield:Reset a01:Reset b01:Reset a02:Reset b02")) { + case 1: + disablenpc "Tierra Gorge Officer#01a"; + disablenpc "Tierra Gorge Officer#02a"; + disablenpc "Tierra Gorge Officer#01b"; + disablenpc "Tierra Gorge Officer#02b"; + disablenpc "Flavius Officer#01a"; + disablenpc "Flavius Officer#01b"; + disablenpc "Flavius Officer#02a"; + disablenpc "Flavius Officer#02b"; + break; + case 2: + enablenpc "Tierra Gorge Officer#01a"; + enablenpc "Tierra Gorge Officer#02a"; + enablenpc "Tierra Gorge Officer#01b"; + enablenpc "Tierra Gorge Officer#02b"; + enablenpc "Flavius Officer#01a"; + enablenpc "Flavius Officer#01b"; + enablenpc "Flavius Officer#02a"; + enablenpc "Flavius Officer#02b"; + break; + case 3: + donpcevent "start#bat_a01::OnEnable"; + break; + case 4: + donpcevent "start#bat_b01::OnEnable"; + break; + case 5: + donpcevent "start#bat_a02::OnEnable"; + break; + case 6: + donpcevent "start#bat_b02::OnEnable"; + break; + } + mes "Complete"; + close; + } +} +*/ +// Badges Exchange +//============================================================ bat_room,160,150,3 script Erundek 109,{ + if (checkweight(1201,1) == 0) { + mes "- Wait a minute !! -"; + mes "- Currently you're carrying -"; + mes "- too many items with you. -"; + mes "- Please try again -"; + mes "- after you loose some weight. -"; + close; + } mes "[Erundek]"; - mes "Welcome, mighty warrior."; - mes "What can I do for you today ?"; + mes "Do you have the battlefield badges?"; + mes "I can exchange Bravery Badges and Valor Badges for reward items."; next; - switch( select("Check the Catalog","Exchange Bravery Badges","Exchange Valor Badges","Hmm, nothing I guess.") ) - { + switch(select("Exchange Badges:Check the Catalog")) { + case 1: + mes "[Erundek]"; + mes "Which type of items would you like to exchange?"; + mes "To check more information about the reward items, please use our ^3131FFCatalog^000000."; + next; + switch(select("Weapon:Armor:Accessory:Consumable")) { case 1: mes "[Erundek]"; - mes "We have many items, so please take a look and purchase deliberately."; - close2; - Readbook 11010,1; - end; - case 4: + mes "You chose ^3131FFWeapon^000000."; + mes "The following weapons are available for exchange with the battlefield badges."; + mes "Please note that items for ^3131FFBravery Badges are indicated as (BB)^000000, and ^3131FFValor Badges as (VB)^000000."; + next; + switch(select("Dagger/OneSword/TwoSword/TwoSpear:Staff/Mace/TwoAxe/Shuriken:Bow/Katar/Music/Whip:Book/Knuckle:Revolver/Rifle/Gatling/Shotgun/Launcher")) { + case 1: + mes "[Erundek]"; + mes "The following items are available in the ^3131FFDagger, One-Handed Sword, Two-Handed Sword, and Two-Handed Spear^000000 category."; + next; + switch(select("Brave Assassin's Damascus(BB):Valorous Assassin's Damascus(VB):Brave Gladiator's Blade(BB):Valorous Gladiator's Blade(VB):Brave Assaulter's Katzbalger(BB):Valorous Assaulters's Katzbalger(VB):Assaulter Spear:Assaulter Lance")) { + case 1: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],13036,1; //BF_Dagger1 + break; + case 2: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],13037,1; //BF_Dagger2 + break; + case 3: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],13411,1; //BF_Sword2 + break; + case 4: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],13410,1; //BF_Sword1 + break; + case 5: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],1183,1; //BF_Two_Handed_Sword1 + break; + case 6: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],1184,1; //BF_Two_Handed_Sword2 + break; + case 7: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],1425,1; //BF_Spear1 + break; + case 8: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],1482,1; //BF_Lance1 + break; + } + break; + case 2: + mes "[Erundek]"; + mes "The following items are available in the ^3131FFStaff / Mace / Two-Handed Axe / Huuma Shuriken^000000 category."; + next; + switch(select("Warlock's Magic Wand(BB):Warlock's Battle Wand(VB):Strong Recovery Wand:Speedy Recovery Wand:Brave Battlefield Morning Star(BB):Valorous Battlefield Morning Star(VB):Insane Battle Axe(BB):Insane Battle Axe(VB):Brave Huuma Front Shuriken(BB):Valorous Huuma Front Shuriken(VB)")) { + case 1: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],1632,1; //BF_Staff1 + break; + case 2: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],1633,1; //BF_Staff2 + break; + case 3: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],1634,1; //BF_Staff3 + break; + case 4: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],1635,1; //BF_Staff4 + break; + case 5: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],1543,1; //BF_Morning_Star2 + break; + case 6: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],1542,1; //BF_Morning_Star1 + break; + case 7: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],1380,1; //BF_Two_Handed_Axe2 + break; + case 8: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],1379,1; //BF_Two_Handed_Axe1 + break; + case 9: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],13305,1; //BF_Huuma_Shuriken1 + break; + case 10: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],13306,1; //BF_Huuma_Shuriken2 + break; + } + break; + case 3: + mes "[Erundek]"; + mes "The following weapons are available in the ^3131FFBow / Katar / Musical Instrument / Whip^000000 category."; + next; + switch(select("Brave Battle CrossBow(BB):Valorous Battle CrossBow(VB):Brave Carnage Katar(BB):Valorous Carnage Katar(VB):Brave Battlefield Guitar(BB):Valorous Battlefield Guitar(VB):Brave Battle Lariat(BB):Valorous Battle Lariat(VB)")) { + case 1: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],1739,1; //BF_Bow2 + break; + case 2: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],1738,1; //BF_Bow1 + break; + case 3: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],1279,1; //BF_Katar1 + break; + case 4: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],1280,1; //BF_Katar2 + break; + case 5: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],1924,1; //BF_Instrument2 + break; + case 6: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],1923,1; //BF_Instrument1 + break; + case 7: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],1978,1; //BF_Whip2 + break; + case 8: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],1977,1; //BF_Whip1 + break; + } + break; + case 4: + mes "[Erundek]"; + mes "The following weapons are available in the ^3131FFBook / Knuckle^000000 category."; + next; + switch(select("Brave Battle Strategy Book(BB):Valorous Battle Strategy Book(VB):Brave Battle Fist(BB):Valorous Battle Fist(VB)")) { + case 1: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],1574,1; //BF_Book1 + break; + case 2: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],1575,1; //BF_Book2 + break; + case 3: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],1824,1; //BF_Knuckle2 + break; + case 4: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],1823,1; //BF_Knuckle1 + break; + } + break; + case 5: + mes "[Erundek]"; + mes "The following weapons are available in the ^3131FFRevolver / Rifle / Gatling Gun / Shotgun / Grenade Launcher^000000 category."; + next; + switch(select("Soldier Revolver:Soldier Rifle:Soldier Gatling Gun:Soldier Shotgun:Soldier Grenade Launcher")) { + case 1: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],13108,1; //BF_Pistol1 + break; + case 2: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],13171,1; //BF_Rifle1 + break; + case 3: + setarray .@cost[0],7828,100; //BF_Badge1 + setarray .@item[0],13172,1; //BF_Gatling_Gun1 + break; + case 4: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],13173,1; //BF_Shotgun1 + break; + case 5: + setarray .@cost[0],7829,100; //BF_Badge2 + setarray .@item[0],13174,1; //BF_Launcher1 + break; + } + break; + } + if (.@cost[0] == 7829) + set .@type$,"(VB)"; + else +v set .@type$,"(BB)"; mes "[Erundek]"; - mes "As you wish."; - mes "See you later."; + mes "You chose ^3131FF"+getitemname(.@item[0])+""+.@type$+"^000000."; + mes "You can exchange for this item with ^FF0000"+.@cost[1]+" "+getitemname(.@cost[0])+"^000000."; + mes "Would you like to exchange?"; + next; + switch(select("Do not exchange:Exchange")) { + case 1: + mes "[Erundek]"; + mes "Do you need more time to check the items?"; + break; + case 2: + mes "[Erundek]"; + mes "Would you like to spend ^FF0000"+.@cost[1]+" "+getitemname(.@cost[0])+"^000000 and receive an ^3131FF"+getitemname(.@item[0])+""+.@type$+"^000000?"; + next; + mes "[Erundek]"; + mes "Remember, Battleground Reward Items are ^FF0000Character Bound^000000. Are you sure you want this item?"; + next; + switch(select("Yes:No")) { + case 1: + if (countitem(.@cost[0]) >= .@cost[1]) { + mes "[Erundek]"; + mes "Thank you for exchanging."; + delitem .@cost[0],.@cost[1]; + getitem .@item[0],.@item[1]; + } + else { + mes "[Erundek]"; + mes "I'm sorry, but you don't have enough badges to exchange."; + } + break; + case 2: + mes "[Erundek]"; + mes "Do you need more time to check out the items?"; + break; + } + break; + } close; - case 2: // Bravery Badges + case 2: mes "[Erundek]"; - mes "So you want to exchange ^0000FFBravery Badges^000000 from the Battle of Tierra Gorge."; - mes "What kind of item do you want to exchange?"; + mes "You chose ^3131FFArmor^000000."; + mes "The following armors are available for exchange with the battlefield badges."; next; - deletearray .@Item_DB[0],127; - set .@Badge, 7828; - - switch( select("Weapons:Garment:Footgear:Armor:Accessory") ) - { - case 1: setarray .@Item_DB[0],13036,13411,1425,1632,1634,1543,1924,1978,1574,1824,1183,1380,13305,1279,1739,13108,13172; set .@Value, 100; break; - case 2: setarray .@Item_DB[0],2538,2539,2540; set .@Value, 50; break; - case 3: setarray .@Item_DB[0],2435,2436,2437; set .@Value, 50; break; - case 4: setarray .@Item_DB[0],2376,2377,2378,2379,2380,2381,2382; set .@Value, 80; break; - case 5: setarray .@Item_DB[0],2720,2721,2722,2723,2724,2725,2733; set .@Value, 500; break; + switch(select("Garments / Shoes:Armor")) { + case 1: + switch(select("Captain's Manteau:Commander's Manteau:Sheriff's Manteau:Battle Greave:Combat Boots:Battle Boots")) { + case 1: + setarray .@cost[0],7828,50,7829,50; //BF_Badge1 + setarray .@item[0],2538,1; //Commander_Manteau + break; + case 2: + setarray .@cost[0],7828,50,7829,50; //BF_Badge1 + setarray .@item[0],2539,1; //Commander_Manteau_ + break; + case 3: + setarray .@cost[0],7828,50,7829,50; //BF_Badge1 + setarray .@item[0],2540,1; //Sheriff_Manteau + break; + case 4: + setarray .@cost[0],7828,50,7829,50; //BF_Badge1 + setarray .@item[0],2435,1; //Battle_Greave + break; + case 5: + setarray .@cost[0],7828,50,7829,50; //BF_Badge1 + setarray .@item[0],2436,1; //Combat_Boots + break; + case 6: + setarray .@cost[0],7828,50,7829,50; //BF_Badge1 + setarray .@item[0],2437,1; //Battle_Boots + break; + } + break; + case 2: + switch(select("Assaulter Plate:Elite Engineer Armor:Assassin Robe:Warlock's Battle Robe:Medic's Robe:Elite Archer Suit:Elite Shooter Suit")) { + case 1: + setarray .@cost[0],7828,80,7829,80; //BF_Badge1 + setarray .@item[0],2376,1; //Assaulter_Plate + break; + case 2: + setarray .@cost[0],7828,80,7829,80; //BF_Badge1 + setarray .@item[0],2377,1; //Elite_Engineer_Armor + break; + case 3: + setarray .@cost[0],7828,80,7829,80; //BF_Badge1 + setarray .@item[0],2378,1; //Assassin_Robe + break; + case 4: + setarray .@cost[0],7828,80,7829,80; //BF_Badge1 + setarray .@item[0],2379,1; //Warlock_Battle_Robe + break; + case 5: + setarray .@cost[0],7828,80,7829,80; //BF_Badge1 + setarray .@item[0],2380,1; //Medic_Robe + break; + case 6: + setarray .@cost[0],7828,80,7829,80; //BF_Badge1 + setarray .@item[0],2381,1; //Elite_Archer_Suit + break; + case 7: + setarray .@cost[0],7828,80,7829,80; //BF_Badge1 + setarray .@item[0],2382,1; //Elite_Shooter_Suit + break; + } + break; + } + break; + case 3: + mes "[Erundek]"; + mes "You chose ^3131FFAccessory^000000."; + mes "You can exchange the Medal of Honors with your Badges according to the job classes, as follows:"; + next; + switch(select("Gunslinger:Swordman/Taekwon Master:Thief:Acolyte:Magician:Archer:Merchant")) { + case 1: + setarray .@cost[0],7828,500,7829,500; //BF_Badge1 + setarray .@item[0],2733,1; //Medal_Gunner + break; + case 2: + setarray .@cost[0],7828,500,7829,500; //BF_Badge1 + setarray .@item[0],2720,1; //Medal_Swordman + break; + case 3: + setarray .@cost[0],7828,500,7829,500; //BF_Badge1 + setarray .@item[0],2721,1; //Medal_Thief + break; + case 4: + setarray .@cost[0],7828,500,7829,500; //BF_Badge1 + setarray .@item[0],2722,1; //Medal_Acolyte + break; + case 5: + setarray .@cost[0],7828,500,7829,500; //BF_Badge1 + setarray .@item[0],2723,1; //Medal_Mage + break; + case 6: + setarray .@cost[0],7828,500,7829,500; //BF_Badge1 + setarray .@item[0],2724,1; //Medal_Archer + break; + case 7: + setarray .@cost[0],7828,500,7829,500; //BF_Badge1 + setarray .@item[0],2725,1; //Medal_Merchant + break; } - break; - case 3: // Valor Badges + case 4: mes "[Erundek]"; - mes "So you want to exchange ^FF0000Valor Badges^000000 from the Battle of Flavius."; - mes "What kind of item do you want to exchange?"; + mes "You chose ^3131FFConsumable^000000."; + mes "The following consumable items are available for exchange with the battlefield badges:"; next; - deletearray .@Item_DB[0],127; - set .@Badge, 7829; - - switch( select("Weapons:Garment:Footgear:Armor:Accessory") ) - { - case 1: setarray .@Item_DB[0],13037,13410,1633,1635,1542,1923,1977,1575,1823,1184,1482,1379,13306,1280,1738,13171,13173,13174; set .@Value, 100; break; - case 2: setarray .@Item_DB[0],2538,2539,2540; set .@Value, 50; break; - case 3: setarray .@Item_DB[0],2435,2436,2437; set .@Value, 50; break; - case 4: setarray .@Item_DB[0],2376,2377,2378,2379,2380,2381,2382; set .@Value, 80; break; - case 5: setarray .@Item_DB[0],2720,2721,2722,2723,2724,2725,2733; set .@Value, 500; break; + switch(select("Tasty Pink Ration:Tasty White Ration:Military Ration A:Military Ration B:Military Ration C")) { + case 1: + setarray .@cost[0],7828,10,7829,10; //BF_Badge1 + setarray .@item[0],12269,1; //Tasty_Colonel + break; + case 2: + setarray .@cost[0],7828,10,7829,10; //BF_Badge1 + setarray .@item[0],12270,1; //Tasty_Major + break; + case 3: + setarray .@cost[0],7828,5,7829,5; //BF_Badge1 + setarray .@item[0],12271,1; //Mre_A + break; + case 4: + setarray .@cost[0],7828,10,7829,10; //BF_Badge1 + setarray .@item[0],12272,1; //Mre_B + break; + case 5: + setarray .@cost[0],7828,10,7829,10; //BF_Badge1 + setarray .@item[0],12273,1; //Mre_C + break; } - break; + } + break; + case 2: + mes "[Erundek]"; + mes "We have many items, so please take a look and purchase deliberately."; + close2; + ReadBook 11010,1; + end; } mes "[Erundek]"; - mes "What item do you want to exchange?"; - mes "If you are not sure, check the catalog."; - next; - - set .@Menu$, ""; - set .@Count, getarraysize(.@Item_DB); - for( set .@i, 0; .@i < .@Count; set .@i, .@i + 1 ) - set .@Menu$, .@Menu$ + getitemname(.@Item_DB[.@i]) + ":"; - - set .@Item_ID, .@Item_DB[select(.@Menu$) - 1]; - - mes "[Erundek]"; - mes "Would you like to exchange ^FF0000" + .@Value + " " + getitemname(.@Badge) + "^000000 for a ^0000FF" + getitemname(.@Item_ID) + "^000000?"; - next; - mes "Remember, Battleground Reward Items are ^FF0000Character Bound^000000."; - mes "Are you sure you want this item?"; + mes "You chose ^3131FF"+getitemname(.@item[0])+"^000000."; + switch(.@item[0]) { + case 2720: mes "This item is for Swordman and Taekwon Master Class only."; break; + case 2721: mes "This item is for Thief Class only."; break; + case 2722: mes "This item is for Acolyte Class only."; break; + case 2723: mes "This item is for Magician Class only."; break; + case 2724: mes "This item is for Archer Class only."; break; + case 2725: mes "This item is for Merchant Class only."; break; + case 2733: mes "This item is for Gunslinger only."; break; + default: break; + } + mes "You can exchange for this item with ^FF0000"+.@cost[1]+" "+getitemname(.@cost[0])+" or "+.@cost[3]+" "+getitemname(.@cost[2])+"^000000."; + mes "Would you like to exchange?"; next; - - if( select("Yes:No") == 2 ) - { + switch(select("Do not exchange:Exchange")) { + case 1: mes "[Erundek]"; mes "Do you need more time to check the items?"; - close; - } - - if( countitem(.@Badge) < .@Value ) - { + break; + case 2: mes "[Erundek]"; - mes "I'm sorry, but you don't have enough badges to exchange."; - close; + mes "Which Badge do you want to exchange?"; + mes "You need ^3131FF"+.@cost[1]+" Badges^000000 to exchange."; + next; + if (.@item[0] < 12269 || .@item[0] > 12273 ) { + mes "[Erundek]"; + mes "Remember, Battleground Reward Items are ^FF0000Character Bound^000000. Are you sure you want this item?"; + next; + } + switch(select("Bravery Badge:Valor Badge:Cancel")) { + case 1: + if (countitem(.@cost[0]) >= .@cost[1]) { + mes "[Erundek]"; + mes "Thank you for exchanging."; + delitem .@cost[0],.@cost[1]; + getitem .@item[0],.@item[1]; + } + else { + mes "[Erundek]"; + mes "You do not have enough Bravery Badges."; + } + break; + case 2: + if (countitem(.@cost[2]) >= .@cost[3]) { + mes "[Erundek]"; + mes "Thank you for exchanging."; + delitem .@cost[2],.@cost[3]; + getitem .@item[0],.@item[1]; + } + else { + mes "[Erundek]"; + mes "You do not have enough Valor Badges."; + } + break; + case 3: + mes "[Erundek]"; + mes "You cancelled the exchange."; + break; + } + break; } - - delitem .@Badge,.@Value; - getitem .@Item_ID,1; - mes "[Erundek]"; - mes "Thank you for exchanging."; close; } diff --git a/npc/battleground/flavius/flavius01.txt b/npc/battleground/flavius/flavius01.txt new file mode 100644 index 000000000..66e6db86d --- /dev/null +++ b/npc/battleground/flavius/flavius01.txt @@ -0,0 +1,759 @@ +//===== eAthena Script ======================================= +// BattleGround System - Flavius +//===== By: ================================================== +//= L0ne_W0lf +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= eAthena 1.0 +//===== Description: ========================================= +//= [AEGIS Conversion] +//= Flavius Battleground. +//= - Winning Team: 9 badges +//= - Losing Team: 3 badge +//===== Additional Comments: ================================= +//= 1.0 First Version. +//============================================================ + +// Waiting Room NPCs +//============================================================ +bat_room,86,227,4 script Lieutenant Ator 418,{ + end; +OnInit: + waitingroom "Battle Station",1,"start#bat_b01::OnReadyCheck",1; + end; +OnEnterBG: + set $@FlaviusBG1_id1, waitingroom2bg("bat_b01",10,290,"start#bat_b01::OnGuillaumeQuit",""); + end; +} + +bat_room,85,204,0 script Lieutenant Thelokus 414,{ + end; +OnInit: + waitingroom "Battle Station",1,"start#bat_b01::OnReadyCheck",1; + end; +OnEnterBG: + set $@FlaviusBG1_id2, waitingroom2bg("bat_b01",390,10,"start#bat_b01::OnCroixQuit",""); + end; +} + +bat_room,85,220,0 warp back_bgroomb02a 1,1,bat_room,154,150 +bat_room,85,211,0 warp back_bgroomb02b 1,1,bat_room,154,150 + +bat_room,2,151,3 script #bat_b01_timer 844,{ + end; + +OnInit: +OnEnable: + initnpctimer; + end; + +OnStop: + stopnpctimer; + end; + +OnTimer1000: + stopnpctimer; + initnpctimer; + set .@chk_bat_a01,getmapusers("bat_b01"); + if (.@chk_bat_a01 < 1) { + set $@FlaviusBG1, 0; + if( $@FlaviusBG1_id1 ) { bg_destroy $@FlaviusBG1_id1; set $@FlaviusBG1_id1, 0; } + if( $@FlaviusBG1_id2 ) { bg_destroy $@FlaviusBG1_id2; set $@FlaviusBG1_id2, 0; } + donpcevent "start#bat_b01::OnReadyCheck"; + } + end; +} + + +// Flavius Battleground Engine +//============================================================ +bat_b01,15,15,3 script start#bat_b01 844,{ +OnInit: + mapwarp "bat_b01","bat_room",154,150; + end; + +OnReadyCheck: + if( $@FlaviusBG1 ) + end; + set .@Guillaume, getwaitingroomstate(0,"Lieutenant Ator"); + set .@Croix, getwaitingroomstate(0,"Lieutenant Thelokus"); + if( !.@Guillaume && !.@Croix ) { + donpcevent "#bat_b01_timer::OnStop"; + end; + } + if( .@Guillaume < 1 || .@Croix < 1 ) + end; + set $@FlaviusBG1, 1; + set $@FlaviusBG1_Victory, 0; + set $@Croix_ScoreBG1, 0; + set $@Guill_ScoreBG1, 0; + bg_updatescore "bat_b01",$@Guill_ScoreBG1,$@Croix_ScoreBG1; + + donpcevent "Lieutenant Ator::OnEnterBG"; + donpcevent "Lieutenant Thelokus::OnEnterBG"; + 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; + donpcevent "countdown#bat_b01::OnEnable"; + initnpctimer; + 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; + +OnGuillaumeQuit: +OnCroixQuit: + bg_leave; + end; + +OnTimer10000: + stopnpctimer; + donpcevent "#bat_b01_timer::OnEnable"; + end; +} + +bat_b01,1,1,3 script OBJ#bat_b01_a 844,{ +OnEnable: + bg_monster $@FlaviusBG1_id1,"bat_b01",61,150,"Blue 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"; + } + else { + set $@Croix_ScoreBG1,1; + donpcevent "time#bat_b01::OnEnable"; + donpcevent "start#bat_b01::onReset"; + } + donpcevent "#bat_b01_timer::OnStop"; + bg_updatescore "bat_b01",$@Guill_ScoreBG1,$@Croix_ScoreBG1; + bg_warp $@FlaviusBG1_id1,"bat_b01",10,290; + bg_warp $@FlaviusBG1_id2,"bat_b01",390,10; + donpcevent "#bat_b01_timer::OnEnable"; + } + end; +} + +bat_b01,1,2,3 script OBJ#bat_b01_b 844,{ +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"; + } + else { + set $@Guill_ScoreBG1,1; + donpcevent "time#bat_b01::OnEnable"; + donpcevent "start#bat_b01::onReset"; + } + donpcevent "#bat_b01_timer::OnStop"; + bg_updatescore "bat_b01",$@Guill_ScoreBG1,$@Croix_ScoreBG1; + bg_warp $@FlaviusBG1_id1,"bat_b01",10,290; + bg_warp $@FlaviusBG1_id2,"bat_b01",390,10; + donpcevent "#bat_b01_timer::OnEnable"; + } + end; +} + +bat_b01,1,3,3 script guardian#bat_b01_a 844,{ +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 844,{ +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 844,{ +Onred: + setwall "bat_b01",60,149,2,6,0,"Guillaume_wall1-1"; + setwall "bat_b01",62,149,2,0,0,"Guillaume_wall1-2"; + setwall "bat_b01",62,151,2,2,0,"Guillaume_wall1-3"; + setwall "bat_b01",60,151,2,4,0,"Guillaume_wall1-4"; + end; + +Ongreen: + delwall "Guillaume_wall1-1"; + delwall "Guillaume_wall1-2"; + delwall "Guillaume_wall1-3"; + delwall "Guillaume_wall1-4"; + end; +} + +bat_b01,1,5,3 script cell#bat_b01_b 844,{ +Onred: + setwall "bat_b01",327,149,2,6,0,"Croix_wall1-1"; + setwall "bat_b01",329,149,2,0,0,"Croix_wall1-2"; + setwall "bat_b01",329,151,2,2,0,"Croix_wall1-3"; + setwall "bat_b01",327,151,2,4,0,"Croix_wall1-4"; + end; + +Ongreen: + delwall "Croix_wall1-1"; + delwall "Croix_wall1-2"; + delwall "Croix_wall1-3"; + delwall "Croix_wall1-4"; + end; +} + +bat_b01,1,6,1 script time#bat_b01 844,{ +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 95,{ + specialeffect2 EF_HEAL; + 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 45,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 95,{ + specialeffect2 EF_HEAL; + 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 45,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 -1,5,5,{ +OnTouch: + if (checkquest(2070) < 0) + setquest 2070; + end; +} + +bat_b01,312,224,0 script B_CODE#bat_b01 -1,5,5,{ +OnTouch: + if (checkquest(2070) < 0) + setquest 2070; + end; +} + +bat_b01,10,294,3 script Guillaume Vintenar#b01_a 934,{ + if ($@FlaviusBG1_id1 == getcharid(4)) { + if ($@FlaviusBG1_Victory == 1) { + set .@your_medal,countitem(7829); + 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(0)+", it's a sign reflecting victory."; + close2; + getitem 7829,9; //BF_Badge2 + } + else { + mes "[Axl Rose]"; + mes "Blessed Guillaume!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7829,.@medal_gap; //BF_Badge2 + } + } + else { + set .@your_medal,countitem(7829); + 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 7829,3; //BF_Badge2 + } + 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 7829,.@medal_gap; //BF_Badge2 + } + } + } + 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 934,{ + if ($@FlaviusBG1_id2 == getcharid(4)) { + if ($@FlaviusBG1_Victory == 2) { + set .@your_medal,countitem(7829); + set .@medal_gap,500 - .@your_medal; + if (.@medal_gap > 8) { + mes "[Swandery]"; + mes "Blessed Croix!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7829,9; //BF_Badge2 + } + else { + mes "[Swandery]"; + mes "Blessed Croix!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7829,.@medal_gap; //BF_Badge2 + } + } + else { + set .@your_medal,countitem(7829); + set .@medal_gap,500 - .@your_medal; + if (.@medal_gap > 2) { + mes "[Swandery]"; + mes "Oh, "+strcharinfo(0)+". 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 7829,3; //BF_Badge2 + } + else { + mes "[Swandery]"; + mes "Oh, "+strcharinfo(0)+". 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 7829,.@medal_gap; //BF_Badge2 + } + } + } + bg_leave; + warp "bat_room",154,150; + end; + +OnInit: + disablenpc "Croix Vintenar#b01_b"; + end; +} + +bat_b01,1,5,3 script countdown#bat_b01 844,{ +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"; + end; +} + +bat_b01,81,83,3 script Guillaume Camp#flag21 973,{ end; } +bat_b01,94,83,3 script Guillaume Camp#flag22 973,{ end; } +bat_b01,81,66,3 script Guillaume Camp#flag23 973,{ end; } +bat_b01,94,66,3 script Guillaume Camp#flag24 973,{ end; } +bat_b01,139,142,3 script Guillaume Camp#flag25 973,{ end; } +bat_b01,139,158,3 script Guillaume Camp#flag26 973,{ end; } +bat_b01,110,161,3 script Guillaume Camp#flag27 973,{ end; } +bat_b01,110,137,3 script Guillaume Camp#flag28 973,{ end; } +bat_b01,63,135,3 script Guillaume Camp#flag29 973,{ end; } +bat_b01,63,165,3 script Guillaume Camp#flag30 973,{ end; } +bat_b01,10,296,3 script Guillaume Camp#flag31 973,{ end; } + +bat_b01,306,233,3 script Croix Camp#flag21 974,{ end; } +bat_b01,317,233,3 script Croix Camp#flag22 974,{ end; } +bat_b01,306,216,3 script Croix Camp#flag23 974,{ end; } +bat_b01,317,216,3 script Croix Camp#flag24 974,{ end; } +bat_b01,257,158,3 script Croix Camp#flag25 974,{ end; } +bat_b01,257,141,3 script Croix Camp#flag26 974,{ end; } +bat_b01,297,164,3 script Croix Camp#flag27 974,{ end; } +bat_b01,297,136,3 script Croix Camp#flag28 974,{ end; } +bat_b01,336,161,3 script Croix Camp#flag29 974,{ end; } +bat_b01,336,139,3 script Croix Camp#flag30 974,{ end; } +bat_b01,389,16,3 script Croix Camp#flag31 974,{ end; } + +bat_b01,10,294,3 script Vintenar#bat_b01_aover 419,{ + set .@A_B_gap,$@Guill_ScoreBG1 - $@Croix_ScoreBG1; + if ($@FlaviusBG1_id1 == getcharid(4)) { + if (.@A_B_gap > 0) { + set .@your_medal,countitem(7829); + 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(0)+", it's a sign reflecting victory."; + close2; + getitem 7829,9; //BF_Badge2 + } + else { + mes "[Axl Rose]"; + mes "Blessed Guillaume!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7829,.@medal_gap; //BF_Badge2 + } + } + else if (.@A_B_gap == 0) { + set .@your_medal,countitem(7829); + 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 7829,3; //BF_Badge2 + } + 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 7829,.@medal_gap; //BF_Badge2 + } + } + else { + set .@your_medal,countitem(7829); + 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 7829,3; //BF_Badge2 + } + 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 7829,.@medal_gap; //BF_Badge2 + } + } + } + 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 415,{ + set .@A_B_gap,$@Guill_ScoreBG1 - $@Croix_ScoreBG1; + if ($@FlaviusBG1_id2 == getcharid(4)) { + if (.@A_B_gap > 0) { + set .@your_medal,countitem(7829); + set .@medal_gap,500 - .@your_medal; + if (.@medal_gap > 2) { + mes "[Swandery]"; + mes "Oh, "+strcharinfo(0)+". 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 7829,3; //BF_Badge2 + } + else { + mes "[Swandery]"; + mes "Oh, "+strcharinfo(0)+". 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 7829,.@medal_gap; //BF_Badge2 + } + } + else if (.@A_B_gap == 0) { + set .@your_medal,countitem(7829); + set .@medal_gap,500 - .@your_medal; + if (.@medal_gap > 2) { + mes "[Swandery]"; + mes "Oh, "+strcharinfo(0)+". 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 7829,3; //BF_Badge2 + } + else { + mes "[Swandery]"; + mes "Oh, "+strcharinfo(0)+". 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 7829,.@medal_gap; //BF_Badge2 + } + } + else { + set .@your_medal,countitem(7829); + set .@medal_gap,500 - .@your_medal; + if (.@medal_gap > 8) { + mes "[Swandery]"; + mes "Blessed Croix!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7829,9; //BF_Badge2 + } + else { + mes "[Swandery]"; + mes "Blessed Croix!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7829,.@medal_gap; //BF_Badge2 + } + } + } + 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; +} + +/* +bat_b01,1,10,3 script Release all#b01 81,{ + input .@input,0,2000; + if (.@input == 0) { + mes "Cancelled."; + close; + } + else if (.@input == 1854) { + mes "May I help you?"; + next; + switch(select("Release all.:Cancel.")) { + case 1: + mes "Bye."; + close2; + mapwarp "bat_b01","bat_room",154,150; + end; + case 2: + mes "Cancelled."; + close; + } + } +} +*/
\ No newline at end of file diff --git a/npc/battleground/flavius/flavius02.txt b/npc/battleground/flavius/flavius02.txt new file mode 100644 index 000000000..4aabbc839 --- /dev/null +++ b/npc/battleground/flavius/flavius02.txt @@ -0,0 +1,759 @@ +//===== eAthena Script ======================================= +// BattleGround System - Flavius Second +//===== By: ================================================== +//= L0ne_W0lf +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= eAthena 1.0 +//===== Description: ========================================= +//= [AEGIS Conversion] +//= Flavius Battleground. +//= - Winning Team: 9 badges +//= - Losing Team: 3 badge +//===== Additional Comments: ================================= +//= 1.0 First Version. +//============================================================ + +// Waiting Room NPCs +//============================================================ +bat_room,142,227,4 script Lieutenant Huvas 418,{ + end; +OnInit: + waitingroom "Battle Station",1,"start#bat_b02::OnReadyCheck",1; + end; +OnEnterBG: + set $@FlaviusBG2_id1, waitingroom2bg("bat_b02",10,290,"start#bat_b02::OnGuillaumeQuit",""); + end; +} + +bat_room,142,204,0 script Lieutenant Yukon 414,{ + end; +OnInit: + waitingroom "Battle Station",1,"start#bat_b02::OnReadyCheck",1; + end; +OnEnterBG: + set $@FlaviusBG2_id2, waitingroom2bg("bat_b02",390,10,"start#bat_b02::OnCroixQuit",""); + end; +} + +bat_room,141,220,0 warp back_bgroomb02a 1,1,bat_room,154,150 +bat_room,141,211,0 warp back_bgroomb02b 1,1,bat_room,154,150 + +bat_room,2,151,3 script #bat_b02_timer 844,{ + end; + +OnInit: +OnEnable: + initnpctimer; + end; + +OnStop: + stopnpctimer; + end; + +OnTimer1000: + stopnpctimer; + initnpctimer; + set .@chk_bat_a01,getmapusers("bat_b02"); + if (.@chk_bat_a01 < 1) { + set $@FlaviusBG2, 0; + if( $@FlaviusBG2_id1 ) { bg_destroy $@FlaviusBG2_id1; set $@FlaviusBG2_id1, 0; } + if( $@FlaviusBG2_id2 ) { bg_destroy $@FlaviusBG2_id2; set $@FlaviusBG2_id2, 0; } + donpcevent "start#bat_b02::OnReadyCheck"; + } + end; +} + + +// Flavius Battleground Engine +//============================================================ +bat_b02,15,15,3 script start#bat_b02 844,{ +OnInit: + mapwarp "bat_b02","bat_room",154,150; + end; + +OnReadyCheck: + if( $@FlaviusBG2 ) + end; + set .@Guillaume, getwaitingroomstate(0,"Lieutenant Ator"); + set .@Croix, getwaitingroomstate(0,"Lieutenant Thelokus"); + if( !.@Guillaume && !.@Croix ) { + donpcevent "#bat_b02_timer::OnStop"; + end; + } + if( .@Guillaume < 1 || .@Croix < 1 ) + end; + set $@FlaviusBG2, 1; + set $@FlaviusBG2_Victory, 0; + set $@Croix_ScoreBG2, 0; + set $@Guill_ScoreBG2, 0; + + bg_updatescore "bat_b02",$@Guill_ScoreBG2,$@Croix_ScoreBG2; + donpcevent "Lieutenant Ator::OnEnterBG"; + donpcevent "Lieutenant Thelokus::OnEnterBG"; + donpcevent "OBJ#bat_b02_a::Onkill"; + donpcevent "OBJ#bat_b02_a::OnEnable"; + donpcevent "OBJ#bat_b02_b::Onkill"; + donpcevent "OBJ#bat_b02_b::OnEnable"; + donpcevent "guardian#bat_b02_a::Onkill"; + donpcevent "guardian#bat_b02_b::Onkill"; + donpcevent "guardian#bat_b02_a::OnEnable"; + donpcevent "guardian#bat_b02_b::OnEnable"; + donpcevent "cell#bat_b02_a::Onred"; + donpcevent "cell#bat_b02_b::Onred"; + donpcevent "time#bat_b02::OnEnable"; + disablenpc "Guillaume Vintenar#b02_a"; + disablenpc "Croix Vintenar#b02_b"; + disablenpc "Vintenar#bat_b02_aover"; + disablenpc "Vintenar#bat_b02_bover"; + bg_warp $@FlaviusBG2_id1,"bat_b02",87,75; + bg_warp $@FlaviusBG2_id2,"bat_b02",311,224; + donpcevent "countdown#bat_b02::OnEnable"; + initnpctimer; + end; + +OnReset: + donpcevent "OBJ#bat_b02_a::Onkill"; + donpcevent "OBJ#bat_b02_a::OnEnable"; + donpcevent "OBJ#bat_b02_b::Onkill"; + donpcevent "OBJ#bat_b02_b::OnEnable"; + donpcevent "guardian#bat_b02_a::Onkill"; + donpcevent "guardian#bat_b02_b::Onkill"; + donpcevent "guardian#bat_b02_a::OnEnable"; + donpcevent "guardian#bat_b02_b::OnEnable"; + donpcevent "cell#bat_b02_a::Onred"; + donpcevent "cell#bat_b02_b::Onred"; + donpcevent "time#bat_b02::OnEnable"; + disablenpc "Guillaume Vintenar#b02_a"; + disablenpc "Croix Vintenar#b02_b"; + disablenpc "Vintenar#bat_b02_aover"; + disablenpc "Vintenar#bat_b02_bover"; + bg_warp $@FlaviusBG2_id1,"bat_b02",87,75; + bg_warp $@FlaviusBG2_id2,"bat_b02",311,224; + end; + +OnGuillaumeQuit: +OnCroixQuit: + bg_leave; + end; + +OnTimer10000: + stopnpctimer; + donpcevent "#bat_b02_timer::OnEnable"; + end; +} + +bat_b02,1,1,3 script OBJ#bat_b02_a 844,{ +OnEnable: + bg_monster $@FlaviusBG2_id1,"bat_b02",61,150,"Blue Crystal",1915,"OBJ#bat_b02_a::OnMyMobDead"; + end; + +Onkill: + killmonster "bat_b02","OBJ#bat_b02_a::OnMyMobDead"; + end; + +OnMyMobDead: + if (mobcount("bat_b02","OBJ#bat_b02_a::OnMyMobDead") < 1) { + mapannounce "bat_b02", "Guillaume's Crystal has been destroyed.",bc_map,"0xFFCE00"; + if ($@Croix_ScoreBG2 > 0) { + set $@FlaviusBG2_Victory,2; + set $@Croix_ScoreBG2,$@Croix_ScoreBG2+1; + enablenpc "Guillaume Vintenar#b02_a"; + enablenpc "Croix Vintenar#b02_b"; + donpcevent "time#bat_b02::Onstop"; + } + else { + set $@Croix_ScoreBG2,1; + donpcevent "time#bat_b02::OnEnable"; + donpcevent "start#bat_b02::onReset"; + } + donpcevent "#bat_b02_timer::OnStop"; + bg_updatescore "bat_b02",$@Guill_ScoreBG2,$@Croix_ScoreBG2; + bg_warp $@FlaviusBG2_id1,"bat_b02",10,290; + bg_warp $@FlaviusBG2_id2,"bat_b02",390,10; + donpcevent "#bat_b02_timer::OnEnable"; + } + end; +} + +bat_b02,1,2,3 script OBJ#bat_b02_b 844,{ +OnEnable: + bg_monster $@FlaviusBG2_id2,"bat_b02",328,150,"Blue Crystal",1914,"OBJ#bat_b02_b::OnMyMobDead"; + end; + +Onkill: + killmonster "bat_b02","OBJ#bat_b02_b::OnMyMobDead"; + end; + +OnMyMobDead: + if (mobcount("bat_b02","OBJ#bat_b02_b::OnMyMobDead") < 1) { + mapannounce "bat_b02", "Croix's Crystal has been destroyed.",bc_map,"0xFFCE00"; + if ($@Guill_ScoreBG2 > 0) { + set $@FlaviusBG2_Victory,1; + set $@Guill_ScoreBG2,$@Guill_ScoreBG2+1; + enablenpc "Guillaume Vintenar#b02_a"; + enablenpc "Croix Vintenar#b02_b"; + donpcevent "time#bat_b02::Onstop"; + } + else { + set $@Guill_ScoreBG2,1; + donpcevent "time#bat_b02::OnEnable"; + donpcevent "start#bat_b02::onReset"; + } + donpcevent "#bat_b02_timer::OnStop"; + bg_updatescore "bat_b02",$@Guill_ScoreBG2,$@Croix_ScoreBG2; + bg_warp $@FlaviusBG2_id1,"bat_b02",10,290; + bg_warp $@FlaviusBG2_id2,"bat_b02",390,10; + donpcevent "#bat_b02_timer::OnEnable"; + } + end; +} + +bat_b02,1,3,3 script guardian#bat_b02_a 844,{ +OnEnable: + bg_monster $@FlaviusBG2_id1,"bat_b02",108,159,"Guillaume Camp Guardian",1949,"guardian#bat_b02_a::OnMyMobDead"; + bg_monster $@FlaviusBG2_id1,"bat_b02",108,141,"Guillaume Camp Guardian",1949,"guardian#bat_b02_a::OnMyMobDead"; + end; + +Onkill: + killmonster "bat_b02","guardian#bat_b02_a::OnMyMobDead"; + end; + +OnMyMobDead: + if (mobcount("bat_b02","guardian#bat_b02_a::OnMyMobDead") < 1) { + donpcevent "cell#bat_b02_a::Ongreen"; + mapannounce "bat_b02", "The Guardian protecting Guillaume's Crystal has been slain.",bc_map,"0xFFCE00"; + } + end; +} + +bat_b02,1,3,3 script guardian#bat_b02_b 844,{ +OnEnable: + bg_monster $@FlaviusBG2_id2,"bat_b02",307,160,"Croix Camp Guardian",1949,"guardian#bat_b02_b::OnMyMobDead"; + bg_monster $@FlaviusBG2_id2,"bat_b02",307,138,"Croix Camp Guardian",1949,"guardian#bat_b02_b::OnMyMobDead"; + end; + +Onkill: + killmonster "bat_b02","guardian#bat_b02_b::OnMyMobDead"; + end; + +OnMyMobDead: + if (mobcount("bat_b02","guardian#bat_b02_b::OnMyMobDead") < 1) { + donpcevent "cell#bat_b02_b::Ongreen"; + mapannounce "bat_b02", "The Guardian protecting Croix's Crystal has been slain.",bc_map,"0xFFCE00"; + } + end; +} + +bat_b02,1,4,3 script cell#bat_b02_a 844,{ +Onred: + setwall "bat_b02",60,149,2,6,0,"Guillaume_wall1-1"; + setwall "bat_b02",62,149,2,0,0,"Guillaume_wall1-2"; + setwall "bat_b02",62,151,2,2,0,"Guillaume_wall1-3"; + setwall "bat_b02",60,151,2,4,0,"Guillaume_wall1-4"; + end; + +Ongreen: + delwall "Guillaume_wall1-1"; + delwall "Guillaume_wall1-2"; + delwall "Guillaume_wall1-3"; + delwall "Guillaume_wall1-4"; + end; +} + +bat_b02,1,5,3 script cell#bat_b02_b 844,{ +Onred: + setwall "bat_b02",327,149,2,6,0,"Croix_wall1-1"; + setwall "bat_b02",329,149,2,0,0,"Croix_wall1-2"; + setwall "bat_b02",329,151,2,2,0,"Croix_wall1-3"; + setwall "bat_b02",327,151,2,4,0,"Croix_wall1-4"; + end; + +Ongreen: + delwall "Croix_wall1-1"; + delwall "Croix_wall1-2"; + delwall "Croix_wall1-3"; + delwall "Croix_wall1-4"; + end; +} + +bat_b02,1,6,1 script time#bat_b02 844,{ +OnEnable: + donpcevent "Battle Therapist#b02_a::OnEnable"; + donpcevent "Battle Therapist#b02_b::OnEnable"; + end; + +Onstop: + donpcevent "Battle Therapist#b02_a::OnStop"; + donpcevent "Battle Therapist#b02_b::OnStop"; + end; +} + +bat_b02,10,294,3 script Battle Therapist#b02_a 95,{ + specialeffect2 EF_HEAL; + 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_b02_rp1_a_warp"; + end; + +OnTimer26000: + disablenpc "bat_b02_rp1_a_warp"; + end; + +OnTimer26500: + stopnpctimer; + donpcevent "Battle Therapist#b02_a::onEnable"; + end; + +OnEnable: + initnpctimer; + enablenpc "Battle Therapist#b02_a"; + end; + +Onstop: + disablenpc "bat_b02_rp1_a_warp"; + disablenpc "Battle Therapist#b02_a"; + stopnpctimer; + end; +} + +bat_b02,10,290,0 script bat_b02_rp1_a_warp 45,10,10,{ +OnInit: + disablenpc "bat_b02_rp1_a_warp"; + end; + +OnTouch: + percentheal 100,100; + warp "bat_b02",87,73; + end; +} + +bat_b02,389,14,3 script Battle Therapist#b02_b 95,{ + specialeffect2 EF_HEAL; + 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_b02_rp1_b_warp"; + end; + +OnTimer26000: + disablenpc "bat_b02_rp1_b_warp"; + end; + +OnTimer26500: + stopnpctimer; + donpcevent "Battle Therapist#b02_b::OnEnable"; + end; + +OnEnable: + initnpctimer; + enablenpc "Battle Therapist#b02_b"; + end; + +Onstop: + disablenpc "bat_b02_rp1_b_warp"; + disablenpc "Battle Therapist#b02_b"; + stopnpctimer; + end; +} + +bat_b02,389,10,0 script bat_b02_rp1_b_warp 45,9,9,{ +OnInit: + disablenpc "bat_b02_rp1_a_warp"; + end; + +OnTouch: + percentheal 100,100; + warp "bat_b02",312,225; + end; +} + +bat_b02,87,76,0 script A_CODE#bat_b02 -1,5,5,{ +OnTouch: + if (checkquest(2070) < 0) + //setquest 2070; + end; +} + +bat_b02,312,224,0 script B_CODE#bat_b02 -1,5,5,{ +OnTouch: + if (checkquest(2070) < 0) + //setquest 2070; + end; +} + +bat_b02,10,294,3 script Guillaume Vintenar#b02_a 934,{ + if ($@FlaviusBG2_id1 == getcharid(4)) { + if ($@FlaviusBG2_Victory == 1) { + set .@your_medal,countitem(7829); + 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(0)+", it's a sign reflecting victory."; + close2; + getitem 7829,9; //BF_Badge2 + } + else { + mes "[Axl Rose]"; + mes "Blessed Guillaume!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7829,.@medal_gap; //BF_Badge2 + } + } + else { + set .@your_medal,countitem(7829); + 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 7829,3; //BF_Badge2 + } + 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 7829,.@medal_gap; //BF_Badge2 + } + } + } + bg_leave; + warp "bat_room",154,150; + end; + +OnInit: + disablenpc "Guillaume Vintenar#b02_a"; + end; +} + +bat_b02,389,14,3 script Croix Vintenar#b02_b 934,{ + if ($@FlaviusBG2_id2 == getcharid(4)) { + if ($@FlaviusBG2_Victory == 2) { + set .@your_medal,countitem(7829); + set .@medal_gap,500 - .@your_medal; + if (.@medal_gap > 8) { + mes "[Swandery]"; + mes "Blessed Croix!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7829,9; //BF_Badge2 + } + else { + mes "[Swandery]"; + mes "Blessed Croix!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7829,.@medal_gap; //BF_Badge2 + } + } + else { + set .@your_medal,countitem(7829); + set .@medal_gap,500 - .@your_medal; + if (.@medal_gap > 2) { + mes "[Swandery]"; + mes "Oh, "+strcharinfo(0)+". 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 7829,3; //BF_Badge2 + } + else { + mes "[Swandery]"; + mes "Oh, "+strcharinfo(0)+". 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 7829,.@medal_gap; //BF_Badge2 + } + } + } + bg_leave; + warp "bat_room",154,150; + end; + +OnInit: + disablenpc "Croix Vintenar#b02_b"; + end; +} + +bat_b02,1,5,3 script countdown#bat_b02 844,{ +OnInit: + stopnpctimer; + end; + +OnEnable: + stopnpctimer; + initnpctimer; + end; + +Onstop: + stopnpctimer; + end; + +OnTimer7000: + mapannounce "bat_b02", "Guillaume Vintenar Axl Rose : Let's attack to destroy that Crystal!",bc_map,"0xFF9900"; + end; + +OnTimer8000: + mapannounce "bat_b02", "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_b02", "Marollo VII : Guillaume Marollo, Croix Marollo! And their followers!",bc_map,"0x99CC00"; + end; + +OnTimer1803000: + mapannounce "bat_b02", "Marollo VII : Both camps are competitive, so it's hard to judge which team is superior.",bc_map,"0x99CC00"; + end; + +OnTimer1808000: + mapannounce "bat_b02", "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_b02", "Marollo VII : If you can't accept the results, try again in another valley battle!",bc_map,"0x99CC00"; + end; + +OnTimer1825000: + mapannounce "bat_b02", "Axl Rose, Swandery : Yes, sir.",bc_map,"0x99CC00"; + end; + +OnTimer1830000: + donpcevent "time#bat_b02::Onstop"; + bg_warp $@FlaviusBG2_id1,"bat_b02",10,290; + bg_warp $@FlaviusBG2_id2,"bat_b02",390,10; + enablenpc "Vintenar#bat_b02_aover"; + enablenpc "Vintenar#bat_b02_bover"; + end; + +OnTimer1900000: + mapwarp "bat_b02","bat_room",154,150; + donpcevent "countdown#bat_b02::Onstop"; + end; +} + +bat_b02,81,83,3 script Guillaume Camp#flag32 973,{ end; } +bat_b02,94,83,3 script Guillaume Camp#flag33 973,{ end; } +bat_b02,81,66,3 script Guillaume Camp#flag34 973,{ end; } +bat_b02,94,66,3 script Guillaume Camp#flag35 973,{ end; } +bat_b02,139,142,3 script Guillaume Camp#flag36 973,{ end; } +bat_b02,139,158,3 script Guillaume Camp#flag37 973,{ end; } +bat_b02,110,161,3 script Guillaume Camp#flag38 973,{ end; } +bat_b02,110,137,3 script Guillaume Camp#flag39 973,{ end; } +bat_b02,63,135,3 script Guillaume Camp#flag40 973,{ end; } +bat_b02,63,165,3 script Guillaume Camp#flag41 973,{ end; } +bat_b02,10,296,3 script Guillaume Camp#flag42 973,{ end; } + +bat_b02,306,233,3 script Croix Camp#flag32 974,{ end; } +bat_b02,317,233,3 script Croix Camp#flag33 974,{ end; } +bat_b02,306,216,3 script Croix Camp#flag34 974,{ end; } +bat_b02,317,216,3 script Croix Camp#flag35 974,{ end; } +bat_b02,257,158,3 script Croix Camp#flag36 974,{ end; } +bat_b02,257,141,3 script Croix Camp#flag37 974,{ end; } +bat_b02,297,164,3 script Croix Camp#flag38 974,{ end; } +bat_b02,297,136,3 script Croix Camp#flag39 974,{ end; } +bat_b02,336,161,3 script Croix Camp#flag40 974,{ end; } +bat_b02,336,139,3 script Croix Camp#flag41 974,{ end; } +bat_b02,389,16,3 script Croix Camp#flag42 974,{ end; } + +bat_b02,10,294,3 script Vintenar#bat_b02_aover 419,{ + set .@A_B_gap,$@Guill_ScoreBG2 - $@Croix_ScoreBG2; + if ($@FlaviusBG2_id1 == getcharid(4)) { + if (.@A_B_gap > 0) { + set .@your_medal,countitem(7829); + 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(0)+", it's a sign reflecting victory."; + close2; + getitem 7829,9; //BF_Badge2 + } + else { + mes "[Axl Rose]"; + mes "Blessed Guillaume!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7829,.@medal_gap; //BF_Badge2 + } + } + else if (.@A_B_gap == 0) { + set .@your_medal,countitem(7829); + 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 7829,3; //BF_Badge2 + } + 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 7829,.@medal_gap; //BF_Badge2 + } + } + else { + set .@your_medal,countitem(7829); + 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 7829,3; //BF_Badge2 + } + 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 7829,.@medal_gap; //BF_Badge2 + } + } + } + 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_b02_aover"; + end; +} + +bat_b02,389,14,3 script Vintenar#bat_b02_bover 415,{ + set .@A_B_gap,$@Guill_ScoreBG2 - $@Croix_ScoreBG2; + if ($@FlaviusBG2_id2 == getcharid(4)) { + if (.@A_B_gap > 0) { + set .@your_medal,countitem(7829); + set .@medal_gap,500 - .@your_medal; + if (.@medal_gap > 2) { + mes "[Swandery]"; + mes "Oh, "+strcharinfo(0)+". 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 7829,3; //BF_Badge2 + } + else { + mes "[Swandery]"; + mes "Oh, "+strcharinfo(0)+". 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 7829,.@medal_gap; //BF_Badge2 + } + } + else if (.@A_B_gap == 0) { + set .@your_medal,countitem(7829); + set .@medal_gap,500 - .@your_medal; + if (.@medal_gap > 2) { + mes "[Swandery]"; + mes "Oh, "+strcharinfo(0)+". 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 7829,3; //BF_Badge2 + } + else { + mes "[Swandery]"; + mes "Oh, "+strcharinfo(0)+". 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 7829,.@medal_gap; //BF_Badge2 + } + } + else { + set .@your_medal,countitem(7829); + set .@medal_gap,500 - .@your_medal; + if (.@medal_gap > 8) { + mes "[Swandery]"; + mes "Blessed Croix!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7829,9; //BF_Badge2 + } + else { + mes "[Swandery]"; + mes "Blessed Croix!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7829,.@medal_gap; //BF_Badge2 + } + } + } + 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_b02_bover"; + end; +} + +/* +bat_b02,1,10,3 script Release all#b02 81,{ + input .@input,0,2000; + if (.@input == 0) { + mes "Cancelled."; + close; + } + else if (.@input == 1854) { + mes "May I help you?"; + next; + switch(select("Release all.:Cancel.")) { + case 1: + mes "Bye."; + close2; + mapwarp "bat_b02","bat_room",154,150; + end; + case 2: + mes "Cancelled."; + close; + } + } +} +*/
\ No newline at end of file diff --git a/npc/battleground/kvm/kvm01.txt b/npc/battleground/kvm/kvm01.txt index 27f01d47d..1b8f3cb6c 100644 --- a/npc/battleground/kvm/kvm01.txt +++ b/npc/battleground/kvm/kvm01.txt @@ -60,23 +60,23 @@ OnKvM01Two: end; } -bat_c01,54,124,3 duplicate(CellEffect) #RedcellA1-1 111 -bat_c01,55,124,3 duplicate(CellEffect) #RedcellA2-1 111 -bat_c01,56,124,3 duplicate(CellEffect) #RedcellA3-1 111 -bat_c01,57,124,3 duplicate(CellEffect) #RedcellA4-1 111 -bat_c01,57,125,3 duplicate(CellEffect) #RedcellA5-1 111 -bat_c01,57,126,3 duplicate(CellEffect) #RedcellA6-1 111 -bat_c01,57,127,3 duplicate(CellEffect) #RedcellA7-1 111 +bat_c01,54,124,3 duplicate(CellEffect) #RedcellA1-1 139 +bat_c01,55,124,3 duplicate(CellEffect) #RedcellA2-1 139 +bat_c01,56,124,3 duplicate(CellEffect) #RedcellA3-1 139 +bat_c01,57,124,3 duplicate(CellEffect) #RedcellA4-1 139 +bat_c01,57,125,3 duplicate(CellEffect) #RedcellA5-1 139 +bat_c01,57,126,3 duplicate(CellEffect) #RedcellA6-1 139 +bat_c01,57,127,3 duplicate(CellEffect) #RedcellA7-1 139 -bat_c01,145,59,3 duplicate(CellEffect) #RedcellB1-1 111 -bat_c01,144,59,3 duplicate(CellEffect) #RedcellB2-1 111 -bat_c01,143,59,3 duplicate(CellEffect) #RedcellB3-1 111 -bat_c01,142,59,3 duplicate(CellEffect) #RedcellB4-1 111 -bat_c01,142,56,3 duplicate(CellEffect) #RedcellB5-1 111 -bat_c01,142,57,3 duplicate(CellEffect) #RedcellB6-1 111 -bat_c01,142,58,3 duplicate(CellEffect) #RedcellB7-1 111 +bat_c01,145,59,3 duplicate(CellEffect) #RedcellB1-1 139 +bat_c01,144,59,3 duplicate(CellEffect) #RedcellB2-1 139 +bat_c01,143,59,3 duplicate(CellEffect) #RedcellB3-1 139 +bat_c01,142,59,3 duplicate(CellEffect) #RedcellB4-1 139 +bat_c01,142,56,3 duplicate(CellEffect) #RedcellB5-1 139 +bat_c01,142,57,3 duplicate(CellEffect) #RedcellB6-1 139 +bat_c01,142,58,3 duplicate(CellEffect) #RedcellB7-1 139 -bat_c01,54,128,3 script #A_camp_start01 111,4,4,{ +bat_c01,54,128,3 script #A_camp_start01 139,4,4,{ end; OnInit: @@ -97,7 +97,7 @@ OnTouch: end; } -bat_c01,146,56,3 script #B_camp_start01 111,4,4,{ +bat_c01,146,56,3 script #B_camp_start01 139,4,4,{ end; OnInit: @@ -146,6 +146,10 @@ OnGuillaumeDie: set .Croix_Score, .Croix_Score + 1; bg_updatescore "bat_c01",.Guillaume_Score,.Croix_Score; if( .Guillaume_Count < 1 ) donpcevent "KvM01_BG::OnCroixWin"; + else { + mapannounce "bat_c01", "NUmber of Guillaume survivors "+.Guillaume_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c01", "NUmber of Croix survivors "+.Croix_Count+".",bc_map,"0x00ff00"; + } } end; @@ -158,6 +162,10 @@ OnCroixDie: set .Guillaume_Score, .Guillaume_Score + 1; bg_updatescore "bat_c01",.Guillaume_Score,.Croix_Score; if( .Croix_Count < 1 ) donpcevent "KvM01_BG::OnGuillaumeWin"; + else { + mapannounce "bat_c01", "NUmber of Guillaume survivors "+.Guillaume_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c01", "NUmber of Croix survivors "+.Croix_Count+".",bc_map,"0x00ff00"; + } } end; @@ -426,12 +434,3 @@ bat_c01,148,53,1 script KVM Officer#KVM01B 415,{ // MapFlags //============================================================ -bat_c01 mapflag battleground 2 -bat_c01 mapflag nomemo -bat_c01 mapflag nosave SavePoint -bat_c01 mapflag noteleport -bat_c01 mapflag nowarp -bat_c01 mapflag nowarpto -bat_c01 mapflag noreturn -bat_c01 mapflag nobranch -bat_c01 mapflag nopenalty diff --git a/npc/battleground/kvm/kvm02.txt b/npc/battleground/kvm/kvm02.txt index 063f34ba6..11a1c3d47 100644 --- a/npc/battleground/kvm/kvm02.txt +++ b/npc/battleground/kvm/kvm02.txt @@ -60,23 +60,23 @@ OnKvM02Two: end; } -bat_c02,54,124,3 duplicate(CellEffect2) #RedcellA1-2 111 -bat_c02,55,124,3 duplicate(CellEffect2) #RedcellA2-2 111 -bat_c02,56,124,3 duplicate(CellEffect2) #RedcellA3-2 111 -bat_c02,57,124,3 duplicate(CellEffect2) #RedcellA4-2 111 -bat_c02,57,125,3 duplicate(CellEffect2) #RedcellA5-2 111 -bat_c02,57,126,3 duplicate(CellEffect2) #RedcellA6-2 111 -bat_c02,57,127,3 duplicate(CellEffect2) #RedcellA7-2 111 +bat_c02,54,124,3 duplicate(CellEffect2) #RedcellA1-2 139 +bat_c02,55,124,3 duplicate(CellEffect2) #RedcellA2-2 139 +bat_c02,56,124,3 duplicate(CellEffect2) #RedcellA3-2 139 +bat_c02,57,124,3 duplicate(CellEffect2) #RedcellA4-2 139 +bat_c02,57,125,3 duplicate(CellEffect2) #RedcellA5-2 139 +bat_c02,57,126,3 duplicate(CellEffect2) #RedcellA6-2 139 +bat_c02,57,127,3 duplicate(CellEffect2) #RedcellA7-2 139 -bat_c02,145,59,3 duplicate(CellEffect2) #RedcellB1-2 111 -bat_c02,144,59,3 duplicate(CellEffect2) #RedcellB2-2 111 -bat_c02,143,59,3 duplicate(CellEffect2) #RedcellB3-2 111 -bat_c02,142,59,3 duplicate(CellEffect2) #RedcellB4-2 111 -bat_c02,142,56,3 duplicate(CellEffect2) #RedcellB5-2 111 -bat_c02,142,57,3 duplicate(CellEffect2) #RedcellB6-2 111 -bat_c02,142,58,3 duplicate(CellEffect2) #RedcellB7-2 111 +bat_c02,145,59,3 duplicate(CellEffect2) #RedcellB1-2 139 +bat_c02,144,59,3 duplicate(CellEffect2) #RedcellB2-2 139 +bat_c02,143,59,3 duplicate(CellEffect2) #RedcellB3-2 139 +bat_c02,142,59,3 duplicate(CellEffect2) #RedcellB4-2 139 +bat_c02,142,56,3 duplicate(CellEffect2) #RedcellB5-2 139 +bat_c02,142,57,3 duplicate(CellEffect2) #RedcellB6-2 139 +bat_c02,142,58,3 duplicate(CellEffect2) #RedcellB7-2 139 -bat_c02,54,128,3 script #A_camp_start02 111,4,4,{ +bat_c02,54,128,3 script #A_camp_start02 139,4,4,{ end; OnInit: @@ -97,7 +97,7 @@ OnTouch: end; } -bat_c02,146,56,3 script #B_camp_start02 111,4,4,{ +bat_c02,146,56,3 script #B_camp_start02 139,4,4,{ end; OnInit: @@ -146,6 +146,10 @@ OnGuillaumeDie: set .Croix_Score, .Croix_Score + 1; bg_updatescore "bat_c02",.Guillaume_Score,.Croix_Score; if( .Guillaume_Count < 1 ) donpcevent "KvM02_BG::OnCroixWin"; + else { + mapannounce "bat_c02", "NUmber of Guillaume survivors "+.Guillaume_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c02", "NUmber of Croix survivors "+.Croix_Count+".",bc_map,"0x00ff00"; + } } end; @@ -158,6 +162,10 @@ OnCroixDie: set .Guillaume_Score, .Guillaume_Score + 1; bg_updatescore "bat_c02",.Guillaume_Score,.Croix_Score; if( .Croix_Count < 1 ) donpcevent "KvM02_BG::OnGuillaumeWin"; + else { + mapannounce "bat_c02", "NUmber of Guillaume survivors "+.Guillaume_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c02", "NUmber of Croix survivors "+.Croix_Count+".",bc_map,"0x00ff00"; + } } end; @@ -423,12 +431,3 @@ bat_c02,148,53,1 script KVM Officer#KVM02B 415,{ // MapFlags //============================================================ -bat_c02 mapflag battleground 2 -bat_c02 mapflag nomemo -bat_c02 mapflag nosave SavePoint -bat_c02 mapflag noteleport -bat_c02 mapflag nowarp -bat_c02 mapflag nowarpto -bat_c02 mapflag noreturn -bat_c02 mapflag nobranch -bat_c02 mapflag nopenalty diff --git a/npc/battleground/kvm/kvm03.txt b/npc/battleground/kvm/kvm03.txt index 245fefc7d..ab30a6708 100644 --- a/npc/battleground/kvm/kvm03.txt +++ b/npc/battleground/kvm/kvm03.txt @@ -60,23 +60,23 @@ OnKvM03Two: end; } -bat_c03,54,124,3 duplicate(CellEffect3) #RedcellA1-3 111 -bat_c03,55,124,3 duplicate(CellEffect3) #RedcellA2-3 111 -bat_c03,56,124,3 duplicate(CellEffect3) #RedcellA3-3 111 -bat_c03,57,124,3 duplicate(CellEffect3) #RedcellA4-3 111 -bat_c03,57,125,3 duplicate(CellEffect3) #RedcellA5-3 111 -bat_c03,57,126,3 duplicate(CellEffect3) #RedcellA6-3 111 -bat_c03,57,127,3 duplicate(CellEffect3) #RedcellA7-3 111 +bat_c03,54,124,3 duplicate(CellEffect3) #RedcellA1-3 139 +bat_c03,55,124,3 duplicate(CellEffect3) #RedcellA2-3 139 +bat_c03,56,124,3 duplicate(CellEffect3) #RedcellA3-3 139 +bat_c03,57,124,3 duplicate(CellEffect3) #RedcellA4-3 139 +bat_c03,57,125,3 duplicate(CellEffect3) #RedcellA5-3 139 +bat_c03,57,126,3 duplicate(CellEffect3) #RedcellA6-3 139 +bat_c03,57,127,3 duplicate(CellEffect3) #RedcellA7-3 139 -bat_c03,145,59,3 duplicate(CellEffect3) #RedcellB1-3 111 -bat_c03,144,59,3 duplicate(CellEffect3) #RedcellB2-3 111 -bat_c03,143,59,3 duplicate(CellEffect3) #RedcellB3-3 111 -bat_c03,142,59,3 duplicate(CellEffect3) #RedcellB4-3 111 -bat_c03,142,56,3 duplicate(CellEffect3) #RedcellB5-3 111 -bat_c03,142,57,3 duplicate(CellEffect3) #RedcellB6-3 111 -bat_c03,142,58,3 duplicate(CellEffect3) #RedcellB7-3 111 +bat_c03,145,59,3 duplicate(CellEffect3) #RedcellB1-3 139 +bat_c03,144,59,3 duplicate(CellEffect3) #RedcellB2-3 139 +bat_c03,143,59,3 duplicate(CellEffect3) #RedcellB3-3 139 +bat_c03,142,59,3 duplicate(CellEffect3) #RedcellB4-3 139 +bat_c03,142,56,3 duplicate(CellEffect3) #RedcellB5-3 139 +bat_c03,142,57,3 duplicate(CellEffect3) #RedcellB6-3 139 +bat_c03,142,58,3 duplicate(CellEffect3) #RedcellB7-3 139 -bat_c03,54,128,3 script #A_camp_start03 111,4,4,{ +bat_c03,54,128,3 script #A_camp_start03 139,4,4,{ end; OnInit: @@ -97,7 +97,7 @@ OnTouch: end; } -bat_c03,146,56,3 script #B_camp_start03 111,4,4,{ +bat_c03,146,56,3 script #B_camp_start03 139,4,4,{ end; OnInit: @@ -146,6 +146,10 @@ OnGuillaumeDie: set .Croix_Score, .Croix_Score + 1; bg_updatescore "bat_c03",.Guillaume_Score,.Croix_Score; if( .Guillaume_Count < 1 ) donpcevent "KvM03_BG::OnCroixWin"; + else { + mapannounce "bat_c03", "NUmber of Guillaume survivors "+.Guillaume_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c03", "NUmber of Croix survivors "+.Croix_Count+".",bc_map,"0x00ff00"; + } } end; @@ -158,6 +162,10 @@ OnCroixDie: set .Guillaume_Score, .Guillaume_Score + 1; bg_updatescore "bat_c03",.Guillaume_Score,.Croix_Score; if( .Croix_Count < 1 ) donpcevent "KvM03_BG::OnGuillaumeWin"; + else { + mapannounce "bat_c03", "NUmber of Guillaume survivors "+.Guillaume_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c03", "NUmber of Croix survivors "+.Croix_Count+".",bc_map,"0x00ff00"; + } } end; @@ -425,12 +433,3 @@ bat_c03,148,53,1 script KVM Officer#KVM03B 415,{ // MapFlags //============================================================ -bat_c03 mapflag battleground 2 -bat_c03 mapflag nomemo -bat_c03 mapflag nosave SavePoint -bat_c03 mapflag noteleport -bat_c03 mapflag nowarp -bat_c03 mapflag nowarpto -bat_c03 mapflag noreturn -bat_c03 mapflag nobranch -bat_c03 mapflag nopenalty diff --git a/npc/battleground/kvm/kvm_enter.txt b/npc/battleground/kvm/kvm_enter.txt index 544438534..c6d50e87a 100644 --- a/npc/battleground/kvm/kvm_enter.txt +++ b/npc/battleground/kvm/kvm_enter.txt @@ -17,14 +17,22 @@ // KvM Officer - Guillaume //============================================================ bat_room,164,178,5 script KVM Mercenary Officer#1 418,{ - set .@permit,checkquest(6026,PLAYTIME); + /* + set .@kvm,checkquest(6027,PLAYTIME); + if ((.@kvm == 0) || (.@kvm == 1)) { + mes "[Croix Mercenary Officer]"; + mes "It seems you ahve recently participated in a KVM battle. You must wait 5 minutes before signing up again."; + close; + } + */ + set .@permit,checkquest(6025,PLAYTIME); if ((.@permit == 0) || (.@permit == 1)) { mes "[Guillaume Mercenary Officer]"; mes "I know that you've already signed with the Croix. Go back and join their team. We will not accept traitors to fight for us."; close; } else { - if (checkquest(6025) >= 0) erasequest 6026; + if (checkquest(6025) >= 0) erasequest 6025; } mes "[Guillaume Mercenary Officer]"; mes "Let them know the real might of Guillaume!"; @@ -115,6 +123,14 @@ bat_room,167,178,5 script Guillaume Knight#kvm 417,{ // KvM Officer - Croix //============================================================ bat_room,164,121,1 script KVM Mercenary Officer#2 414,{ + /* + set .@kvm,checkquest(6027,PLAYTIME); + if ((.@kvm == 0) || (.@kvm == 1)) { + mes "[Croix Mercenary Officer]"; + mes "It seems you ahve recently participated in a KVM battle. You must wait 5 minutes before signing up again."; + close; + } + */ set .@permit,checkquest(6025,PLAYTIME); if ((.@permit == 0) || (.@permit == 1)) { mes "[Croix Mercenary Officer]"; diff --git a/npc/battleground/tierra/tierra01.txt b/npc/battleground/tierra/tierra01.txt index bdd089d25..6795a2300 100644 --- a/npc/battleground/tierra/tierra01.txt +++ b/npc/battleground/tierra/tierra01.txt @@ -44,6 +44,7 @@ OnEnterBG: bat_room,1,151,3 script #bat_a01_timer 844,{ end; +onInit: OnEnable: initnpctimer; end; @@ -129,7 +130,7 @@ OnReadyCheck: donpcevent "#bat_a01_timer::OnStop"; end; } - if( .@Guillaume < 10 || .@Croix < 10 ) + else if( .@Guillaume < 10 || .@Croix < 10 ) end; set $@TierraBG1,1; donpcevent "Lieutenant Kalos::OnEnterBG"; @@ -196,7 +197,7 @@ bat_a01,15,18,3 script barricade#bat_a01_a 844,{ OnEnable: for( set .@i,185; .@i < 202; set .@i,.@i+1 ) bg_monster $@TierraBG1_id1,"bat_a01",.@i,266,"Barricade",1906,"barricade#bat_a01_a::OnMyMobDead"; - setwall "bat_a01",185,266,16,6,1,"bat_a01_c1"; + setwall "bat_a01",185,265,16,6,1,"bat_a01_c1"; end; Onkill: @@ -218,7 +219,7 @@ bat_a01,15,19,3 script barricade#bat_a01_b 844,{ OnEnable: for( set .@i,169; .@i < 186; set .@i,.@i+1 ) bg_monster $@TierraBG1_id2,"bat_a01",.@i,129,"Barricade",1906,"barricade#bat_a01_b::OnMyMobDead"; - setwall "bat_a01",169,129,16,6,1,"bat_a01_g1"; + setwall "bat_a01",169,130,16,6,1,"bat_a01_g1"; end; Onkill: diff --git a/npc/battleground/tierra/tierra02.txt b/npc/battleground/tierra/tierra02.txt index f3b8bc2cd..fad2e1266 100644 --- a/npc/battleground/tierra/tierra02.txt +++ b/npc/battleground/tierra/tierra02.txt @@ -44,6 +44,7 @@ OnEnterBG: bat_room,1,151,3 script #bat_a02_timer 844,{ end; +onInit: OnEnable: initnpctimer; end; @@ -129,7 +130,7 @@ OnReadyCheck: donpcevent "#bat_a02_timer::OnStop"; end; } - if( .@Guillaume < 10 || .@Croix < 10 ) + else if( .@Guillaume < 10 || .@Croix < 10 ) end; set $@TierraBG2,1; donpcevent "Lieutenant Rundel::OnEnterBG"; @@ -196,7 +197,7 @@ bat_a02,15,18,3 script barricade#bat_a02_a 844,{ OnEnable: for( set .@i,185; .@i < 202; set .@i,.@i+1 ) bg_monster $@TierraBG2_id1,"bat_a02",.@i,266,"Barricade",1906,"barricade#bat_a02_a::OnMyMobDead"; - setwall "bat_a02",185,266,16,6,1,"bat_a02_c1"; + setwall "bat_a02",185,265,16,6,1,"bat_a02_c1"; end; Onkill: @@ -218,7 +219,7 @@ bat_a02,15,19,3 script barricade#bat_a02_b 844,{ OnEnable: for( set .@i,169; .@i < 186; set .@i,.@i+1 ) bg_monster $@TierraBG2_id2,"bat_a02",.@i,129,"Barricade",1906,"barricade#bat_a02_b::OnMyMobDead"; - setwall "bat_a02",169,129,16,6,1,"bat_a02_g1"; + setwall "bat_a02",169,130,16,6,1,"bat_a02_g1"; end; Onkill: diff --git a/npc/custom/battleground/bg_common.txt b/npc/custom/battleground/bg_common.txt new file mode 100644 index 000000000..db9919894 --- /dev/null +++ b/npc/custom/battleground/bg_common.txt @@ -0,0 +1,1327 @@ +// ============================================================================== +// BattleGround System - Common NPCs +// ============================================================================== + +// BattleGround Warper - Entrance +// ********************************************************************* + +payon,189,104,3 script Maroll Battle Recruiter::BatRecruit 728,{ + mes "[Maroll Battle Recruiter]"; + mes "Good day, adventurer."; + mes "I'm a knight from a far country called Maroll Kingdom."; + next; + mes "[Maroll Battle Recruiter]"; + mes "The two princes of the kingdom are now battling for the throne of Maroll, and are in need of experienced soldiers like you. How would you like to lend your power to one of the princes in the Maroll Kingdom?"; + next; + if( select("Join:Don't Join") == 2 ) + { + mes "[Maroll Battle Recruiter]"; + mes "I'll always be stationed here for more soldiers. Feel free to come back whenever you're interested."; + close; + } + mes "[Maroll Battle Recruiter]"; + mes "May the war god bless you."; + close2; + warp "bat_room",155,150; + end; +} + +prontera,123,83,5 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit2 728 +rachel,149,138,5 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit3 728 +moc_ruins,75,162,5 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit4 728 +aldebaran,146,109,5 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit5 728 +lighthalzen,153,86,5 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit6 728 + +// 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; + } + + 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; + end; +} + +// Kafra +// ********************************************************************* +bat_room,148,147,4 script Kafra Staff::kaf_bat 861,{ + cutin "kafra_09",2; + callfunc "F_Kafra",0,2,1,150,0; +} + +// 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; + if( select("Yes, I want to join you.:End Conversation") == 2 ) + { + mes "[General Guillaume]"; + mes "I'll be the one who will capture the flag!"; + close2; + cutin "",255; + end; + } + 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!"; + 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; + if( select("Yes, I want to join you!:End Conversation") == 2 ) + { + mes "[Prince Croix]"; + mes "For Maroll!"; + close2; + cutin "",255; + end; + } + 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; + close2; + cutin "",255; + end; +} + +// Time calculation Function +// ********************************************************************* +function script Time2Str { + set .@Time_Left, getarg(0) - gettimetick(2); + + set .@Days, .@Time_Left / 86400; + set .@Time_Left, .@Time_Left - (.@Days * 86400); + set .@Hours, .@Time_Left / 3600; + set .@Time_Left, .@Time_Left - (.@Hours * 3600); + set .@Minutes, .@Time_Left / 60; + set .@Time_Left, .@Time_Left - (.@Minutes * 60); + + set .@Time$, ""; + if( .@Days > 1 ) + set .@Time$, .@Time$ + .@Days + " days, "; + else if( .@Days > 0 ) + set .@Time$, .@Time$ + .@Days + " day, "; + + if( .@Hours > 1 ) + set .@Time$, .@Time$ + .@Hours + " hours, "; + else if( .@Hours > 0 ) + set .@Time$, .@Time$ + .@Hours + " hour, "; + + if( .@Minutes > 1 ) + set .@Time$, .@Time$ + .@Minutes + " minutes, "; + else if( .@Minutes > 0 ) + set .@Time$, .@Time$ + .@Minutes + " minute, "; + + if( .@Time_Left > 1 || .@Time_Left == 0 ) + set .@Time$, .@Time$ + .@Time_Left + " seconds."; + else if( .@Time_Left == 1 ) + set .@Time$, .@Time$ + .@Time_Left + " second."; + + return .@Time$; +} + +// Guillaume Knight - Tierra Valley +// ********************************************************************* +bat_room,159,178,5 script Guillaume Knight#1 417,{ + mes "[Guillaume Knight]"; + mes "Tierra Gorge is a very steep canyon with two forts residing in the north and south ends of the map."; + next; + mes "[Guillaume Knight]"; + mes "There is a ration depot for the Guillaume and Croix armies at the 11 and 8 o'clock directions."; + next; + mes "[Guillaume Knight]"; + mes "The battle starts at your army's ship, and the goal is to advance and destroy your enemy's rations depot faster than they can destroy yours."; + mes ""; + mes "The army that captures the neutral flag in the center of the battlefield will be rewarded with extra regeneration points, meaning their soldiers will resurrect more than the other side, giving them an advantage."; + next; + mes "[Guillaume Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +// Tierra Officer - Guillaume +// ********************************************************************* +bat_room,156,178,5 script Tierra Valley Officer#1 418,{ + mes "[Tierra Officer]"; + if( Bat_Team == 2 ) + { + mes "Get out of here you stinky Croix!"; + close; + } + + if( Bat_Team == 0 ) + { + mes "Please sign up for an army with Prince Croix or General Guillaume!"; + close; + } + + mes "Hello " + strcharinfo(0) + ", let's show the power of the Guillaume Army to those stinky Croixs!"; + next; + if( select("I want to join your army!:End Conversation") == 2 ) + close; + + mes "[Tierra Officer]"; + if( BG_Delay_Tick >= gettimetick(2) ) + { + mes "You are a Deserter!!"; + mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; + close; + } + + if( checkquest(2069,PLAYTIME) == 2 ) erasequest 2069; + if( checkquest(2069,PLAYTIME) != -1 ) + { + mes "You have received an indicator showing that you've participated in the Battle at Tierra Gorge. I can't let you participate in any other battles until the indicator goes off."; + next; + mes "[Tierra Officer]"; + mes "Stand-by for Tierra Gorge Battle until the time limit passes."; + close; + } + + if( BaseLevel < 80 ) + { + mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; + close; + } + + mes "Good luck!"; + close2; + warp "bat_room",85,224; + end; +} + +// Croix Knight - Tierra Valley +// ********************************************************************* +bat_room,159,121,1 script Croix Knight#1 413,{ + mes "[Croix Knight]"; + mes "Tierra Gorge is a very steep canyon with two forts residing in the north and south ends of the map."; + next; + mes "[Croix Knight]"; + mes "There is a ration depot for the Guillaume and Croix armies at the 11 and 8 o'clock directions."; + next; + mes "[Croix Knight]"; + mes "The battle starts at your army's ship, and the goal is to advance and destroy your enemy's rations depot faster than they can destroy yours."; + mes ""; + mes "The army that captures the neutral flag in the center of the battlefield will be rewarded with extra regeneration points, meaning their soldiers will resurrect more than the other side, giving them an advantage."; + next; + mes "[Croix Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +// Tierra Officer - Croix +// ********************************************************************* +bat_room,156,121,1 script Tierra Valley Officer#2 414,{ + mes "[Tierra Officer]"; + if( Bat_Team == 1 ) + { + mes "Get out of here you stupid Guillaume!"; + close; + } + + if( Bat_Team == 0 ) + { + mes "Please sign up for an army with Prince Croix or General Guillaume!"; + close; + } + + mes "Hello " + strcharinfo(0) + ", let's show the power of the Croix Army to those stinky Guillaumes!"; + next; + if( select("I want to join your army!:End Conversation") == 2 ) + close; + + mes "[Tierra Officer]"; + if( BG_Delay_Tick >= gettimetick(2) ) + { + mes "You are a Deserter!!"; + mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; + close; + } + + if( checkquest(2069,PLAYTIME) == 2 ) erasequest 2069; + if( checkquest(2069,PLAYTIME) != -1 ) + { + mes "You have received an indicator showing that you've participated in the Battle at Tierra Gorge. I can't let you participate in any other battles until the indicator goes off."; + next; + mes "[Tierra Officer]"; + mes "Stand-by for Tierra Gorge Battle until the time limit passes."; + close; + } + + if( BaseLevel < 80 ) + { + mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; + close; + } + + mes "Good luck!"; + close2; + warp "bat_room",85,208; + end; +} + +// Guillaume Knight - Tierra +// ********************************************************************* +bat_room,167,178,5 script Guillaume Knight#2 417,{ + mes "[Guillaume Knight]"; + mes "Tierra Gorge is a very steep canyon with two forts residing in the north and south ends of the map."; + next; + mes "[Guillaume Knight]"; + mes "There is a ration depot for the Guillaume and Croix armies at the 11 and 8 o'clock directions."; + next; + mes "[Guillaume Knight]"; + mes "The battle starts at your army's ship, and the goal is to advance and destroy your enemy's rations depot faster than they can destroy yours."; + mes ""; + mes "The army that captures the neutral flag in the center of the battlefield will be rewarded with extra regeneration points, meaning their soldiers will resurrect more than the other side, giving them an advantage."; + next; + mes "[Guillaume Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +// Tierra Officer - Guillaume +// ********************************************************************* +bat_room,164,178,5 script Tierra Valley Officer#3 418,{ + mes "[Tierra Officer]"; + if( Bat_Team == 2 ) + { + mes "Get out of here you stinky Croix!"; + close; + } + + if( Bat_Team == 0 ) + { + mes "Please sign up for an army with Prince Croix or General Guillaume!"; + close; + } + + mes "Hello " + strcharinfo(0) + ", let's show the power of the Guillaume Army to those stinky Croixs!"; + next; + if( select("I want to join your army!:End Conversation") == 2 ) + close; + + mes "[Tierra Officer]"; + if( BG_Delay_Tick >= gettimetick(2) ) + { + mes "You are a Deserter!!"; + mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; + close; + } + + if( checkquest(2069,PLAYTIME) == 2 ) erasequest 2069; + if( checkquest(2069,PLAYTIME) != -1 ) + { + mes "You have received an indicator showing that you've participated in the Battle at Tierra Gorge. I can't let you participate in any other battles until the indicator goes off."; + next; + mes "[Tierra Officer]"; + mes "Stand-by for Tierra Gorge Battle until the time limit passes."; + close; + } + + if( BaseLevel < 80 ) + { + mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; + close; + } + + mes "Good luck!"; + close2; + warp "bat_room",57,94; + end; +} + +// Croix Knight - Tierra +// ********************************************************************* +bat_room,167,121,1 script Croix Knight#2 413,{ + mes "[Croix Knight]"; + mes "Tierra Gorge is a very steep canyon with two forts residing in the north and south ends of the map."; + next; + mes "[Croix Knight]"; + mes "There is a ration depot for the Guillaume and Croix armies at the 11 and 8 o'clock directions."; + next; + mes "[Croix Knight]"; + mes "The battle starts at your army's ship, and the goal is to advance and destroy your enemy's rations depot faster than they can destroy yours."; + mes ""; + mes "The army that captures the neutral flag in the center of the battlefield will be rewarded with extra regeneration points, meaning their soldiers will resurrect more than the other side, giving them an advantage."; + next; + mes "[Croix Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +// Tierra Officer - Croix +// ********************************************************************* +bat_room,164,121,1 script Tierra Valley Officer#4 414,{ + mes "[Tierra Officer]"; + if( Bat_Team == 1 ) + { + mes "Get out of here you stupid Guillaume!"; + close; + } + + if( Bat_Team == 0 ) + { + mes "Please sign up for an army with Prince Croix or General Guillaume!"; + close; + } + + mes "Hello " + strcharinfo(0) + ", let's show the power of the Croix Army to those stinky Guillaumes!"; + next; + if( select("I want to join your army!:End Conversation") == 2 ) + close; + + mes "[Tierra Officer]"; + if( BG_Delay_Tick >= gettimetick(2) ) + { + mes "You are a Deserter!!"; + mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; + close; + } + + if( checkquest(2069,PLAYTIME) == 2 ) erasequest 2069; + if( checkquest(2069,PLAYTIME) != -1 ) + { + mes "You have received an indicator showing that you've participated in the Battle at Tierra Gorge. I can't let you participate in any other battles until the indicator goes off."; + next; + mes "[Tierra Officer]"; + mes "Stand-by for Tierra Gorge Battle until the time limit passes."; + close; + } + + if( BaseLevel < 80 ) + { + mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; + close; + } + + mes "Good luck!"; + close2; + warp "bat_room",57,77; + end; +} + +// Guillaune Knight - Flavius +// ********************************************************************* +bat_room,175,178,5 script Guillaume Knight#3 417,{ + mes "[Guillaume Knight]"; + mes "The objective of the Flavius Battle is to score 2 points before your enemy by destroying their crystal."; + next; + mes "[Guillaume Knight]"; + mes "The crystals for both armies are protected by special barricades that cannot be destroyed by direct attacks."; + next; + mes "[Guillaume Knight]"; + mes "But they can be removed by destroying the Guardians that protect the enemy army base."; + next; + mes "[Guillaume Knight]"; + mes "The crystals are immune to every type of skill; your physical attacks are the only choice for destroying your enemy's crystal."; + next; + mes "[Guillaume Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +// Flavius Officer - Guillaume +// ********************************************************************* +bat_room,172,178,5 script Flavius Officer#1 418,{ + mes "[Flavius Officer]"; + if( Bat_Team == 2 ) + { + mes "Get out of here you stupid Croix!"; + close; + } + + if( Bat_Team == 0 ) + { + mes "Please sign up for an army with Prince Croix or General Guillaume!"; + close; + } + + mes "Hello " + strcharinfo(0) + ", let's show the power of the Guillaume Army to those stinky Croixs!"; + next; + if( select("I want to join your army!:End Conversation") == 2 ) + close; + + mes "[Flavius Officer]"; + if( BG_Delay_Tick >= gettimetick(2) ) + { + mes "You are a Deserter!!"; + mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; + close; + } + + if( checkquest(2070,PLAYTIME) == 2 ) erasequest 2070; + if( checkquest(2070,PLAYTIME) != -1 ) + { + mes "You have received an indicator showing that you've participated in the Battle at Flavius. I can't let you participate in any other battles until the indicator goes off."; + next; + mes "[Flavius Officer]"; + mes "Stand-by for Flavius Battle until the time limit passes."; + close; + } + + if( BaseLevel < 80 ) + { + mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; + close; + } + + mes "Good luck!"; + close2; + warp "bat_room",85,94; + end; +} + +// Croix Knight - Flavius +// ********************************************************************* +bat_room,175,121,1 script Croix Knight#3 413,{ + mes "[Croix Knight]"; + mes "The objective of the Flavius Battle is to score 2 points before your enemy by destroying their crystal."; + next; + mes "[Croix Knight]"; + mes "The crystals for both armies are protected by special barricades that cannot be destroyed by direct attacks."; + next; + mes "[Croix Knight]"; + mes "But they can be removed by destroying the Guardians that protect the enemy army base."; + next; + mes "[Croix Knight]"; + mes "The crystals are immune to every type of skill; your physical attacks are the only choice for destroying your enemy's crystal."; + next; + mes "[Croix Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +// Flavius Officerer - Croix +// ********************************************************************* +bat_room,172,121,1 script Flavius Officer#2 414,{ + mes "[Flavius Officer]"; + if( Bat_Team == 1 ) + { + mes "Get out of here you stupid Guillaume!"; + close; + } + + if( Bat_Team == 0 ) + { + mes "Please sign up for an army with Prince Croix or General Guillaume!"; + close; + } + + mes "Hello " + strcharinfo(0) + ", let's show the power of the Croix Army to those stinky Guillaumes!"; + next; + if( select("I want to join your army!:End Conversation") == 2 ) + close; + + mes "[Flavius Officer]"; + if( BG_Delay_Tick >= gettimetick(2) ) + { + mes "You are a Deserter!!"; + mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; + close; + } + + if( checkquest(2070,PLAYTIME) == 2 ) erasequest 2070; + if( checkquest(2070,PLAYTIME) != -1 ) + { + mes "You have received an indicator showing that you've participated in the Battle at Flavius. I can't let you participate in any other battles until the indicator goes off."; + next; + mes "[Flavius Officer]"; + mes "Stand-by for Flavius Battle until the time limit passes."; + close; + } + + if( BaseLevel < 80 ) + { + mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; + close; + } + + mes "Good luck!"; + close2; + warp "bat_room",85,77; + end; +} + +// Guillaune Knight - Flavius +// ********************************************************************* +bat_room,151,178,5 script Guillaume Knight#4 417,{ + mes "[Guillaume Knight]"; + mes "The objective of the Flavius Battle is to score 2 points before your enemy by destroying their crystal."; + next; + mes "[Guillaume Knight]"; + mes "The crystals for both armies are protected by special barricades that cannot be destroyed by direct attacks."; + next; + mes "[Guillaume Knight]"; + mes "But they can be removed by destroying the Guardians that protect the enemy army base."; + next; + mes "[Guillaume Knight]"; + mes "The crystals are immune to every type of skill; your physical attacks are the only choice for destroying your enemy's crystal."; + next; + mes "[Guillaume Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +// Flavius Officerer - Guillaume +// ********************************************************************* +bat_room,148,178,5 script Flavius Officer#3 418,{ + mes "[Flavius Officer]"; + if( Bat_Team == 2 ) + { + mes "Get out of here you stupid Croix!"; + close; + } + + if( Bat_Team == 0 ) + { + mes "Please sign up for an army with Prince Croix or General Guillaume!"; + close; + } + + mes "Hello " + strcharinfo(0) + ", let's show the power of the Guillaume Army to those stinky Croixs!"; + next; + if( select("I want to join your army!:End Conversation") == 2 ) + close; + + mes "[Flavius Officer]"; + if( BG_Delay_Tick >= gettimetick(2) ) + { + mes "You are a Deserter!!"; + mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; + close; + } + + if( checkquest(2070,PLAYTIME) == 2 ) erasequest 2070; + if( checkquest(2070,PLAYTIME) != -1 ) + { + mes "You have received an indicator showing that you've participated in the Battle at Flavius. I can't let you participate in any other battles until the indicator goes off."; + next; + mes "[Flavius Officer]"; + mes "Stand-by for Flavius Battle until the time limit passes."; + close; + } + + if( BaseLevel < 80 ) + { + mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; + close; + } + + mes "Good luck!"; + close2; + warp "bat_room",253,94; + end; +} + +// Croix Knight - Flavius +// ********************************************************************* +bat_room,151,121,1 script Croix Knight#4 413,{ + mes "[Croix Knight]"; + mes "The objective of the Flavius Battle is to score 2 points before your enemy by destroying their crystal."; + next; + mes "[Croix Knight]"; + mes "The crystals for both armies are protected by special barricades that cannot be destroyed by direct attacks."; + next; + mes "[Croix Knight]"; + mes "But they can be removed by destroying the Guardians that protect the enemy army base."; + next; + mes "[Croix Knight]"; + mes "The crystals are immune to every type of skill; your physical attacks are the only choice for destroying your enemy's crystal."; + next; + mes "[Croix Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +// Flavius Officerer - Croix +// ********************************************************************* +bat_room,148,121,1 script Flavius Officer#4 414,{ + mes "[Flavius Officer]"; + if( Bat_Team == 1 ) + { + mes "Get out of here you stupid Guillaume!"; + close; + } + + if( Bat_Team == 0 ) + { + mes "Please sign up for an army with Prince Croix or General Guillaume!"; + close; + } + + mes "Hello " + strcharinfo(0) + ", let's show the power of the Croix Army to those stinky Guillaumes!"; + next; + if( select("I want to join your army!:End Conversation") == 2 ) + close; + + mes "[Flavius Officer]"; + if( BG_Delay_Tick >= gettimetick(2) ) + { + mes "You are a Deserter!!"; + mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; + close; + } + + if( checkquest(2070,PLAYTIME) == 2 ) erasequest 2070; + if( checkquest(2070,PLAYTIME) != -1 ) + { + mes "You have received an indicator showing that you've participated in the Battle at Flavius. I can't let you participate in any other battles until the indicator goes off."; + next; + mes "[Flavius Officer]"; + mes "Stand-by for Flavius Battle until the time limit passes."; + close; + } + + if( BaseLevel < 80 ) + { + mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; + close; + } + + mes "Good luck!"; + close2; + warp "bat_room",253,77; + end; +} + +// Guillaume Knight - KvM +// ********************************************************************* +bat_room,143,178,5 script Guillaume Knight#5 417,{ + mes "[Guillaume Knight]"; + mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents before all of you die."; + next; + mes "[Guillaume Knight]"; + mes "The first team to lose all their soldiers loses."; + next; + mes "[Guillaume Knight]"; + mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential."; + next; + mes "[Guillaume Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +// KvM Officerer - Guillaume +// ********************************************************************* +bat_room,140,178,5 script KVM [80-99] Officer#1 418,{ + mes "[KVM Officer]"; + if( Bat_Team == 2 ) + { + mes "Get out of here you stinky Croix!"; + close; + } + + if( Bat_Team == 0 ) + { + mes "Please sign up for an army with Prince Croix or General Guillaume!"; + close; + } + + mes "Hello " + strcharinfo(0) + ", let's show the power of the Guillaume Army to those stinky Croixs!"; + next; + if( select("I want to join your army!:End Conversation") == 2 ) + close; + + mes "[KVM Officer]"; + if( BG_Delay_Tick >= gettimetick(2) ) + { + mes "You are a Deserter!!"; + mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; + close; + } + + if( checkquest(6025,PLAYTIME) == 2 ) erasequest 6025; + if( checkquest(6025,PLAYTIME) != -1 ) + { + mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off."; + next; + mes "[KVM Officer]"; + mes "Stand-by for KvM Battle until the time limit passes."; + close; + } + + if( BaseLevel < 80 ) + { + mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 80 to 99."; + close; + } + + mes "Good luck!"; + close2; + warp "bat_room",253,224; + end; +} + +// Croix Knight - KvM +// ********************************************************************* +bat_room,143,121,1 script Croix Knight#5 413,{ + mes "[Croix Knight]"; + mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents before all of you die."; + next; + mes "[Croix Knight]"; + mes "The first team to lose all their soldiers loses."; + next; + mes "[Croix Knight]"; + mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential."; + next; + mes "[Croix Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +// KvM Officer - Croix +// ********************************************************************* +bat_room,140,121,1 script KVM [80-99] Officer#2 414,{ + mes "[KVM Officer]"; + if( Bat_Team == 1 ) + { + mes "Get out of here you stupid Guillaume!"; + close; + } + + if( Bat_Team == 0 ) + { + mes "Please sign up for an army with Prince Croix or General Guillaume!"; + close; + } + + mes "Hello " + strcharinfo(0) + ", let's show the power of the Croix Army to those stinky Guillaumes!"; + next; + if( select("I want to join your army!:End Conversation") == 2 ) + close; + + mes "[KVM Officer]"; + if( BG_Delay_Tick >= gettimetick(2) ) + { + mes "You are a Deserter!!"; + mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; + close; + } + + if( checkquest(6025,PLAYTIME) == 2 ) erasequest 6025; + if( checkquest(6025,PLAYTIME) != -1 ) + { + mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off."; + next; + mes "[KVM Officer]"; + mes "Stand-by for KvM Battle until the time limit passes."; + close; + } + + if( BaseLevel < 80 ) + { + mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 80 to 99."; + close; + } + + mes "Good luck!"; + close2; + warp "bat_room",253,208; + end; +} + +// Guillaume Knight - KvM +// ********************************************************************* +bat_room,135,178,5 script Guillaume Knight#6 417,{ + mes "[Guillaume Knight]"; + mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents before all of you die."; + next; + mes "[Guillaume Knight]"; + mes "The first team to lose all their soldiers loses."; + next; + mes "[Guillaume Knight]"; + mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential."; + next; + mes "[Guillaume Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +// KvM Officerer - Guillaume +// ********************************************************************* +bat_room,132,178,5 script KVM [60-79] Officer#1 418,{ + mes "[KVM Officer]"; + if( Bat_Team == 2 ) + { + mes "Get out of here you stinky Croix!"; + close; + } + + if( Bat_Team == 0 ) + { + mes "Please sign up for an army with Prince Croix or General Guillaume!"; + close; + } + + mes "Hello " + strcharinfo(0) + ", let's show the power of the Guillaume Army to those stinky Croixs!"; + next; + if( select("I want to join your army!:End Conversation") == 2 ) + close; + + mes "[KVM Officer]"; + if( BG_Delay_Tick >= gettimetick(2) ) + { + mes "You are a Deserter!!"; + mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; + close; + } + + if( checkquest(6025,PLAYTIME) == 2 ) erasequest 6025; + if( checkquest(6025,PLAYTIME) != -1 ) + { + mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off."; + next; + mes "[KVM Officer]"; + mes "Stand-by for KvM Battle until the time limit passes."; + close; + } + + if( BaseLevel < 60 || BaseLevel > 79 ) + { + mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 60 to 79."; + close; + } + + mes "Good luck!"; + close2; + warp "bat_room",225,224; + end; +} + +// Croix Knight - KvM +// ********************************************************************* +bat_room,135,121,1 script Croix Knight#6 413,{ + mes "[Croix Knight]"; + mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents before all of you die."; + next; + mes "[Croix Knight]"; + mes "The first team to lose all their soldiers loses."; + next; + mes "[Croix Knight]"; + mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential."; + next; + mes "[Croix Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +// KvM Officer - Croix +// ********************************************************************* +bat_room,132,121,1 script KVM [60-79] Officer#2 414,{ + mes "[KVM Officer]"; + if( Bat_Team == 1 ) + { + mes "Get out of here you stupid Guillaume!"; + close; + } + + if( Bat_Team == 0 ) + { + mes "Please sign up for an army with Prince Croix or General Guillaume!"; + close; + } + + mes "Hello " + strcharinfo(0) + ", let's show the power of the Croix Army to those stinky Guillaumes!"; + next; + if( select("I want to join your army!:End Conversation") == 2 ) + close; + + mes "[KVM Officer]"; + if( BG_Delay_Tick >= gettimetick(2) ) + { + mes "You are a Deserter!!"; + mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; + close; + } + + if( checkquest(6025,PLAYTIME) == 2 ) erasequest 6025; + if( checkquest(6025,PLAYTIME) != -1 ) + { + mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off."; + next; + mes "[KVM Officer]"; + mes "Stand-by for KvM Battle until the time limit passes."; + close; + } + + if( BaseLevel < 60 || BaseLevel > 79 ) + { + mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 60 to 79."; + close; + } + + mes "Good luck!"; + close2; + warp "bat_room",225,208; + end; +} + +// Guillaume Knight - KvM +// ********************************************************************* +bat_room,127,178,5 script Guillaume Knight#7 417,{ + mes "[Guillaume Knight]"; + mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents before all of you die."; + next; + mes "[Guillaume Knight]"; + mes "The first team to lose all their soldiers loses."; + next; + mes "[Guillaume Knight]"; + mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential."; + next; + mes "[Guillaume Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +// KvM Officerer - Guillaume +// ********************************************************************* +bat_room,124,178,5 script KVM [1-59] Officer#1 418,{ + mes "[KVM Officer]"; + if( Bat_Team == 2 ) + { + mes "Get out of here you stinky Croix!"; + close; + } + + if( Bat_Team == 0 ) + { + mes "Please sign up for an army with Prince Croix or General Guillaume!"; + close; + } + + mes "Hello " + strcharinfo(0) + ", let's show the power of the Guillaume Army to those stinky Croixs!"; + next; + if( select("I want to join your army!:End Conversation") == 2 ) + close; + + mes "[KVM Officer]"; + if( BG_Delay_Tick >= gettimetick(2) ) + { + mes "You are a Deserter!!"; + mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; + close; + } + + if( checkquest(6025,PLAYTIME) == 2 ) erasequest 6025; + if( checkquest(6025,PLAYTIME) != -1 ) + { + mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off."; + next; + mes "[KVM Officer]"; + mes "Stand-by for KvM Battle until the time limit passes."; + close; + } + + if( BaseLevel > 59 ) + { + mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 1 to 59."; + close; + } + + mes "Good luck!"; + close2; + warp "bat_room",197,224; + end; +} + +// Croix Knight - KvM +// ********************************************************************* +bat_room,127,121,1 script Croix Knight#7 413,{ + mes "[Croix Knight]"; + mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents before all of you die."; + next; + mes "[Croix Knight]"; + mes "The first team to lose all their soldiers loses."; + next; + mes "[Croix Knight]"; + mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential."; + next; + mes "[Croix Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +// KvM Officer - Croix +// ********************************************************************* +bat_room,124,121,1 script KVM [1-59] Officer#2 414,{ + mes "[KVM Officer]"; + if( Bat_Team == 1 ) + { + mes "Get out of here you stupid Guillaume!"; + close; + } + + if( Bat_Team == 0 ) + { + mes "Please sign up for an army with Prince Croix or General Guillaume!"; + close; + } + + mes "Hello " + strcharinfo(0) + ", let's show the power of the Croix Army to those stinky Guillaumes!"; + next; + if( select("I want to join your army!:End Conversation") == 2 ) + close; + + mes "[KVM Officer]"; + if( BG_Delay_Tick >= gettimetick(2) ) + { + mes "You are a Deserter!!"; + mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; + close; + } + + if( checkquest(6025,PLAYTIME) == 2 ) erasequest 6025; + if( checkquest(6025,PLAYTIME) != -1 ) + { + mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off."; + next; + mes "[KVM Officer]"; + mes "Stand-by for KvM Battle until the time limit passes."; + close; + } + + if( BaseLevel > 59 ) + { + mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 1 to 59."; + close; + } + + mes "Good luck!"; + close2; + warp "bat_room",197,208; + 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 Guillaume camp#bat 973,{ end; } +- script Croix camp#bat 974,{ end; } + +// Exit from Registration +// ********************************************************************* +- script warp2bat_room -1,{ + end; + +OnTouch: + set BG_Delay_Tick, gettimetick(2) + 30; + warp "bat_room",154,149; + end; +} + +// Flavius bat_b02 +bat_room,57,81,0 duplicate(warp2bat_room) bat1 45,1,1 +bat_room,57,90,0 duplicate(warp2bat_room) bat2 45,1,1 +// Free BG +bat_room,57,220,0 duplicate(warp2bat_room) bat3 45,1,1 +bat_room,57,211,0 duplicate(warp2bat_room) bat4 45,1,1 +// Tierra Valley bat_a02 +bat_room,85,81,0 duplicate(warp2bat_room) bat5 45,1,1 +bat_room,85,90,0 duplicate(warp2bat_room) bat6 45,1,1 +// Tierra Valley bat_a01 +bat_room,85,220,0 duplicate(warp2bat_room) bat7 45,1,1 +bat_room,85,211,0 duplicate(warp2bat_room) bat8 45,1,1 +// Free BG +bat_room,113,81,0 duplicate(warp2bat_room) bat9 45,1,1 +bat_room,113,90,0 duplicate(warp2bat_room) bat10 45,1,1 +// Free BG +bat_room,113,220,0 duplicate(warp2bat_room) bat11 45,1,1 +bat_room,113,211,0 duplicate(warp2bat_room) bat12 45,1,1 +// Free BG +bat_room,141,81,0 duplicate(warp2bat_room) bat13 45,1,1 +bat_room,141,90,0 duplicate(warp2bat_room) bat14 45,1,1 +// Free BG +bat_room,141,220,0 duplicate(warp2bat_room) bat15 45,1,1 +bat_room,141,211,0 duplicate(warp2bat_room) bat16 45,1,1 +// Free BG +bat_room,169,81,0 duplicate(warp2bat_room) bat17 45,1,1 +bat_room,169,90,0 duplicate(warp2bat_room) bat18 45,1,1 +// Free BG +bat_room,169,220,0 duplicate(warp2bat_room) bat19 45,1,1 +bat_room,169,211,0 duplicate(warp2bat_room) bat20 45,1,1 +// Free BG +bat_room,197,81,0 duplicate(warp2bat_room) bat21 45,1,1 +bat_room,197,90,0 duplicate(warp2bat_room) bat22 45,1,1 +// KvM bat_c03 +bat_room,197,220,0 duplicate(warp2bat_room) bat23 45,1,1 +bat_room,197,211,0 duplicate(warp2bat_room) bat24 45,1,1 +// Free BG +bat_room,225,81,0 duplicate(warp2bat_room) bat25 45,1,1 +bat_room,225,90,0 duplicate(warp2bat_room) bat26 45,1,1 +// KvM bat_c02 +bat_room,225,220,0 duplicate(warp2bat_room) bat27 45,1,1 +bat_room,225,211,0 duplicate(warp2bat_room) bat28 45,1,1 +// Flavius bat_b01 +bat_room,253,81,0 duplicate(warp2bat_room) bat29 45,1,1 +bat_room,253,90,0 duplicate(warp2bat_room) bat30 45,1,1 +// KvM bat_c01 +bat_room,253,220,0 duplicate(warp2bat_room) bat31 45,1,1 +bat_room,253,211,0 duplicate(warp2bat_room) bat32 45,1,1 + +// Badges Repairman +// ********************************************************************* + +bat_room,138,144,5 script Repairman#bg 99,{ + callfunc "repairmain","Repairman"; + end; +} + +// Badges Exchange +// ********************************************************************* + +bat_room,160,150,3 script Erundek 109,{ + mes "[Erundek]"; + mes "Welcome, mighty warrior."; + mes "What can I do for you today ?"; + next; + switch( select("Check the Catalog","Exchange Bravery Badges","Exchange Valor Badges","Exchange Heroism Badges","Hmm, nothing I guess.") ) + { + case 1: + mes "[Erundek]"; + mes "We have many items, so please take a look and purchase deliberately."; + close2; + Readbook 11010,1; + end; + case 5: + mes "[Erundek]"; + mes "As you wish."; + mes "See you later."; + close; + case 2: // Bravery Badges + mes "[Erundek]"; + mes "So you want to exchange ^0000FFBravery Badges^000000 from the Battle of Tierra Valley."; + mes "What kind of item do you want to exchange?"; + next; + deletearray .@Item_DB[0],127; + set .@Badge, 7828; + + switch( select("Weapons:Garment:Footgear:Armor:Accessory") ) + { + case 1: setarray .@Item_DB[0],13036,13411,1425,1632,1634,1543,1924,1978,1574,1824,1183,1380,13305,1279,1739,13108,13172; set .@Value, 100; break; + case 2: setarray .@Item_DB[0],2538,2539,2540; set .@Value, 50; break; + case 3: setarray .@Item_DB[0],2435,2436,2437; set .@Value, 50; break; + case 4: setarray .@Item_DB[0],2376,2377,2378,2379,2380,2381,2382; set .@Value, 80; break; + case 5: setarray .@Item_DB[0],2720,2721,2722,2723,2724,2725,2733; set .@Value, 500; break; + } + + break; + case 3: // Valor Badges + mes "[Erundek]"; + mes "So you want to exchange ^FF0000Valor Badges^000000 from the Battle of Flavius."; + mes "What kind of item do you want to exchange?"; + next; + deletearray .@Item_DB[0],127; + set .@Badge, 7829; + + switch( select("Weapons:Garment:Footgear:Armor:Accessory") ) + { + case 1: setarray .@Item_DB[0],13037,13410,1633,1635,1542,1923,1977,1575,1823,1184,1482,1379,13306,1280,1738,13171,13173,13174; set .@Value, 100; break; + case 2: setarray .@Item_DB[0],2538,2539,2540; set .@Value, 50; break; + case 3: setarray .@Item_DB[0],2435,2436,2437; set .@Value, 50; break; + case 4: setarray .@Item_DB[0],2376,2377,2378,2379,2380,2381,2382; set .@Value, 80; break; + case 5: setarray .@Item_DB[0],2720,2721,2722,2723,2724,2725,2733; set .@Value, 500; break; + } + + break; + case 4: // Heroism Badge + mes "[Erundek]"; + mes "So you want to exchange ^FFA500Heroism Badges^000000 from the Battle of Kriger Von Midgard."; + mes "This shop is not available at the moment."; + close; + } + + mes "[Erundek]"; + mes "What item do you want to exchange?"; + mes "If you are not sure, check the catalog."; + next; + + set .@Menu$, ""; + set .@Count, getarraysize(.@Item_DB); + for( set .@i, 0; .@i < .@Count; set .@i, .@i + 1 ) + set .@Menu$, .@Menu$ + getitemname(.@Item_DB[.@i]) + ":"; + + set .@Item_ID, .@Item_DB[select(.@Menu$) - 1]; + + mes "[Erundek]"; + mes "Would you like to exchange ^FF0000" + .@Value + " " + getitemname(.@Badge) + "^000000 for a ^0000FF" + getitemname(.@Item_ID) + "^000000?"; + next; + mes "Remember, Battleground Reward Items are ^FF0000Character Bound^000000."; + mes "Are you sure you want this item?"; + next; + + if( select("Yes:No") == 2 ) + { + mes "[Erundek]"; + mes "Do you need more time to check the items?"; + close; + } + + if( countitem(.@Badge) < .@Value ) + { + mes "[Erundek]"; + mes "I'm sorry, but you don't have enough badges to exchange."; + close; + } + + delitem .@Badge,.@Value; + getitem .@Item_ID,1; + mes "[Erundek]"; + mes "Thank you for exchanging."; + close; +} diff --git a/npc/battleground/bg_flavius_01.txt b/npc/custom/battleground/bg_flavius_01.txt index 1a61b4255..871780800 100644 --- a/npc/battleground/bg_flavius_01.txt +++ b/npc/custom/battleground/bg_flavius_01.txt @@ -438,16 +438,3 @@ bat_b01,110,162,1 duplicate(Croix camp#bat) Croix camp#bat18 974 bat_b01,110,137,1 duplicate(Croix camp#bat) Croix camp#bat19 974 bat_b01,152,120,1 duplicate(Croix camp#bat) Croix camp#bat20 974 bat_b01,158,114,1 duplicate(Croix camp#bat) Croix camp#bat21 974 - -// MapFlags -// ********************************************************************* - -bat_b01 mapflag battleground 2 -bat_b01 mapflag nomemo -bat_b01 mapflag nosave SavePoint -bat_b01 mapflag noteleport -bat_b01 mapflag nowarp -bat_b01 mapflag nowarpto -bat_b01 mapflag noreturn -bat_b01 mapflag nobranch -bat_b01 mapflag nopenalty diff --git a/npc/battleground/bg_flavius_02.txt b/npc/custom/battleground/bg_flavius_02.txt index c4e51fcea..255f96a0a 100644 --- a/npc/battleground/bg_flavius_02.txt +++ b/npc/custom/battleground/bg_flavius_02.txt @@ -438,16 +438,3 @@ bat_b02,110,162,1 duplicate(Croix camp#bat) Croix camp#bat39 974 bat_b02,110,137,1 duplicate(Croix camp#bat) Croix camp#bat40 974 bat_b02,152,120,1 duplicate(Croix camp#bat) Croix camp#bat41 974 bat_b02,158,114,1 duplicate(Croix camp#bat) Croix camp#bat42 974 - -// MapFlags -// ********************************************************************* - -bat_b02 mapflag battleground -bat_b02 mapflag nomemo -bat_b02 mapflag nosave SavePoint -bat_b02 mapflag noteleport -bat_b02 mapflag nowarp -bat_b02 mapflag nowarpto -bat_b02 mapflag noreturn -bat_b02 mapflag nobranch -bat_b02 mapflag nopenalty diff --git a/npc/custom/battleground/bg_kvm01.txt b/npc/custom/battleground/bg_kvm01.txt new file mode 100644 index 000000000..36c758f37 --- /dev/null +++ b/npc/custom/battleground/bg_kvm01.txt @@ -0,0 +1,378 @@ +// ============================================================================== +// BattleGround System - KvM 80~99 +// ============================================================================== + +// Registration NPC's +// ********************************************************************* + +bat_room,253,227,4 script Registration::KvM01R_Guillaume 418,{ // KvM Guillaume + end; + +OnInit: + waitingroom "Battle Station 5 Players",5,"KvM01_BG::OnGuillaumeJoin",1; + end; + +OnEnterBG: + set $@KvM01BG_id1, waitingroom2bg("bat_c01",53,128,"KvM01_BG::OnGuillaumeQuit","KvM01_BG::OnGuillaumeDie"); + end; +} + +bat_room,253,204,0 script Registration::KvM01R_Croix 414,{ // KvM Croix + end; + +OnInit: + waitingroom "Battle Station 5 Players",5,"KvM01_BG::OnCroixJoin",1; + end; + +OnEnterBG: + set $@KvM01BG_id2, waitingroom2bg("bat_c01",146,55,"KvM01_BG::OnCroixQuit","KvM01_BG::OnCroixDie"); + end; +} + +// Light Effects +// ********************************************************************* + +bat_c01,54,123,0 script #bat_c01a 111,{ + end; + +OnKvM01LightA: misceffect 54; end; +OnKvM01LightB: misceffect 55; end; +OnKvM01LightC: misceffect 56; end; +} + +bat_c01,56,125,0 duplicate(#bat_c01a) #bat_c01b 111 +bat_c01,58,127,0 duplicate(#bat_c01a) #bat_c01c 111 +bat_c01,141,56,0 duplicate(#bat_c01a) #bat_c01d 111 +bat_c01,143,58,0 duplicate(#bat_c01a) #bat_c01e 111 +bat_c01,145,60,0 duplicate(#bat_c01a) #bat_c01f 111 + +// Battleground Engine +// ********************************************************************* + +- script KvM01_BG -1,{ + end; + +OnInit: + setwall "bat_c01",54,122,6,7,0,"batc01wall_a"; + setwall "bat_c01",55,122,5,7,0,"batc01wall_b"; + setwall "bat_c01",140,56,6,7,0,"batc01wall_c"; + setwall "bat_c01",140,57,5,7,0,"batc01wall_d"; + disablenpc "TherapistKvM01a"; + disablenpc "TherapistKvM01b"; + disablenpc "VintenarKvM01a"; + disablenpc "VintenarKvM01b"; + end; + +OnGuillaumeJoin: +OnCroixJoin: + donpcevent "KvM01_BG::OnReadyCheck"; + end; + +OnGuillaumeQuit: + set BG_Delay_Tick, gettimetick(2) + 1200; +OnGuillaumeDie: + if( $@KvM01BG == 2 ) + { + set .Guillaume_Count, .Guillaume_Count - 1; + set .Croix_Score, .Croix_Score + 1; + bg_updatescore "bat_c01",.Guillaume_Score,.Croix_Score; + if( .Guillaume_Count < 1 ) donpcevent "KvM01_BG::OnCroixWin"; + } + end; + +OnCroixQuit: + set BG_Delay_Tick, gettimetick(2) + 1200; +OnCroixDie: + if( $@KvM01BG == 2 ) + { + set .Croix_Count, .Croix_Count - 1; + set .Guillaume_Score, .Guillaume_Score + 1; + bg_updatescore "bat_c01",.Guillaume_Score,.Croix_Score; + if( .Croix_Count < 1 ) donpcevent "KvM01_BG::OnGuillaumeWin"; + } + end; + +OnReadyCheck: + if( $@KvM01BG ) + end; + set .@Guillaume, getwaitingroomstate(0,"KvM01R_Guillaume"); + set .@Croix, getwaitingroomstate(0,"KvM01R_Croix"); + + if( .@Guillaume < 5 || .@Croix < 5 ) + { + if( .@Guillaume > 3 && .@Croix > 3 && !agitcheck() && !agitcheck2() && $@KvM_Flood < gettimetick(2) ) + { + announce "Battleground -- Kreiger Von Midgard [80-99] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",0,0x696969; + set $@KvM_Flood, gettimetick(2) + 15; + } + else + mapannounce "bat_room","Battleground -- Kreiger Von Midgard [80-99] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",1,0x696969; + end; + } + + set $@KvM01BG, 1; // Starting + donpcevent "KvM01R_Croix::OnEnterBG"; + donpcevent "KvM01R_Guillaume::OnEnterBG"; + donpcevent "KvM01_BG::OnStart"; + end; + +OnStart: + announce "Battleground -- Kreiger Von Midgard [80-99] has started!",0,0x696969; + enablenpc "TherapistKvM01a"; + enablenpc "TherapistKvM01b"; + disablenpc "VintenarKvM01a"; + disablenpc "VintenarKvM01b"; + set $@KvM01BG_Victory, 0; + sleep 2000; + // Warp Teams + bg_warp $@KvM01BG_id1,"bat_c01",53,128; + bg_warp $@KvM01BG_id2,"bat_c01",146,55; + // ScoreBoard + set .Guillaume_Score, 0; + set .Croix_Score, 0; + initnpctimer; + end; + +OnTimer5000: + areapercentheal "bat_c01",50,123,58,131,100,100; + areapercentheal "bat_c01",141,52,149,60,100,100; + mapannounce "bat_c01","The Battle will start in 25 seconds!!",1,0x696969; + end; + +OnTimer26000: + mapannounce "bat_c01","The Battle will start in 4 seconds!!",1,0x696969; + end; + +OnTimer27000: + donpcevent "::OnKvM01LightA"; + end; + +OnTimer28000: + donpcevent "::OnKvM01LightB"; + end; + +OnTimer29000: + donpcevent "::OnKvM01LightC"; + end; + +OnTimer30000: + // Team Members + set .Guillaume_Count, bg_get_data($@KvM01BG_id1, 0); + set .Croix_Count, bg_get_data($@KvM01BG_id2, 0); + if( .Guillaume_Count < 5 || .Croix_Count < 5 ) + { + set $@KvM01BG_Victory, 3; + set $@KvM01BG, 3; + mapannounce "bat_c01","There are not enough players to start the battle",1,0x696969; + stopnpctimer; + sleep 2000; + donpcevent "KvM01_BG::OnStop"; + end; + } + + set $@KvM01BG, 2; // Playing + areapercentheal "bat_c01",50,123,58,131,100,100; + bg_warp $@KvM01BG_id1,"bat_c01",62,119; + areapercentheal "bat_c01",141,52,149,60,100,100; + bg_warp $@KvM01BG_id2,"bat_c01",137,64; + end; + +OnTimer32000: + mapannounce "bat_c01","The Battle of Kreiger Von Midgard has begun!!",1,0x696969; + end; + +OnTimer300000: + mapannounce "bat_c01","The Battle will ends in 30 seconds!!",1,0x696969; + end; + +OnTimer330000: + if( .Croix_Count > .Guillaume_Count ) + donpcevent "KvM01_BG::OnCroixWin"; + else if( .Croix_Count < .Guillaume_Count ) + donpcevent "KvM01_BG::OnGuillaumeWin"; + else + { // Draw Game + set $@KvM01BG, 3; + set $@KvM01BG_Victory, 3; + + stopnpctimer; + sleep 2000; + mapannounce "bat_c01","The time is out! This is a Tie...",1,0x696969; + donpcevent "KvM01_BG::OnStop"; + } + end; + +OnGuillaumeWin: + set $@KvM01BG, 3; + set $@KvM01BG_Victory, 1; + + stopnpctimer; + sleep 2000; + mapannounce "bat_c01","The Guillaume Army has won the Battle of Kreiger Von Midgard",1,0x0000FF; + donpcevent "KvM01_BG::OnStop"; + end; + +OnCroixWin: + set $@KvM01BG, 3; + set $@KvM01BG_Victory, 2; + + stopnpctimer; + sleep 2000; + mapannounce "bat_c01","The Croix Army has won the Battle of Kreiger Von Midgard",1,0xFF0000; + donpcevent "KvM01_BG::OnStop"; + end; + +OnStop: + disablenpc "TherapistKvM01a"; + disablenpc "TherapistKvM01b"; + enablenpc "VintenarKvM01a"; + enablenpc "VintenarKvM01b"; + // Warp Teams + bg_warp $@KvM01BG_id1,"bat_c01",53,128; + bg_warp $@KvM01BG_id2,"bat_c01",146,55; + donpcevent "KvM01_BG_Out::OnBegin"; + end; + +OnReset: + stopnpctimer; + stopnpctimer "KvM01_BG_Out"; + set .Croix_Count, 0; + set .Guillaume_Count, 0; + set .Croix_Score, 0; + set .Guillaume_Score, 0; + set $@KvM01BG_Victory, 0; + if( $@KvM01BG_id1 ) { bg_destroy $@KvM01BG_id1; set $@KvM01BG_id1, 0; } + if( $@KvM01BG_id2 ) { bg_destroy $@KvM01BG_id2; set $@KvM01BG_id2, 0; } + disablenpc "TherapistKvM01a"; + disablenpc "TherapistKvM01b"; + disablenpc "VintenarKvM01a"; + disablenpc "VintenarKvM01b"; + sleep 1000; + mapwarp "bat_c01","bat_room",155,150; + sleep 2000; + maprespawnguildid "bat_c01",0,3; // Just in case someone else + bg_updatescore "bat_c01",0,0; + sleep 2000; + set $@KvM01BG, 0; + donpcevent "KvM01_BG::OnReadyCheck"; // Maybe a game is ready to start + end; +} + +- script KvM01_BG_Out -1,{ + end; + +OnBegin: + initnpctimer; + end; + +OnTimer3000: + mapannounce "bat_c01","Battle of Kreiger Von Midgard will close in 1 minute!",1,0x696969; + end; +OnTimer30000: + mapannounce "bat_c01","Battle of Kreiger Von Midgard will close in 30 seconds!",1,0x696969; + end; +OnTimer50000: + mapannounce "bat_c01","Battle of Kreiger Von Midgard will close in 10 seconds!",1,0x696969; + end; +OnTimer60000: + donpcevent "KvM01_BG::OnReset"; + end; +} + +// Battleground Therapist +// ********************************************************************* + +bat_c01,51,130,5 script Therapist in battle::TherapistKvM01a 95,{ + mes "[Therapist in battle]"; + mes "Just close your eyes, and take a deep breathe."; + mes "You can be free from pain."; + specialeffect2 312; + close; +} + +bat_c01,148,53,1 script Therapist in battle::TherapistKvM01b 95,{ + mes "[Therapist in battle]"; + mes "Just close your eyes, and take a deep breathe."; + mes "You can be free from pain."; + specialeffect2 312; + close; +} + +// Battleground rewards +// ********************************************************************* + +bat_c01,51,130,5 script Guillaume Vintenar::VintenarKvM01a 419,{ + if( $@KvM01BG_Victory ) + { + if( $@KvM01BG_Victory == 3 ) + { + setquest 6025; + bg_leave; + warp "bat_room",155,150; + end; + } + else if( $@KvM01BG_Victory == Bat_Team ) + { // Victory + set .@Reward, 5; + mes "[Swandery]"; + mes "Blessed Guillaume!!"; + mes "Let's enjoy our glorious victory!"; + mes "" + strcharinfo(0) + ", its a sign reflecting victory"; + close2; + } + else + { // + set .@Reward, 1; + mes "[Swandery]"; + 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 a lesson, and later you would definitely learn."; + close2; + } + + setquest 6025; + getitem 7773, .@Reward; + bg_leave; + warp "bat_room",155,150; + end; + } + end; +} + +bat_c01,148,53,1 script Croix Vintenar::VintenarKvM01b 415,{ + if( $@KvM01BG_Victory ) + { + if( $@KvM01BG_Victory == 3 ) + { + setquest 6025; + bg_leave; + warp "bat_room",155,150; + end; + } + else if( $@KvM01BG_Victory == Bat_Team ) + { // Victory + set .@Reward, 5; + mes "[Swandery]"; + mes "Blessed Croax!!"; + mes "Let's enjoy our glorious victory!"; + mes "" + strcharinfo(0) + ", its a sign reflecting victory"; + close2; + } + else + { // + set .@Reward, 1; + mes "[Swandery]"; + mes "Oh, " + strcharinfo(0) + ". 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 can win the next."; + close2; + } + + setquest 6025; + getitem 7773, .@Reward; + bg_leave; + warp "bat_room",155,150; + end; + } + end; +} diff --git a/npc/custom/battleground/bg_kvm02.txt b/npc/custom/battleground/bg_kvm02.txt new file mode 100644 index 000000000..5bfbba328 --- /dev/null +++ b/npc/custom/battleground/bg_kvm02.txt @@ -0,0 +1,378 @@ +// ============================================================================== +// BattleGround System - KvM 60~79 +// ============================================================================== + +// Registration NPC's +// ********************************************************************* + +bat_room,225,227,4 script Registration::KvM02R_Guillaume 418,{ // KvM Guillaume + end; + +OnInit: + waitingroom "Battle Station 5 Players",5,"KvM02_BG::OnGuillaumeJoin",1; + end; + +OnEnterBG: + set $@KvM02BG_id1, waitingroom2bg("bat_c02",53,128,"KvM02_BG::OnGuillaumeQuit","KvM02_BG::OnGuillaumeDie"); + end; +} + +bat_room,225,204,0 script Registration::KvM02R_Croix 414,{ // KvM Croix + end; + +OnInit: + waitingroom "Battle Station 5 Players",5,"KvM02_BG::OnCroixJoin",1; + end; + +OnEnterBG: + set $@KvM02BG_id2, waitingroom2bg("bat_c02",146,55,"KvM02_BG::OnCroixQuit","KvM02_BG::OnCroixDie"); + end; +} + +// Light Effects +// ********************************************************************* + +bat_c02,54,123,0 script #bat_c02a 111,{ + end; + +OnKvM02LightA: misceffect 54; end; +OnKvM02LightB: misceffect 55; end; +OnKvM02LightC: misceffect 56; end; +} + +bat_c02,56,125,0 duplicate(#bat_c02a) #bat_c02b 111 +bat_c02,58,127,0 duplicate(#bat_c02a) #bat_c02c 111 +bat_c02,141,56,0 duplicate(#bat_c02a) #bat_c02d 111 +bat_c02,143,58,0 duplicate(#bat_c02a) #bat_c02e 111 +bat_c02,145,60,0 duplicate(#bat_c02a) #bat_c02f 111 + +// Battleground Engine +// ********************************************************************* + +- script KvM02_BG -1,{ + end; + +OnInit: + setwall "bat_c02",54,122,6,7,0,"batc02wall_a"; + setwall "bat_c02",55,122,5,7,0,"batc02wall_b"; + setwall "bat_c02",140,56,6,7,0,"batc02wall_c"; + setwall "bat_c02",140,57,5,7,0,"batc02wall_d"; + disablenpc "TherapistKvM02a"; + disablenpc "TherapistKvM02b"; + disablenpc "VintenarKvM02a"; + disablenpc "VintenarKvM02b"; + end; + +OnGuillaumeJoin: +OnCroixJoin: + donpcevent "KvM02_BG::OnReadyCheck"; + end; + +OnGuillaumeQuit: + set BG_Delay_Tick, gettimetick(2) + 1200; +OnGuillaumeDie: + if( $@KvM02BG == 2 ) + { + set .Guillaume_Count, .Guillaume_Count - 1; + set .Croix_Score, .Croix_Score + 1; + bg_updatescore "bat_c02",.Guillaume_Score,.Croix_Score; + if( .Guillaume_Count < 1 ) donpcevent "KvM02_BG::OnCroixWin"; + } + end; + +OnCroixQuit: + set BG_Delay_Tick, gettimetick(2) + 1200; +OnCroixDie: + if( $@KvM02BG == 2 ) + { + set .Croix_Count, .Croix_Count - 1; + set .Guillaume_Score, .Guillaume_Score + 1; + bg_updatescore "bat_c02",.Guillaume_Score,.Croix_Score; + if( .Croix_Count < 1 ) donpcevent "KvM02_BG::OnGuillaumeWin"; + } + end; + +OnReadyCheck: + if( $@KvM02BG ) + end; + set .@Guillaume, getwaitingroomstate(0,"KvM02R_Guillaume"); + set .@Croix, getwaitingroomstate(0,"KvM02R_Croix"); + + if( .@Guillaume < 5 || .@Croix < 5 ) + { + if( .@Guillaume > 3 && .@Croix > 3 && !agitcheck() && !agitcheck2() && $@KvM_Flood < gettimetick(2) ) + { + announce "Battleground -- Kreiger Von Midgard [60-79] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",0,0x808080; + set $@KvM_Flood, gettimetick(2) + 15; + } + else + mapannounce "bat_room","Battleground -- Kreiger Von Midgard [60-79] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",1,0x808080; + end; + } + + set $@KvM02BG, 1; // Starting + donpcevent "KvM02R_Croix::OnEnterBG"; + donpcevent "KvM02R_Guillaume::OnEnterBG"; + donpcevent "KvM02_BG::OnStart"; + end; + +OnStart: + announce "Battleground -- Kreiger Von Midgard [60-79] has started!",0,0x808080; + enablenpc "TherapistKvM02a"; + enablenpc "TherapistKvM02b"; + disablenpc "VintenarKvM02a"; + disablenpc "VintenarKvM02b"; + set $@KvM02BG_Victory, 0; + sleep 2000; + // Warp Teams + bg_warp $@KvM02BG_id1,"bat_c02",53,128; + bg_warp $@KvM02BG_id2,"bat_c02",146,55; + // ScoreBoard + set .Guillaume_Score, 0; + set .Croix_Score, 0; + initnpctimer; + end; + +OnTimer5000: + areapercentheal "bat_c02",50,123,58,131,100,100; + areapercentheal "bat_c02",141,52,149,60,100,100; + mapannounce "bat_c02","The Battle will start in 25 seconds!!",1,0x808080; + end; + +OnTimer26000: + mapannounce "bat_c02","The Battle will start in 4 seconds!!",1,0x808080; + end; + +OnTimer27000: + donpcevent "::OnKvM02LightA"; + end; + +OnTimer28000: + donpcevent "::OnKvM02LightB"; + end; + +OnTimer29000: + donpcevent "::OnKvM02LightC"; + end; + +OnTimer30000: + // Team Members + set .Guillaume_Count, bg_get_data($@KvM02BG_id1, 0); + set .Croix_Count, bg_get_data($@KvM02BG_id2, 0); + if( .Guillaume_Count < 5 || .Croix_Count < 5 ) + { + set $@KvM02BG_Victory, 3; + set $@KvM02BG, 3; + mapannounce "bat_c02","There are not enough players to start the battle",1,0x808080; + stopnpctimer; + sleep 2000; + donpcevent "KvM02_BG::OnStop"; + end; + } + + set $@KvM02BG, 2; // Playing + areapercentheal "bat_c02",50,123,58,131,100,100; + bg_warp $@KvM02BG_id1,"bat_c02",62,119; + areapercentheal "bat_c02",141,52,149,60,100,100; + bg_warp $@KvM02BG_id2,"bat_c02",137,64; + end; + +OnTimer32000: + mapannounce "bat_c02","The Battle of Kreiger Von Midgard has begun!!",1,0x808080; + end; + +OnTimer300000: + mapannounce "bat_c02","The Battle will ends in 30 seconds!!",1,0x808080; + end; + +OnTimer330000: + if( .Croix_Count > .Guillaume_Count ) + donpcevent "KvM02_BG::OnCroixWin"; + else if( .Croix_Count < .Guillaume_Count ) + donpcevent "KvM02_BG::OnGuillaumeWin"; + else + { // Draw Game + set $@KvM02BG, 3; + set $@KvM02BG_Victory, 3; + + stopnpctimer; + sleep 2000; + mapannounce "bat_c02","The time is out! This is a Tie...",1,0x808080; + donpcevent "KvM02_BG::OnStop"; + } + end; + +OnGuillaumeWin: + set $@KvM02BG, 3; + set $@KvM02BG_Victory, 1; + + stopnpctimer; + sleep 2000; + mapannounce "bat_c02","The Guillaume Army has won the Battle of Kreiger Von Midgard",1,0x0000FF; + donpcevent "KvM02_BG::OnStop"; + end; + +OnCroixWin: + set $@KvM02BG, 3; + set $@KvM02BG_Victory, 2; + + stopnpctimer; + sleep 2000; + mapannounce "bat_c02","The Croix Army has won the Battle of Kreiger Von Midgard",1,0xFF0000; + donpcevent "KvM02_BG::OnStop"; + end; + +OnStop: + disablenpc "TherapistKvM02a"; + disablenpc "TherapistKvM02b"; + enablenpc "VintenarKvM02a"; + enablenpc "VintenarKvM02b"; + // Warp Teams + bg_warp $@KvM02BG_id1,"bat_c02",53,128; + bg_warp $@KvM02BG_id2,"bat_c02",146,55; + donpcevent "KvM02_BG_Out::OnBegin"; + end; + +OnReset: + stopnpctimer; + stopnpctimer "KvM02_BG_Out"; + set .Croix_Count, 0; + set .Guillaume_Count, 0; + set .Croix_Score, 0; + set .Guillaume_Score, 0; + set $@KvM02BG_Victory, 0; + if( $@KvM02BG_id1 ) { bg_destroy $@KvM02BG_id1; set $@KvM02BG_id1, 0; } + if( $@KvM02BG_id2 ) { bg_destroy $@KvM02BG_id2; set $@KvM02BG_id2, 0; } + disablenpc "TherapistKvM02a"; + disablenpc "TherapistKvM02b"; + disablenpc "VintenarKvM02a"; + disablenpc "VintenarKvM02b"; + sleep 1000; + mapwarp "bat_c02","bat_room",155,150; + sleep 2000; + maprespawnguildid "bat_c02",0,3; // Just in case someone else + bg_updatescore "bat_c02",0,0; + sleep 2000; + set $@KvM02BG, 0; + donpcevent "KvM02_BG::OnReadyCheck"; // Maybe a game is ready to start + end; +} + +- script KvM02_BG_Out -1,{ + end; + +OnBegin: + initnpctimer; + end; + +OnTimer3000: + mapannounce "bat_c02","Battle of Kreiger Von Midgard will close in 1 minute!",1,0x808080; + end; +OnTimer30000: + mapannounce "bat_c02","Battle of Kreiger Von Midgard will close in 30 seconds!",1,0x808080; + end; +OnTimer50000: + mapannounce "bat_c02","Battle of Kreiger Von Midgard will close in 10 seconds!",1,0x808080; + end; +OnTimer60000: + donpcevent "KvM02_BG::OnReset"; + end; +} + +// Battleground Therapist +// ********************************************************************* + +bat_c02,51,130,5 script Therapist in battle::TherapistKvM02a 95,{ + mes "[Therapist in battle]"; + mes "Just close your eyes, and take a deep breathe."; + mes "You can be free from pain."; + specialeffect2 312; + close; +} + +bat_c02,148,53,1 script Therapist in battle::TherapistKvM02b 95,{ + mes "[Therapist in battle]"; + mes "Just close your eyes, and take a deep breathe."; + mes "You can be free from pain."; + specialeffect2 312; + close; +} + +// Battleground rewards +// ********************************************************************* + +bat_c02,51,130,5 script Guillaume Vintenar::VintenarKvM02a 419,{ + if( $@KvM02BG_Victory ) + { + if( $@KvM02BG_Victory == 3 ) + { + setquest 6025; + bg_leave; + warp "bat_room",155,150; + end; + } + else if( $@KvM02BG_Victory == Bat_Team ) + { // Victory + set .@Reward, 3; + mes "[Swandery]"; + mes "Blessed Guillaume!!"; + mes "Let's enjoy our glorious victory!"; + mes "" + strcharinfo(0) + ", its a sign reflecting victory"; + close2; + } + else + { // + set .@Reward, 1; + mes "[Swandery]"; + 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 a lesson, and later you would definitely learn."; + close2; + } + + setquest 6025; + getitem 7773, .@Reward; + bg_leave; + warp "bat_room",155,150; + end; + } + end; +} + +bat_c02,148,53,1 script Croix Vintenar::VintenarKvM02b 415,{ + if( $@KvM02BG_Victory ) + { + if( $@KvM02BG_Victory == 3 ) + { + setquest 6025; + bg_leave; + warp "bat_room",155,150; + end; + } + else if( $@KvM02BG_Victory == Bat_Team ) + { // Victory + set .@Reward, 3; + mes "[Swandery]"; + mes "Blessed Croax!!"; + mes "Let's enjoy our glorious victory!"; + mes "" + strcharinfo(0) + ", its a sign reflecting victory"; + close2; + } + else + { // + set .@Reward, 1; + mes "[Swandery]"; + mes "Oh, " + strcharinfo(0) + ". 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 can win the next."; + close2; + } + + setquest 6025; + getitem 7773, .@Reward; + bg_leave; + warp "bat_room",155,150; + end; + } + end; +} diff --git a/npc/custom/battleground/bg_kvm03.txt b/npc/custom/battleground/bg_kvm03.txt new file mode 100644 index 000000000..6efa99e4c --- /dev/null +++ b/npc/custom/battleground/bg_kvm03.txt @@ -0,0 +1,378 @@ +// ============================================================================== +// BattleGround System - KvM 1~59 +// ============================================================================== + +// Registration NPC's +// ********************************************************************* + +bat_room,197,227,4 script Registration::KvM03R_Guillaume 418,{ // KvM Guillaume + end; + +OnInit: + waitingroom "Battle Station 5 Players",5,"KvM03_BG::OnGuillaumeJoin",1; + end; + +OnEnterBG: + set $@KvM03BG_id1, waitingroom2bg("bat_c03",53,128,"KvM03_BG::OnGuillaumeQuit","KvM03_BG::OnGuillaumeDie"); + end; +} + +bat_room,197,204,0 script Registration::KvM03R_Croix 414,{ // KvM Croix + end; + +OnInit: + waitingroom "Battle Station 5 Players",5,"KvM03_BG::OnCroixJoin",1; + end; + +OnEnterBG: + set $@KvM03BG_id2, waitingroom2bg("bat_c03",146,55,"KvM03_BG::OnCroixQuit","KvM03_BG::OnCroixDie"); + end; +} + +// Light Effects +// ********************************************************************* + +bat_c03,54,123,0 script #bat_c03a 111,{ + end; + +OnKvM03LightA: misceffect 54; end; +OnKvM03LightB: misceffect 55; end; +OnKvM03LightC: misceffect 56; end; +} + +bat_c03,56,125,0 duplicate(#bat_c03a) #bat_c03b 111 +bat_c03,58,127,0 duplicate(#bat_c03a) #bat_c03c 111 +bat_c03,141,56,0 duplicate(#bat_c03a) #bat_c03d 111 +bat_c03,143,58,0 duplicate(#bat_c03a) #bat_c03e 111 +bat_c03,145,60,0 duplicate(#bat_c03a) #bat_c03f 111 + +// Battleground Engine +// ********************************************************************* + +- script KvM03_BG -1,{ + end; + +OnInit: + setwall "bat_c03",54,122,6,7,0,"batc03wall_a"; + setwall "bat_c03",55,122,5,7,0,"batc03wall_b"; + setwall "bat_c03",140,56,6,7,0,"batc03wall_c"; + setwall "bat_c03",140,57,5,7,0,"batc03wall_d"; + disablenpc "TherapistKvM03a"; + disablenpc "TherapistKvM03b"; + disablenpc "VintenarKvM03a"; + disablenpc "VintenarKvM03b"; + end; + +OnGuillaumeJoin: +OnCroixJoin: + donpcevent "KvM03_BG::OnReadyCheck"; + end; + +OnGuillaumeQuit: + set BG_Delay_Tick, gettimetick(2) + 1200; +OnGuillaumeDie: + if( $@KvM03BG == 2 ) + { + set .Guillaume_Count, .Guillaume_Count - 1; + set .Croix_Score, .Croix_Score + 1; + bg_updatescore "bat_c03",.Guillaume_Score,.Croix_Score; + if( .Guillaume_Count < 1 ) donpcevent "KvM03_BG::OnCroixWin"; + } + end; + +OnCroixQuit: + set BG_Delay_Tick, gettimetick(2) + 1200; +OnCroixDie: + if( $@KvM03BG == 2 ) + { + set .Croix_Count, .Croix_Count - 1; + set .Guillaume_Score, .Guillaume_Score + 1; + bg_updatescore "bat_c03",.Guillaume_Score,.Croix_Score; + if( .Croix_Count < 1 ) donpcevent "KvM03_BG::OnGuillaumeWin"; + } + end; + +OnReadyCheck: + if( $@KvM03BG ) + end; + set .@Guillaume, getwaitingroomstate(0,"KvM03R_Guillaume"); + set .@Croix, getwaitingroomstate(0,"KvM03R_Croix"); + + if( .@Guillaume < 5 || .@Croix < 5 ) + { + if( .@Guillaume > 3 && .@Croix > 3 && !agitcheck() && !agitcheck2() && $@KvM_Flood < gettimetick(2) ) + { + announce "Battleground -- Kreiger Von Midgard [1-59] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",0,0xC0C0C0; + set $@KvM_Flood, gettimetick(2) + 15; + } + else + mapannounce "bat_room","Battleground -- Kreiger Von Midgard [1-59] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",1,0xC0C0C0; + end; + } + + set $@KvM03BG, 1; // Starting + donpcevent "KvM03R_Croix::OnEnterBG"; + donpcevent "KvM03R_Guillaume::OnEnterBG"; + donpcevent "KvM03_BG::OnStart"; + end; + +OnStart: + announce "Battleground -- Kreiger Von Midgard [1-59] has started!",0,0xC0C0C0; + enablenpc "TherapistKvM03a"; + enablenpc "TherapistKvM03b"; + disablenpc "VintenarKvM03a"; + disablenpc "VintenarKvM03b"; + set $@KvM03BG_Victory, 0; + sleep 2000; + // Warp Teams + bg_warp $@KvM03BG_id1,"bat_c03",53,128; + bg_warp $@KvM03BG_id2,"bat_c03",146,55; + // ScoreBoard + set .Guillaume_Score, 0; + set .Croix_Score, 0; + initnpctimer; + end; + +OnTimer5000: + areapercentheal "bat_c03",50,123,58,131,100,100; + areapercentheal "bat_c03",141,52,149,60,100,100; + mapannounce "bat_c03","The Battle will start in 25 seconds!!",1,0xC0C0C0; + end; + +OnTimer26000: + mapannounce "bat_c03","The Battle will start in 4 seconds!!",1,0xC0C0C0; + end; + +OnTimer27000: + donpcevent "::OnKvM03LightA"; + end; + +OnTimer28000: + donpcevent "::OnKvM03LightB"; + end; + +OnTimer29000: + donpcevent "::OnKvM03LightC"; + end; + +OnTimer30000: + // Team Members + set .Guillaume_Count, bg_get_data($@KvM03BG_id1, 0); + set .Croix_Count, bg_get_data($@KvM03BG_id2, 0); + if( .Guillaume_Count < 5 || .Croix_Count < 5 ) + { + set $@KvM03BG_Victory, 3; + set $@KvM03BG, 3; + mapannounce "bat_c03","There are not enough players to start the battle",1,0xC0C0C0; + stopnpctimer; + sleep 2000; + donpcevent "KvM03_BG::OnStop"; + end; + } + + set $@KvM03BG, 2; // Playing + areapercentheal "bat_c03",50,123,58,131,100,100; + bg_warp $@KvM03BG_id1,"bat_c03",62,119; + areapercentheal "bat_c03",141,52,149,60,100,100; + bg_warp $@KvM03BG_id2,"bat_c03",137,64; + end; + +OnTimer32000: + mapannounce "bat_c03","The Battle of Kreiger Von Midgard has begun!!",1,0xC0C0C0; + end; + +OnTimer300000: + mapannounce "bat_c03","The Battle will ends in 30 seconds!!",1,0xC0C0C0; + end; + +OnTimer330000: + if( .Croix_Count > .Guillaume_Count ) + donpcevent "KvM03_BG::OnCroixWin"; + else if( .Croix_Count < .Guillaume_Count ) + donpcevent "KvM03_BG::OnGuillaumeWin"; + else + { // Draw Game + set $@KvM03BG, 3; + set $@KvM03BG_Victory, 3; + + stopnpctimer; + sleep 2000; + mapannounce "bat_c03","The time is out! This is a Tie...",1,0xC0C0C0; + donpcevent "KvM03_BG::OnStop"; + } + end; + +OnGuillaumeWin: + set $@KvM03BG, 3; + set $@KvM03BG_Victory, 1; + + stopnpctimer; + sleep 2000; + mapannounce "bat_c03","The Guillaume Army has won the Battle of Kreiger Von Midgard",1,0x0000FF; + donpcevent "KvM03_BG::OnStop"; + end; + +OnCroixWin: + set $@KvM03BG, 3; + set $@KvM03BG_Victory, 2; + + stopnpctimer; + sleep 2000; + mapannounce "bat_c03","The Croix Army has won the Battle of Kreiger Von Midgard",1,0xFF0000; + donpcevent "KvM03_BG::OnStop"; + end; + +OnStop: + disablenpc "TherapistKvM03a"; + disablenpc "TherapistKvM03b"; + enablenpc "VintenarKvM03a"; + enablenpc "VintenarKvM03b"; + // Warp Teams + bg_warp $@KvM03BG_id1,"bat_c03",53,128; + bg_warp $@KvM03BG_id2,"bat_c03",146,55; + donpcevent "KvM03_BG_Out::OnBegin"; + end; + +OnReset: + stopnpctimer; + stopnpctimer "KvM03_BG_Out"; + set .Croix_Count, 0; + set .Guillaume_Count, 0; + set .Croix_Score, 0; + set .Guillaume_Score, 0; + set $@KvM03BG_Victory, 0; + if( $@KvM03BG_id1 ) { bg_destroy $@KvM03BG_id1; set $@KvM03BG_id1, 0; } + if( $@KvM03BG_id2 ) { bg_destroy $@KvM03BG_id2; set $@KvM03BG_id2, 0; } + disablenpc "TherapistKvM03a"; + disablenpc "TherapistKvM03b"; + disablenpc "VintenarKvM03a"; + disablenpc "VintenarKvM03b"; + sleep 1000; + mapwarp "bat_c03","bat_room",155,150; + sleep 2000; + maprespawnguildid "bat_c03",0,3; // Just in case someone else + bg_updatescore "bat_c03",0,0; + sleep 2000; + set $@KvM03BG, 0; + donpcevent "KvM03_BG::OnReadyCheck"; // Maybe a game is ready to start + end; +} + +- script KvM03_BG_Out -1,{ + end; + +OnBegin: + initnpctimer; + end; + +OnTimer3000: + mapannounce "bat_c03","Battle of Kreiger Von Midgard will close in 1 minute!",1,0xC0C0C0; + end; +OnTimer30000: + mapannounce "bat_c03","Battle of Kreiger Von Midgard will close in 30 seconds!",1,0xC0C0C0; + end; +OnTimer50000: + mapannounce "bat_c03","Battle of Kreiger Von Midgard will close in 10 seconds!",1,0xC0C0C0; + end; +OnTimer60000: + donpcevent "KvM03_BG::OnReset"; + end; +} + +// Battleground Therapist +// ********************************************************************* + +bat_c03,51,130,5 script Therapist in battle::TherapistKvM03a 95,{ + mes "[Therapist in battle]"; + mes "Just close your eyes, and take a deep breathe."; + mes "You can be free from pain."; + specialeffect2 312; + close; +} + +bat_c03,148,53,1 script Therapist in battle::TherapistKvM03b 95,{ + mes "[Therapist in battle]"; + mes "Just close your eyes, and take a deep breathe."; + mes "You can be free from pain."; + specialeffect2 312; + close; +} + +// Battleground rewards +// ********************************************************************* + +bat_c03,51,130,5 script Guillaume Vintenar::VintenarKvM03a 419,{ + if( $@KvM03BG_Victory ) + { + if( $@KvM03BG_Victory == 3 ) + { + setquest 6025; + bg_leave; + warp "bat_room",155,150; + end; + } + else if( $@KvM03BG_Victory == Bat_Team ) + { // Victory + set .@Reward, 1; + mes "[Swandery]"; + mes "Blessed Guillaume!!"; + mes "Let's enjoy our glorious victory!"; + mes "" + strcharinfo(0) + ", its a sign reflecting victory"; + close2; + } + else + { // + set .@Reward, 0; + mes "[Swandery]"; + 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 a lesson, and later you would definitely learn."; + close2; + } + + setquest 6025; + getitem 7773, .@Reward; + bg_leave; + warp "bat_room",155,150; + end; + } + end; +} + +bat_c03,148,53,1 script Croix Vintenar::VintenarKvM03b 415,{ + if( $@KvM03BG_Victory ) + { + if( $@KvM03BG_Victory == 3 ) + { + setquest 6025; + bg_leave; + warp "bat_room",155,150; + end; + } + else if( $@KvM03BG_Victory == Bat_Team ) + { // Victory + set .@Reward, 1; + mes "[Swandery]"; + mes "Blessed Croax!!"; + mes "Let's enjoy our glorious victory!"; + mes "" + strcharinfo(0) + ", its a sign reflecting victory"; + close2; + } + else + { // + set .@Reward, 0; + mes "[Swandery]"; + mes "Oh, " + strcharinfo(0) + ". Don't be sad."; + mes "Even though we didn't win, we did our best."; + mes "Please don't forget this battle. We can win the next."; + close2; + } + + setquest 6025; + getitem 7773, .@Reward; + bg_leave; + warp "bat_room",155,150; + end; + } + end; +} diff --git a/npc/custom/battleground/bg_tierra_01.txt b/npc/custom/battleground/bg_tierra_01.txt index e65a2424c..4c65d0462 100644 --- a/npc/custom/battleground/bg_tierra_01.txt +++ b/npc/custom/battleground/bg_tierra_01.txt @@ -238,19 +238,6 @@ OnReset: end; } -// MapFlags -// ********************************************************************* - -bat_a01 mapflag battleground -bat_a01 mapflag nomemo -bat_a01 mapflag nosave SavePoint -bat_a01 mapflag noteleport -bat_a01 mapflag nowarp -bat_a01 mapflag nowarpto -bat_a01 mapflag noreturn -bat_a01 mapflag nobranch -bat_a01 mapflag nopenalty - // Other Flags // ********************************************************************* diff --git a/npc/custom/battleground/bg_tierra_02.txt b/npc/custom/battleground/bg_tierra_02.txt index a669b06dd..7f72cdb3d 100644 --- a/npc/custom/battleground/bg_tierra_02.txt +++ b/npc/custom/battleground/bg_tierra_02.txt @@ -238,19 +238,6 @@ OnReset: end; } -// MapFlags -// ********************************************************************* - -bat_a02 mapflag battleground -bat_a02 mapflag nomemo -bat_a02 mapflag nosave SavePoint -bat_a02 mapflag noteleport -bat_a02 mapflag nowarp -bat_a02 mapflag nowarpto -bat_a02 mapflag noreturn -bat_a02 mapflag nobranch -bat_a02 mapflag nopenalty - // Other Flags // ********************************************************************* diff --git a/npc/events/halloween_2008.txt b/npc/events/halloween_2008.txt index 778cd0d81..33f54b411 100644 --- a/npc/events/halloween_2008.txt +++ b/npc/events/halloween_2008.txt @@ -267,15 +267,6 @@ payon,162,176,4 script Halloween Magician#iRO08 704,{ // --------------- MapFlags --------------- -evt_zombie mapflag nightenabled -evt_zombie mapflag nobranch -evt_zombie mapflag nomemo -evt_zombie mapflag nopenalty -evt_zombie mapflag pvp off -evt_zombie mapflag noreturn -evt_zombie mapflag nosave SavePoint -evt_zombie mapflag noskill -evt_zombie mapflag noteleport evt_zombie,16,142,1 script zombiewarp001 45,2,2,{ OnTouch: diff --git a/npc/events/idul_fitri.txt b/npc/events/idul_fitri.txt index cfc357c22..1ca2bc36e 100644 --- a/npc/events/idul_fitri.txt +++ b/npc/events/idul_fitri.txt @@ -76,4 +76,3 @@ prontera,146,92,3 script Cellerb 58,{ } } -prontera mapflag fireworks diff --git a/npc/jobs/1-1/swordman.txt b/npc/jobs/1-1/swordman.txt index dce01d9b6..7f8793f0c 100644 --- a/npc/jobs/1-1/swordman.txt +++ b/npc/jobs/1-1/swordman.txt @@ -398,10 +398,10 @@ job_sword1,193,168,0 script Test Hall Staff#swd_9 45,1,3,{ // Pitfalls (Set 1) //============================================================ -job_sword1,65,117,0 warp ÇÔÁ¤01-01 1,1,job_sword1,10,245 -job_sword1,98,27,0 warp ÇÔÁ¤02-01 1,1,job_sword1,11,207 -job_sword1,161,27,0 warp ÇÔÁ¤02-02 1,1,job_sword1,11,207 -job_sword1,239,117,0 warp ÇÔÁ¤03-01 1,1,job_sword1,11,169 +job_sword1,65,117,0 warp ����01-01 1,1,job_sword1,10,245 +job_sword1,98,27,0 warp ����02-01 1,1,job_sword1,11,207 +job_sword1,161,27,0 warp ����02-02 1,1,job_sword1,11,207 +job_sword1,239,117,0 warp ����03-01 1,1,job_sword1,11,169 job_sword1,16,251,0 script 1_blank_1_a::SwdTrap1 -1,0,1,{ OnTouch: @@ -646,8 +646,3 @@ job_sword1,200,63,0,0 monster Fabre 1184,2,60000,30000,0 //============================================================ // mapflag //============================================================ -job_sword1 mapflag nomemo -job_sword1 mapflag noteleport -job_sword1 mapflag nosave SavePoint -job_sword1 mapflag nopenalty -job_sword1 mapflag nobranch diff --git a/npc/jobs/1-1/thief.txt b/npc/jobs/1-1/thief.txt index 6ac5b9911..088c14f08 100644 --- a/npc/jobs/1-1/thief.txt +++ b/npc/jobs/1-1/thief.txt @@ -537,8 +537,3 @@ job_thief1,0,0,0,0 monster Spore 1014,30,0,0,0 //============================================================ // mapflag //============================================================ -job_thief1 mapflag nomemo -job_thief1 mapflag noteleport -job_thief1 mapflag nosave SavePoint -job_thief1 mapflag nopenalty -job_thief1 mapflag nobranch diff --git a/npc/jobs/2-2/crusader.txt b/npc/jobs/2-2/crusader.txt index 295a79009..e7c32988e 100644 --- a/npc/jobs/2-2/crusader.txt +++ b/npc/jobs/2-2/crusader.txt @@ -1461,13 +1461,6 @@ OnStop: //============================================================ // mapflag //============================================================ -job_cru mapflag nomemo -job_cru mapflag noteleport -job_cru mapflag nosave SavePoint -job_cru mapflag nopenalty -job_cru mapflag nobranch -job_cru mapflag noexp -job_cru mapflag noloot //============================================================ // Old changelog diff --git a/npc/jobs/2-2/monk.txt b/npc/jobs/2-2/monk.txt index b3c5121b7..be224b989 100644 --- a/npc/jobs/2-2/monk.txt +++ b/npc/jobs/2-2/monk.txt @@ -2609,13 +2609,6 @@ job_monk,0,0,0,0 monster Thief Bug Larva 1051,20,0,0,0 //============================================================ // mapflag //============================================================ -monk_test mapflag nomemo -monk_test mapflag noteleport -monk_test mapflag nosave SavePoint -monk_test mapflag nopenalty -monk_test mapflag nobranch -monk_test mapflag noexp -monk_test mapflag noloot //============================================================ // Old changelog diff --git a/npc/jobs/2-2/rogue.txt b/npc/jobs/2-2/rogue.txt index 43d8bebbc..8598a42b1 100644 --- a/npc/jobs/2-2/rogue.txt +++ b/npc/jobs/2-2/rogue.txt @@ -2015,11 +2015,6 @@ in_rogue,399,286,1 script switch#rogreset 88,{ //============================================================ // mapflag //============================================================ -in_rogue mapflag nomemo -in_rogue mapflag noteleport -in_rogue mapflag nosave SavePoint -in_rogue mapflag nopenalty -in_rogue mapflag nobranch //============================================================ // Old changelog diff --git a/npc/jobs/2-2/sage.txt b/npc/jobs/2-2/sage.txt index 0a4ed575a..6320e60d9 100644 --- a/npc/jobs/2-2/sage.txt +++ b/npc/jobs/2-2/sage.txt @@ -2893,11 +2893,6 @@ OnTimer9000: //============================================================ // Mapflag //============================================================ -job_sage mapflag nomemo -job_sage mapflag noteleport -job_sage mapflag nosave SavePoint -job_sage mapflag nopenalty -job_sage mapflag nobranch //============================================================ // Old changelog diff --git a/npc/other/Global_Functions.txt b/npc/other/Global_Functions.txt index cd18b3a22..18c384771 100644 --- a/npc/other/Global_Functions.txt +++ b/npc/other/Global_Functions.txt @@ -310,3 +310,39 @@ function script F_GetArmorType { } end; } + +// Time calculation Function +// ********************************************************************* +function script Time2Str { + set .@Time_Left, getarg(0) - gettimetick(2); + + set .@Days, .@Time_Left / 86400; + set .@Time_Left, .@Time_Left - (.@Days * 86400); + set .@Hours, .@Time_Left / 3600; + set .@Time_Left, .@Time_Left - (.@Hours * 3600); + set .@Minutes, .@Time_Left / 60; + set .@Time_Left, .@Time_Left - (.@Minutes * 60); + + set .@Time$, ""; + if( .@Days > 1 ) + set .@Time$, .@Time$ + .@Days + " days, "; + else if( .@Days > 0 ) + set .@Time$, .@Time$ + .@Days + " day, "; + + if( .@Hours > 1 ) + set .@Time$, .@Time$ + .@Hours + " hours, "; + else if( .@Hours > 0 ) + set .@Time$, .@Time$ + .@Hours + " hour, "; + + if( .@Minutes > 1 ) + set .@Time$, .@Time$ + .@Minutes + " minutes, "; + else if( .@Minutes > 0 ) + set .@Time$, .@Time$ + .@Minutes + " minute, "; + + if( .@Time_Left > 1 || .@Time_Left == 0 ) + set .@Time$, .@Time$ + .@Time_Left + " seconds."; + else if( .@Time_Left == 1 ) + set .@Time$, .@Time$ + .@Time_Left + " second."; + + return .@Time$; +} diff --git a/npc/other/mail.txt b/npc/other/mail.txt index 0ca900727..626efcb0b 100644 --- a/npc/other/mail.txt +++ b/npc/other/mail.txt @@ -21,27 +21,6 @@ // Allow Mail Inbox reading from //============================================================ -prontera mapflag town -izlude mapflag town -moc_ruins mapflag town -geffen mapflag town -payon mapflag town -pay_arche mapflag town -alberta mapflag town -aldebaran mapflag town -yuno mapflag town -lighthalzen mapflag town -einbroch mapflag town -einbech mapflag town -comodo mapflag town -umbala mapflag town -amatsu mapflag town -gonryun mapflag town -ayothaya mapflag town -louyang mapflag town -hugel mapflag town -rachel mapflag town -veins mapflag town // Prontera //============================================================ diff --git a/npc/scripts_athena.conf b/npc/scripts_athena.conf index a50ffc15f..afd0fe471 100644 --- a/npc/scripts_athena.conf +++ b/npc/scripts_athena.conf @@ -327,7 +327,9 @@ npc: npc/battleground/tierra/tierra_enter.txt npc: npc/battleground/tierra/tierra01.txt npc: npc/battleground/tierra/tierra02.txt // Flavius -//npc: npc/battleground/flavius/flavius_enter.txt +npc: npc/battleground/flavius/flavius_enter.txt +npc: npc/battleground/flavius/flavius01.txt +npc: npc/battleground/flavius/flavius02.txt // Kreiger Von Midgard npc: npc/battleground/kvm/kvm_enter.txt npc: npc/battleground/kvm/kvm_item_pay.txt diff --git a/npc/scripts_custom.conf b/npc/scripts_custom.conf index 9dcaeb012..91f367cf9 100644 --- a/npc/scripts_custom.conf +++ b/npc/scripts_custom.conf @@ -71,10 +71,14 @@ // BattleGround (please read conf/battle/battleground.conf before // uncomment battleground scripts). // -------------------------------------------------------------- +//npc: npc/custom/battleground/bg_common.txt //npc: npc/custom/battleground/bg_tierra_01.txt //npc: npc/custom/battleground/bg_tierra_02.txt //npc: npc/battleground/bg_flavius_01.txt //npc: npc/battleground/bg_flavius_02.txt +//npc: npc/custom/battleground/bg_kvm01.txt +//npc: npc/custom/battleground/bg_kvm02.txt +//npc: npc/custom/battleground/bg_kvm03.txt // -------------------------------------------------------------- // Lance's Scripts (coded before joining eA Dev team) diff --git a/npc/scripts_mapflags.conf b/npc/scripts_mapflags.conf index 0f31ec064..011d9e3a3 100644 --- a/npc/scripts_mapflags.conf +++ b/npc/scripts_mapflags.conf @@ -24,4 +24,8 @@ npc: conf/mapflag/pvp_noparty.txt npc: conf/mapflag/pvp_noguild.txt npc: conf/mapflag/night.txt npc: conf/mapflag/restricted.txt +npc: conf/mapflag/battleground.txt +npc: conf/mapflag/fireworks.txt +npc: conf/mapflag/novending.txt +npc: conf/mapflag/town.txt // -------------------------------------------------------------- diff --git a/src/map/clif.c b/src/map/clif.c index 45b8945c6..fd2f61522 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -13116,28 +13116,30 @@ void clif_quest_delete(struct map_session_data * sd, int quest_id) WFIFOSET(fd, packet_len(0x02B4)); } -//* 02b5 <packet_len>.w <mob_num>.w { <quest_id>.d <mob_id>.d <count>.w }.mob_num +//* 02b5 <packet_len>.w <mob_num>.w { <quest_id>.d <mob_id>.d <count_total>.w <count_partial>.w }.mob_num void clif_quest_update_objective(struct map_session_data * sd, struct quest * qd, int index) { - int fd = sd->fd; + int fd = sd->fd; int i; - int len = quest_db[index].num_objectives*10+6; + int len = quest_db[index].num_objectives*12+6; WFIFOHEAD(fd, len); - WFIFOW(fd, 0) = 0x02B5; - WFIFOW(fd, 2) = len; - WFIFOW(fd, 4) = quest_db[index].num_objectives; + WFIFOW(fd, 0) = 0x02B5; + WFIFOW(fd, 2) = len; + WFIFOW(fd, 4) = quest_db[index].num_objectives; for( i = 0; i < quest_db[index].num_objectives; i++ ) - { - WFIFOL(fd, i*10+6) = qd->quest_id; - WFIFOL(fd, i*10+10) = quest_db[index].mob[i]; - WFIFOW(fd, i*10+14) = qd->count[i]; - } + { + WFIFOL(fd, i*12+6) = qd->quest_id; + WFIFOL(fd, i*12+10) = quest_db[index].mob[i]; + WFIFOW(fd, i*12+14) = quest_db[index].count[i]; + WFIFOW(fd, i*12+16) = qd->count[i]; + } WFIFOSET(fd, len); } + //* 02B6 <quest_id>.L <state>.B void clif_parse_questStateAck(int fd, struct map_session_data * sd) { |