diff options
author | daegaladh <daegaladh@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-08-01 04:29:56 +0000 |
---|---|---|
committer | daegaladh <daegaladh@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-08-01 04:29:56 +0000 |
commit | 8832adba3ec9df0f7f890154f69f0993b8d1d8e5 (patch) | |
tree | 0e73afe6a780abf29fe035301f1354f24762da7a /npc/battleground | |
parent | fa533907d49c7e288be33efb55fcb094f8e48591 (diff) | |
download | hercules-8832adba3ec9df0f7f890154f69f0993b8d1d8e5.tar.gz hercules-8832adba3ec9df0f7f890154f69f0993b8d1d8e5.tar.bz2 hercules-8832adba3ec9df0f7f890154f69f0993b8d1d8e5.tar.xz hercules-8832adba3ec9df0f7f890154f69f0993b8d1d8e5.zip |
Full npc folder reorganization. (I hope I didn't break anything D:)
-Now common scripts goes to the main npc folder, and pre-re-only/re-only ones goes to their respective folders.
-NPCs with practically the same script but little differences have been left in the main folder and uses the command checkre() for the differences.
-For those NPCs with different coordinates but same script, the script has been left in the main folder but the NPCs splitted as duplicates.
-All pre-renewal files has been reverted back to their pre-renewal behavior.
TODO:
-Correct pre-re quest rewards.
-Check for pre-re/re differences in mapflags.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16545 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'npc/battleground')
-rw-r--r-- | npc/battleground/bg_common.txt | 564 | ||||
-rw-r--r-- | npc/battleground/flavius/flavius01.txt | 754 | ||||
-rw-r--r-- | npc/battleground/flavius/flavius02.txt | 755 | ||||
-rw-r--r-- | npc/battleground/flavius/flavius_enter.txt | 374 | ||||
-rw-r--r-- | npc/battleground/kvm/kvm01.txt | 430 | ||||
-rw-r--r-- | npc/battleground/kvm/kvm02.txt | 430 | ||||
-rw-r--r-- | npc/battleground/kvm/kvm03.txt | 431 | ||||
-rw-r--r-- | npc/battleground/kvm/kvm_enter.txt | 218 | ||||
-rw-r--r-- | npc/battleground/kvm/kvm_item_pay.txt | 313 | ||||
-rw-r--r-- | npc/battleground/tierra/tierra01.txt | 948 | ||||
-rw-r--r-- | npc/battleground/tierra/tierra02.txt | 947 | ||||
-rw-r--r-- | npc/battleground/tierra/tierra_enter.txt | 383 |
12 files changed, 6547 insertions, 0 deletions
diff --git a/npc/battleground/bg_common.txt b/npc/battleground/bg_common.txt new file mode 100644 index 000000000..6997187fb --- /dev/null +++ b/npc/battleground/bg_common.txt @@ -0,0 +1,564 @@ +//===== rAthena Script ======================================= +// BattleGround System - Common NPCs +//===== By: ================================================== +//= ????, L0ne_W0lf +//===== Current Version: ===================================== +//= 1.3 +//===== Compatible With: ===================================== +//= rAthena 1.0 +//===== Description: ========================================= +//= [AEGIS Conversion] +//= Battleground NPCs: +//= - Generals and Aides +//= - Battleground Warper +//= - Kafra and Repairman. +//= - GM Management NPC (disabled by default) +//= - Badge Exchanger (Tierra and Flavius) +//===== Additional Comments: ================================= +//= 1.0 First Version. +//= 1.1 Updated several NPCs to Official. +//= 1.2 Updated Repairman NPC +//= 1.3 Optimized "Erundek" NPC. [Euphy] +//============================================================ + +// Generals +//============================================================ +bat_room,161,158,3 script Gen. Guillaume's Aide#01 419,{ end; } +bat_room,161,160,3 script Gen. Guillaume's Aide#03 419,{ end; } + +bat_room,160,141,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; + switch(select("What's the reason for the Battle?:Tell me about General Guillaume")) { + case 1: + cutin "bat_crua2",2; + mes "[Prince Croix]"; + mes "Maroll's great king, Marcel Marollo VII, is very sick lately."; + mes "His Majesty has declared that he will be leaving the future of Maroll to me or the 3rd prince, General Guillaume."; + 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."; + mes "I want to win this battle so that I can bring prosperity to the people of Maroll. They've suffered enough from war..."; + next; + switch(select("Yes, I want to join you.:End Conversation")) { + case 1: + cutin "bat_crua1",2; + mes "[Prince Croix]"; + mes "Thank you so much. I feel like I can win with the help of adventurers like you."; + mes "Now, please go downstairs and join your comrades in sharpening their skills to fight the enemy!"; + break; + case 2: + mes "[Prince Croix]"; + mes "For Maroll!"; + break; + } + break; + case 2: + cutin "bat_crua2",2; + mes "[Prince Croix]"; + mes "The 3rd Prince Guillaume is the great general of Maroll."; + mes "It's a waste of time to explain to you how great a leader or warlord he is, since he commands the great military power of Maroll."; + next; + mes "[Prince Croix]"; + mes "Unfortunately, there's something he and his followers are unaware of:"; + mes "Do the people of Maroll really want them to spend so much money on military power?"; + mes "We have suffered enough from wars."; + mes "I believe weapons aren't the best way to bring prosperity to a nation."; + next; + 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; + switch(select("Yes, I want to join you.:End Conversation")) { + case 1: + cutin "bat_crua1",2; + mes "[Prince Croix]"; + mes "Thank you so much. I feel like I can win with the help of adventurers like you."; + mes "Now, please go downstairs and join your comrades in sharpening their skills to fight the enemy!"; + break; + case 2: + mes "[Prince Croix]"; + mes "For Maroll!"; + break; + } + break; + } + close2; + cutin "bat_crua1",255; + cutin "bat_crua2",255; + end; +} + +bat_room,161,140,3 script Prince Croix's Aide#01 415,{ end; } +bat_room,161,142,3 script Prince Croix's Aide#02 415,{ end; } + +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; + switch(select("What's the reason for the Battle?:Tell me about Prince Croix")) { + case 1: + cutin "bat_kiyom1",2; + mes "[General Guillaume]"; + mes "Our great king, Marcel Marollo VII, is very sick lately."; + mes "His Majesty has declared that he has 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! 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."; + mes "I pledge on my honor to prove that I'm the one who can protect this Maroll from outside threats."; + next; + switch(select("Yes, I want to join you.:End Conversation")) { + case 1: + cutin "bat_kiyom2",2; + mes "[General Guillaume]"; + mes "Welcome to my army, comrade."; + mes "Your eyes tell me that you're a soldier that I can trust."; + next; + mes "[General Guillaume]"; + mes "Now, go upstairs and apply for battle with your comrades."; + mes "I'm sure they'll welcome you whole-heartedly!"; + break; + case 2: + mes "[General Guillaume]"; + mes "I'll be the one who will capture the flag!"; + break; + } + break; + case 2: + cutin "bat_kiyom1",2; + mes "[General Guillaume]"; + mes "The 5th Prince Croix is currently titled as the Prime Minister of Maroll."; + mes "He thinks all national matters of a nation can be discussed and determined on a desk,"; + mes "and believes in peaceful co-existence with other countries."; + next; + mes "[General Guillaume]"; + mes "He's too ignorant to admit that so-called peace is built on countless lives that are sacrificed in wars while normal citizens and upper classes can live, oblivious to the horrors that allow them to live that way."; + next; + mes "[General Guillaume]"; + mes "He's too naive to understand the reality...."; + mes "I can't leave Maroll to someone like him who lives in a dream!"; + next; + mes "[General Guillaume]"; + mes "His unrealistic beliefs will drown this country in poverty and make the people weak. If he becomes the king, Maroll will never rest from the onslaughts of other countries."; + mes "I want to teach him what makes this small country so powerful and prosperous. It's military power!"; + next; + switch(select("I want to join your army!:End Conversation")) { + case 1: + cutin "bat_kiyom2",2; + mes "[General Guillaume]"; + mes "Welcome to my army, comrade."; + mes "Your eyes tell me that you're a soldier that I can trust."; + next; + mes "[General Guillaume]"; + mes "Now, go upstairs and apply for battle from your comrades."; + mes "I'm sure they'll welcome you whole-heartedly!"; + break; + case 2: + mes "[General Guillaume]"; + mes "I'll be the one who will capture the flag!"; + break; + } + break; + } + close2; + cutin "bat_kiyom1",255; + cutin "bat_kiyom2",255; + end; +} + +// Flags +//============================================================ +//bat_room,140,160,3 script Guillaume Base#roomflag1 973,{ end; } +//bat_room,167,160,3 script Guillaume Base#roomflag2 973,{ end; } +//bat_room,140,139,3 script Croix Base#roomflag1 974,{ end; } +//bat_room,167,139,3 script Croix Base#roomflag2 974,{ end; } + +// BattleGround Warper +//============================================================ +bat_room,148,150,5 script Teleporter#Battlefield 124,{ + mes "[Teleporter]"; + mes "Do you wish to leave the battlefield? Use my services to return to town."; + next; + switch(select("Leave:Don't Leave")) { + case 1: + mes "[Teleporter]"; + switch(bat_return) { + default: + case 1: + setarray .@mapname$[0],"Prontera.","prontera"; + setarray .@xy[0],116,72; + break; + case 2: + setarray .@mapname$[0],"Morroc","moc_ruins"; + setarray .@xy[0],152,48; + break; + case 3: + setarray .@mapname$[0],"Al De Baran.","aldebaran"; + setarray .@xy[0],168,112; + break; + case 4: + setarray .@mapname$[0],"Geffen.","geffen"; + setarray .@xy[0],120,39; + break; + case 5: + setarray .@mapname$[0],"Payon.","payon"; + setarray .@xy[0],161,58; + break; + case 6: + setarray .@mapname$[0],"Lighthalzen.","lighthalzen"; + setarray .@xy[0],159,93; + break; + case 7: + setarray .@mapname$[0],"Rachel.","rachel"; + setarray .@xy[0],115,124; + break; + } + mes "You will be sent back to "+.@mapname$[0]+"."; + close2; + warp .@mapname$[1],.@xy[0],.@xy[1]; + break; + case 2: + mes "[Teleporter]"; + mes "I'll be here whenever you're in need of my services."; + close; + } + end; +} + +- 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."; + mes "How would you like to lend your power to one of the princes in the Maroll Kingdom?"; + next; + switch(select("Join:Don't Join")) { + case 1: + mes "[Maroll Battle Recruiter]"; + mes "May the war god bless you."; + close2; + getmapxy(.@mapname$,.@x,.@y,1); + if (.@mapname$ == "prontera") + set bat_return,1; + else if (.@mapname$ == "moc_ruins") + set bat_return,2; + else if (.@mapname$ == "aldebaran") + set bat_return,3; + else if (.@mapname$ == "geffen") + set bat_return,4; + else if (.@mapname$ == "payon") + set bat_return,5; + else if (.@mapname$ == "lighthalzen") + set bat_return,6; + else if (.@mapname$ == "rachel") + set bat_return,7; + else + set bat_return,1; + warp "bat_room",154,150; + break; + case 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; + } + end; +} + +prontera,123,83,3 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit1 728 +moc_ruins,75,162,3 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit2 728 +aldebaran,146,109,3 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit3 728 +geffen,109,66,3 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit4 728 +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 + +// Additional warps +// Empty +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,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,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,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 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 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 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 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; +} + +// Repairman +//============================================================ +bat_room,138,144,4 script Repairman#bg 86,{ + callfunc "repairmain","Repairman"; + end; +} + +/* +// 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 "Do you have the battlefield badges?"; + mes "I can exchange Bravery Badges and Valor Badges for reward items."; + next; + 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 "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; + setarray .@Weapons[0],13036,7828,13037,7829,13411,7828,13410,7829,1183,7828,1184,7829,1425,7828,1482,7829; + break; + case 2: + mes "[Erundek]"; + mes "The following items are available in the ^3131FFStaff / Mace / Two-Handed Axe / Huuma Shuriken^000000 category."; + next; + setarray .@Weapons[0],1632,7828,1633,7829,1634,7828,1635,7829,1543,7828,1542,7829,1380,7828,1379,7829,13305,7828,13306,7829; + break; + case 3: + mes "[Erundek]"; + mes "The following weapons are available in the ^3131FFBow / Katar / Musical Instrument / Whip^000000 category."; + next; + setarray .@Weapons[0],1739,7828,1738,7829,1279,7828,1280,7829,1924,7828,1923,7829,1978,7828,1977,7829; + break; + case 4: + mes "[Erundek]"; + mes "The following weapons are available in the ^3131FFBook / Knuckle^000000 category."; + next; + setarray .@Weapons[0],1574,7828,1575,7829,1824,7828,1823,7829; + break; + case 5: + mes "[Erundek]"; + mes "The following weapons are available in the ^3131FFRevolver / Rifle / Gatling Gun / Shotgun / Grenade Launcher^000000 category."; + next; + setarray .@Weapons[0],13108,7828,13171,7829,13172,7828,13173,7829,13174,7829; + break; + } + set .@menu$,""; + for(set .@i,0; .@i<getarraysize(.@Weapons); set .@i,.@i+2) + set .@menu$, .@menu$+getitemname(.@Weapons[.@i])+((.@Weapons[.@i+1]==7828)?"(BB)":"(VB)")+":"; + set .@i, (select(.@menu$)-1)*2; + set .@type$, ((.@Weapons[.@i+1]==7828)?"(BB)":"(VB)"); + mes "[Erundek]"; + mes "You chose ^3131FF"+getitemname(.@Weapons[.@i])+.@type$+"^000000."; + mes "You can exchange for this item with ^FF0000100 "+getitemname(.@Weapons[.@i+1])+"^000000."; + mes "Would you like to exchange?"; + next; + switch(select("Do not exchange:Exchange")) { + case 1: + break; + case 2: + mes "[Erundek]"; + mes "Would you like to spend ^FF0000100 "+getitemname(.@Weapons[.@i+1])+"^000000 and receive a ^3131FF"+getitemname(.@Weapons[.@i])+.@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: + mes "[Erundek]"; + if (countitem(.@Weapons[.@i+1]) >= 100) { + mes "Thank you for exchanging."; + delitem .@Weapons[.@i+1],100; + getitem .@Weapons[.@i],1; + } + else mes "I'm sorry, but you don't have enough badges to exchange."; + close; + case 2: + break; + } + break; + } + mes "[Erundek]"; + mes "Do you need more time to check the items?"; + close; + case 2: + mes "[Erundek]"; + mes "You chose ^3131FFArmor^000000."; + mes "The following armors are available for exchange with the battlefield badges."; + next; + switch(select("Garments / Shoes:Armor")) { + case 1: + setarray .@Items[0],2538,50,2539,50,2540,50,2435,50,2436,50,2437,50; + break; + case 2: + setarray .@Items[0],2376,80,2377,80,2378,80,2379,80,2380,80,2381,80,2382,80; + 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; + setarray .@Items[0],2733,500,2720,500,2721,500,2722,500,2723,500,2724,500,2725,500; + set .@menu1$,"Gunslinger:Swordman/Taekwon Master:Thief:Acolyte:Magician:Archer:Merchant"; + break; + case 4: + mes "[Erundek]"; + mes "You chose ^3131FFConsumable^000000."; + mes "The following consumable items are available for exchange with the battlefield badges:"; + next; + setarray .@Items[0],12269,10,12270,10,12271,5,12272,10,12273,10; + break; + } + break; + case 2: + mes "[Erundek]"; + mes "We have many items, so please take a look and purchase deliberately."; + close2; + ReadBook 11010,1; + end; + } + set .@menu$,""; + if (.@menu1$ != "") set .@menu$, .@menu1$; + else for(set .@i,0; .@i<getarraysize(.@Items); set .@i,.@i+2) + set .@menu$, .@menu$+getitemname(.@Items[.@i])+":"; + set .@i, (select(.@menu$)-1)*2; + mes "[Erundek]"; + mes "You chose ^3131FF"+getitemname(.@Items[.@i])+"^000000."; + switch(.@Items[.@i]) { + 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"+.@Items[.@i+1]+" "+getitemname(7828)+" or "+.@Items[.@i+1]+" "+getitemname(7829)+"^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 "Which Badge do you want to exchange?"; + mes "You need ^3131FF"+.@Items[.@i+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; + } + set .@j, select("Bravery Badge:Valor Badge:Cancel"); + mes "[Erundek]"; + if (.@j == 3) { + mes "You cancelled the exchange."; + break; + } + set .@cost, ((.@j==1)?7828:7829); + if (countitem(.@cost) >= .@Items[.@i+1]) { + mes "Thank you for exchanging."; + delitem .@cost, .@Items[.@i+1]; + getitem .@Items[.@i],1; + } + else mes "You do not have enough "+getitemname(.@cost)+"s."; + break; + } + close; +} diff --git a/npc/battleground/flavius/flavius01.txt b/npc/battleground/flavius/flavius01.txt new file mode 100644 index 000000000..fedea3680 --- /dev/null +++ b/npc/battleground/flavius/flavius01.txt @@ -0,0 +1,754 @@ +//===== rAthena Script ======================================= +// BattleGround System - Flavius +//===== By: ================================================== +//= L0ne_W0lf +//===== Current Version: ===================================== +//= 1.3 +//===== Compatible With: ===================================== +//= rAthena 1.0 +//===== Description: ========================================= +//= [AEGIS Conversion] +//= Flavius Battleground. +//= - Winning Team: 9 badges +//= - Losing Team: 3 badge +//===== Additional Comments: ================================= +//= 1.0 First Version. +//= 1.1 Fixed pink crystal spawning as blue. [L0ne_W0lf] +//= 1.2 Updated 'waitingroom' to support required zeny/lvl. [Kisuka] +//= 1.3 Removed MaxLvl check in waitingrooms. Replaced setwall with setcell. +//============================================================ + +// Waiting Room NPCs +//============================================================ +bat_room,86,227,4 script Lieutenant Ator 418,{ + end; +OnInit: + waitingroom "Battle Station",11,"start#bat_b01::OnReadyCheck",1,0,80; + 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",11,"start#bat_b01::OnReadyCheck",1,0,80; + end; +OnEnterBG: + set $@FlaviusBG1_id2, waitingroom2bg("bat_b01",390,10,"start#bat_b01::OnCroixQuit",""); + end; +} + +bat_room,85,220,0 warp back_bgroomb01a 1,1,bat_room,154,150 +bat_room,85,211,0 warp back_bgroomb01b 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 < 10 || .@Croix < 10 ) + 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,"Pink Crystal",1915,"OBJ#bat_b01_a::OnMyMobDead"; + end; + +Onkill: + killmonster "bat_b01","OBJ#bat_b01_a::OnMyMobDead"; + end; + +OnMyMobDead: + if (mobcount("bat_b01","OBJ#bat_b01_a::OnMyMobDead") < 1) { + mapannounce "bat_b01", "Guillaume's Crystal has been destroyed.",bc_map,"0xFFCE00"; + if ($@Croix_ScoreBG1 > 0) { + set $@FlaviusBG1_Victory,2; + set $@Croix_ScoreBG1,$@Croix_ScoreBG1+1; + enablenpc "Guillaume Vintenar#b01_a"; + enablenpc "Croix Vintenar#b01_b"; + donpcevent "time#bat_b01::Onstop"; + } + 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: + setcell "bat_b01",62,149,60,151,cell_basilica,1; + setcell "bat_b01",62,149,60,151,cell_walkable,0; + end; + +Ongreen: + setcell "bat_b01",62,149,60,151,cell_basilica,0; + setcell "bat_b01",62,149,60,151,cell_walkable,1; + end; +} + +bat_b01,1,5,3 script cell#bat_b01_b 844,{ +Onred: + setcell "bat_b01",327,151,329,149,cell_basilica,1; + setcell "bat_b01",327,151,329,149,cell_walkable,0; + end; + +Ongreen: + setcell "bat_b01",327,151,329,149,cell_basilica,0; + setcell "bat_b01",327,151,329,149,cell_walkable,1; + end; +} + +bat_b01,1,6,1 script time#bat_b01 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; + } + } +} +*/ diff --git a/npc/battleground/flavius/flavius02.txt b/npc/battleground/flavius/flavius02.txt new file mode 100644 index 000000000..bc9645029 --- /dev/null +++ b/npc/battleground/flavius/flavius02.txt @@ -0,0 +1,755 @@ +//===== rAthena Script ======================================= +// BattleGround System - Flavius Second +//===== By: ================================================== +//= L0ne_W0lf +//===== Current Version: ===================================== +//= 1.4 +//===== Compatible With: ===================================== +//= rAthena 1.0 +//===== Description: ========================================= +//= [AEGIS Conversion] +//= Flavius Battleground. +//= - Winning Team: 9 badges +//= - Losing Team: 3 badge +//===== Additional Comments: ================================= +//= 1.0 First Version. +//= 1.1 Fixed NPCs being called for waiting rooms. (bugreport:4395) +//= 1.2 Fixed pink crystal spawning as blue. [L0ne_W0lf] +//= 1.3 Updated 'waitingroom' to support required zeny/lvl. [Kisuka] +//= 1.4 Removed MaxLvl check in waitingrooms. Replaced setwall with setcell. +//============================================================ + +// Waiting Room NPCs +//============================================================ +bat_room,142,227,4 script Lieutenant Huvas 418,{ + end; +OnInit: + waitingroom "Battle Station",11,"start#bat_b02::OnReadyCheck",1,0,80; + 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",11,"start#bat_b02::OnReadyCheck",1,0,80; + 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 Huvas"); + set .@Croix, getwaitingroomstate(0,"Lieutenant Yukon"); + if( !.@Guillaume && !.@Croix ) { + donpcevent "#bat_b02_timer::OnStop"; + end; + } + if( .@Guillaume < 10 || .@Croix < 10 ) + 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 Huvas::OnEnterBG"; + donpcevent "Lieutenant Yukon::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,"Pink 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: + setcell "bat_b02",62,149,60,151,cell_basilica,1; + setcell "bat_b02",62,149,60,151,cell_walkable,0; + end; + +Ongreen: + setcell "bat_b02",62,149,60,151,cell_basilica,0; + setcell "bat_b02",62,149,60,151,cell_walkable,1; + end; +} + +bat_b02,1,5,3 script cell#bat_b02_b 844,{ +Onred: + setcell "bat_b02",327,151,329,149,cell_basilica,1; + setcell "bat_b02",327,151,329,149,cell_walkable,0; + end; + +Ongreen: + setcell "bat_b02",327,151,329,149,cell_basilica,0; + setcell "bat_b02",327,151,329,149,cell_walkable,1; + 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; + } + } +} +*/ diff --git a/npc/battleground/flavius/flavius_enter.txt b/npc/battleground/flavius/flavius_enter.txt new file mode 100644 index 000000000..468a7fef8 --- /dev/null +++ b/npc/battleground/flavius/flavius_enter.txt @@ -0,0 +1,374 @@ +//===== rAthena Script ======================================= +// BattleGround System - Flavius Entrance NPCs +//===== By: ================================================== +//= L0ne_W0lf +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena 1.0 +//===== Description: ========================================= +//= [AEGIS Conversion] +//= Flavius Battleground Entrance NPCs +//===== Additional Comments: ================================= +//= 1.0 First Version. +//============================================================ + +// Flavius Officer - Guillaume +//============================================================ +bat_room,133,178,5 script Flavius Officer#01a 418,{ + 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 "[Guillaume Army Officer]"; + mes "Let's show the power of the Guillaume Army to those stinky Croixs!"; + next; + switch(select("I want to join your army!:End Conversation")) { + case 1: + if ((Class == job_Novice) || (BaseClass == Job_Supernovice)) { + mes "[Guillaume Army Officer]"; + mes "I'm very pleased that you want to join us and fight the Croix Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield."; + } + else { + if (BaseLevel < 80) { + mes "[Guillaume Army Officer]"; + mes "I'm very pleased that you want to join us and fight the Croix Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield."; + } + else { + set .@chk_urtime,checkquest(2070,PLAYTIME); + if ((.@chk_urtime == 0)|| (.@chk_urtime == 1)) { + mes "[Guillaume Army Officer]"; + mes "You seem to have just returned from the battlefield."; + mes "It's too early for you to go back. Go rest, and leave the enemies to us!"; + } + else { + if (.@chk_urtime == 2) + erasequest 2070; + set .@mapcount2,getmapusers("bat_b01"); + if (.@mapcount2 > 0) { + mes "[Guillaume Army Officer]"; + mes "I've received a report informing me that an elite corps has been dispatched to the battlefield fighting the Croixs already."; + mes "Why don't you go wait for a while? I suggest you sharpen your weapons and prepare your supplies until then."; + } + else { + if ($@FlaviusBG1 > 0) { + mes "[Guillaume Army Officer]"; + mes "An elite corps is already standing by to be dispatched to the battlefield."; + mes "Why don't you go wait for a while? I suggest you sharpen your weapons and prepare your supplies until then."; + } + else { + mes "[Guillaume Army Officer]"; + mes "You definitely seem to be ready for battle!"; + mes "Go show the Croixs what fear truly means!"; + mes "Today, our cry of victory shall echo all over the battlefield!"; + close2; + warp "bat_room",85,223; + end; + } + } + } + } + } + break; + case 2: + mes "[Guillaume Army Officer]"; + mes "Today, we shall be victorious!"; + break; + } + close; +} + +bat_room,133,121,1 script Flavius Officer#01b 414,{ + 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 "[Croix Army Officer]"; + mes "Let's show the Guillaumes the power of the Croix Army!"; + next; + switch(select("I want to join your army!:End Conversation")) { + case 1: + if ((Class == job_Novice) || (BaseClass == Job_Supernovice)) { + mes "[Croix Army Officer]"; + mes "I'm very pleased that you want to join us and fight the Guillaume Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield."; + } + else { + if (BaseLevel < 80) { + mes "[Croix Army Officer]"; + mes "I'm very pleased that you want to join us and fight the Guillaume Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield."; + } + else { + set .@chk_urtime,checkquest(2070,PLAYTIME); + if ((.@chk_urtime == 0)|| (.@chk_urtime == 1)) { + mes "[Croix Army Officer]"; + mes "You seem to have just returned from the battlefield."; + mes "It's too early for you to go back. Go rest, and leave the enemies to us!"; + } + else { + if (.@chk_urtime == 2) + erasequest 2070; + set .@mapcount2,getmapusers("bat_b01"); + if (.@mapcount2 > 0) { + mes "[Croix Army Officer]"; + mes "I've received a report informing me that an elite corps has been dispatched to the battlefield fighting the Guillaume already."; + mes "Why don't you go wait for a while? I suggest you sharpen your weapons and prepare your supplies until then."; + } + else { + if ($@FlaviusBG1 > 0) { + mes "[Croix Army Officer]"; + mes "An elite corps is already standing by to be dispatched to the battlefield."; + mes "Why don't you go wait for a while? I suggest you sharpen your weapons and prepare your supplies until then."; + } + else { + mes "[Croix Army Officer]"; + mes "You definitely seem to be ready for battle!"; + mes "Go show the Guillaumes what fear truly means!"; + mes "Today, our cry of victory shall echo all over the battlefield!"; + close2; + warp "bat_room",85,207; + end; + } + } + } + } + } + break; + case 2: + mes "[Croix Army Officer]"; + mes "Today, we shall be victorious!"; + break; + } + close; +} + +bat_room,135,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 "Please remember: when you join a battle, you will be receiving a token which indicates the set duration for which you cannot participate in the same type of battle."; + mes "You may check the duration by pressing the Alt+U keys."; + next; + mes "[Guillaume Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +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 "Please remember: when you join a battle, you will be receiving a token which indicates the set duration for which you cannot participate in the same type of battle."; + mes "You may check the duration by pressing the Alt+U keys."; + next; + mes "[Guillaume Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +bat_room,135,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 "Please remember: when you join a battle, you will be receiving a token which indicates the set duration for which you cannot participate in the same type of battle."; + mes "You may check the duration by pressing the Alt+U keys."; + next; + mes "[Croix Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +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 "Please remember: when you join a battle, you will be receiving a token which indicates the set duration for which you cannot participate in the same type of battle."; + mes "You may check the duration by pressing the Alt+U keys."; + next; + mes "[Croix Knight]"; + mes "Are you ready for battle? Then apply with the recruiter next to me!"; + close; +} + +// Flavius Officer - Croix +//============================================================ +bat_room,148,178,5 script Flavius Officer#02a 418,{ + 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 "[Guillaume Army Officer]"; + mes "Let's show the power of the Guillaume Army to those stinky Croixs!"; + next; + switch(select("I want to join your army!:End Conversation")) { + case 1: + if ((Class == job_Novice) || (BaseClass == Job_Supernovice)) { + mes "[Guillaume Army Officer]"; + mes "I'm very pleased that you want to join us and fight the Croix Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield."; + } + else { + if (BaseLevel < 80) { + mes "[Guillaume Army Officer]"; + mes "I'm very pleased that you want to join us and fight the Croix Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield."; + } + else { + set .@chk_urtime,checkquest(2070,PLAYTIME); + if ((.@chk_urtime == 0)|| (.@chk_urtime == 1)) { + mes "[Guillaume Army Officer]"; + mes "You seem to have just returned from the battlefield."; + mes "It's too early for you to go back. Go rest, and leave the enemies to us!"; + } + else { + if (.@chk_urtime == 2) + erasequest 2070; + set .@mapcount2,getmapusers("bat_b02"); + if (.@mapcount2 > 0) { + mes "[Guillaume Army Officer]"; + mes "I've received a report informing me that an elite corps has been dispatched to the battlefield fighting the Croixs already."; + mes "Why don't you go wait for a while? I suggest you sharpen your weapons and prepare your supplies until then."; + } + else { + if ($@FlaviusBG2 > 0) { + mes "[Guillaume Army Officer]"; + mes "An elite corps is already standing by to be dispatched to the battlefield."; + mes "Why don't you go wait for a while? I suggest you sharpen your weapons and prepare your supplies until then."; + } + else { + mes "[Guillaume Army Officer]"; + mes "You definitely seem to be ready for battle!"; + mes "Go show the Croixs what fear truly means!"; + mes "Today, our cry of victory shall echo all over the battlefield!"; + close2; + warp "bat_room",141,224; + end; + } + } + } + } + } + break; + case 2: + mes "[Guillaume Army Officer]"; + mes "Today, we shall be victorious!"; + break; + } + close; +} + +bat_room,148,121,1 script Flavius Officer#02b 414,{ + 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 "[Croix Army Officer]"; + mes "Let's show the power of the Croix Army to those stinky Guillaumes!"; + next; + switch(select("I want to join your army!:End Conversation")) { + case 1: + if ((Class == job_Novice) || (BaseClass == Job_Supernovice)) { + mes "[Croix Army Officer]"; + mes "I'm very pleased that you want to join us and fight the Guillaume Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield."; + } + else { + if (BaseLevel < 80) { + mes "[Croix Army Officer]"; + mes "I'm very pleased that you want to join us and fight the Guillaume Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield."; + } + else { + set .@chk_urtime,checkquest(2070,PLAYTIME); + if ((.@chk_urtime == 0)|| (.@chk_urtime == 1)) { + mes "[Croix Army Officer]"; + mes "You seem to have just returned from the battlefield."; + mes "It's too early for you to go back. Go rest, and leave the enemies to us!"; + } + else { + if (.@chk_urtime == 2) + erasequest 2070; + set .@mapcount2,getmapusers("bat_b02"); + if (.@mapcount2 > 0) { + mes "[Croix Army Officer]"; + mes "I've received a report informing me that an elite corps has been dispatched to the battlefield fighting the Guillaume already."; + mes "Why don't you go wait for a while? I suggest you sharpen your weapons and prepare your supplies until then."; + } + else { + if ($@FlaviusBG2 > 0) { + mes "[Croix Army Officer]"; + mes "An elite corps is already standing by to be dispatched to the battlefield."; + mes "Why don't you go wait for a while? I suggest you sharpen your weapons and prepare your supplies until then."; + } + else { + mes "[Croix Army Officer]"; + mes "You definitely seem to be ready for battle!"; + mes "Go show the Guillaumes what fear truly means!"; + mes "Today, our cry of victory shall echo all over the battlefield!"; + close2; + warp "bat_room",141,207; + end; + } + } + } + } + } + break; + case 2: + mes "[Croix Army Officer]"; + mes "Today, we shall be victorious!"; + break; + } + close; +} diff --git a/npc/battleground/kvm/kvm01.txt b/npc/battleground/kvm/kvm01.txt new file mode 100644 index 000000000..b69649944 --- /dev/null +++ b/npc/battleground/kvm/kvm01.txt @@ -0,0 +1,430 @@ +//===== rAthena Script ======================================= +// BattleGround System - KvM 80-99 +//===== By: ================================================== +//= ???, L0ne_W0lf +//===== Current Version: ===================================== +//= 1.2 +//===== Compatible With: ===================================== +//= rAthena 1.0 +//===== Description: ========================================= +//= [AEGIS Conversion] +//= Kreiger Von Midgard Battleground for levels 80 to 99 +//= - Winning Team: 5 points +//= - Losing Team: 1 point +//===== Additional Comments: ================================= +//= 1.0 First Version. +//= 1.1 Updated using official Aegis files. [L0ne_W0lf] +//= 1.2 Upated some announces and dialogs from iRO. +//= Changed how the scoreboard works slightly. +//= Removed the areapercentheals, and minor things. +//============================================================ + +// Waiting Room NPCs +//============================================================ +bat_room,169,226,5 script KVM Waiting Room#a::KvM01R_Guillaume 418,{ + end; + +OnInit: + waitingroom "Battle Station 5 Players",6,"KvM01_BG::OnGuillaumeJoin",1; + end; + +OnEnterBG: + set $@KvM01BG_id1, waitingroom2bg("bat_c01",52,129,"KvM01_BG::OnGuillaumeQuit","KvM01_BG::OnGuillaumeDie"); + end; +} + +bat_room,169,220,0 warp #kvm801 2,2,bat_room,154,150 + +bat_room,169,205,3 script KVM Waiting Room#b::KvM01R_Croix 414,{ + end; + +OnInit: + waitingroom "Battle Station 5 Players",6,"KvM01_BG::OnCroixJoin",1; + end; + +OnEnterBG: + set $@KvM01BG_id2, waitingroom2bg("bat_c01",147,55,"KvM01_BG::OnCroixQuit","KvM01_BG::OnCroixDie"); + end; +} + +bat_room,169,211,0 warp #kvm802 2,2,bat_room,154,150 + +// Starting Line +//============================================================ +- script KVM01::CellEffect -1,{ + end; + +OnKvM01One: + misceffect EF_CHANGECOLD; + end; + +OnKvM01Two: + misceffect EF_CHANGEPOISON; + end; +} + +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 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 139,4,4,{ + end; + +OnInit: + disablenpc "#A_camp_start01"; + end; + +OnEnable: + enablenpc "#A_camp_start01"; + end; + +OnDisable: + disablenpc "#A_camp_start01"; + end; + +OnTouch: + set Bat_Team,1; + setquest 6025; + end; +} + +bat_c01,146,56,3 script #B_camp_start01 139,4,4,{ + end; + +OnInit: + disablenpc "#B_camp_start01"; + end; + +OnEnable: + enablenpc "#B_camp_start01"; + end; + +OnDisable: + disablenpc "#B_camp_start01"; + end; + +OnTouch: + set Bat_Team,2; + setquest 6025; + end; +} + +// 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 "KVM Officer#KVM01A"; + disablenpc "KVM Officer#KVM01B"; + 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; + bg_updatescore "bat_c01",.Guillaume_Count,.Croix_Count; + if( .Guillaume_Count < 1 ) donpcevent "KvM01_BG::OnCroixWin"; + else { + mapannounce "bat_c01", "The number of Guillaumes is "+.Guillaume_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c01", "The number of Croixes is "+.Croix_Count+".",bc_map,"0x00ff00"; + } + } + end; + +OnCroixQuit: + //set BG_Delay_Tick, gettimetick(2) + 1200; +OnCroixDie: + if( $@KvM01BG == 2 ) + { + set .Croix_Count, .Croix_Count - 1; + bg_updatescore "bat_c01",.Guillaume_Count,.Croix_Count; + if( .Croix_Count < 1 ) donpcevent "KvM01_BG::OnGuillaumeWin"; + else { + mapannounce "bat_c01", "The number of Guillaumes is "+.Guillaume_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c01", "The number of Croixes is "+.Croix_Count+".",bc_map,"0x00ff00"; + } + } + end; + +OnReadyCheck: + if( $@KvM01BG ) + end; + set .@Guillaume, getwaitingroomstate(0,"KvM01R_Guillaume"); + set .@Croix, getwaitingroomstate(0,"KvM01R_Croix"); + + if( .@Guillaume < 5 || .@Croix < 5 ) + end; + + set $@KvM01BG, 1; // Starting + donpcevent "KvM01R_Croix::OnEnterBG"; + donpcevent "KvM01R_Guillaume::OnEnterBG"; + donpcevent "KvM01_BG::OnStart"; + end; + +OnStart: + disablenpc "KVM Officer#KVM01A"; + disablenpc "KVM Officer#KVM01B"; + set $@KvM01BG_Victory, 0; + // Warp Teams + bg_warp $@KvM01BG_id1,"bat_c01",53,128; + bg_warp $@KvM01BG_id2,"bat_c01",146,55; + initnpctimer; + end; + +OnTimer1000: + mapannounce "bat_c01", "In 1 minute, KVM will start.",bc_map,"0x00ff00"; + end; + +OnTimer3000: + mapannounce "bat_c01", "The maximum time for a KVM battle is 5 minutes.",bc_map,"0x00ff00"; + end; + +OnTimer6000: + mapannounce "bat_c01", "Please prepare for the KVM battle.",bc_map,"0x00ff00"; + mapannounce "bat_c01", "You can buff your people.",bc_map,"0x00ff00"; + donpcevent "#A_camp_start01::OnEnable"; + donpcevent "#B_camp_start01::OnEnable"; + end; + +OnTimer13000: + donpcevent "#A_camp_start01::OnDisable"; + donpcevent "#B_camp_start01::OnDisable"; + end; + +OnTimer30000: + mapannounce "bat_c01", "30 seconds remaining to start KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer45000: + mapannounce "bat_c01", "15 seconds remaining to start KVM battle.",bc_map,"0x00ff00"; + donpcevent "::OnKvM01One"; + end; + +OnTimer50000: + mapannounce "bat_c01", "10 seconds remaining to start KVM battle.",bc_map,"0x00ff00"; + donpcevent "::OnKvM01Two"; + end; + +OnTimer55000: + mapannounce "bat_c01", "5 seconds remaining to start KVM battle.",bc_map,"0x00ff00"; + donpcevent "::OnKvM01One"; + end; + +OnTimer59000: + mapannounce "bat_c01", "KVM is now commencing.",bc_map,"0x00ff00"; + donpcevent "::OnKvM01Two"; + end; + +OnTimer61000: + // 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; + donpcevent "KvM01_BG::OnStop"; + end; + } + set $@KvM01BG, 2; // Playing + bg_warp $@KvM01BG_id1,"bat_c01",61,120; + bg_warp $@KvM01BG_id2,"bat_c01",138,63; + end; + +OnTimer300000: + mapannounce "bat_c01", "1 minute remaining to finish the KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer330000: + mapannounce "bat_c01", "30 seconds remaining to finish the KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer345000: + mapannounce "bat_c01", "15 seconds remaining to finish the KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer350000: + mapannounce "bat_c01", "10 seconds remaining to finish the KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer355000: + mapannounce "bat_c01", "5 seconds remaining to finish the KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer360000: + mapannounce "bat_c01", "The KVM battle is over.",bc_map,"0x00ff00"; + 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; + mapannounce "bat_c01", "The number of Guillaumes is "+.Guillaume_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c01", "The number of Croixes is "+.Croix_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c01", "This battle has ended in a draw.",bc_map,"0x00ff00"; + donpcevent "KvM01_BG::OnStop"; + } + end; + +OnGuillaumeWin: + set $@KvM01BG, 3; + set $@KvM01BG_Victory, 1; + mapannounce "bat_c01", "Guillaume wins!",bc_map,"0x00ff00"; + mapannounce "bat_c01", "Congratulations to Guillaume members.",bc_map,"0x00ff00"; + mapannounce "bat_c01", "Everyone will be moved to the start point.",bc_map,"0x00ff00"; + donpcevent "KvM01_BG::OnStop"; + end; + +OnCroixWin: + set $@KvM01BG, 3; + set $@KvM01BG_Victory, 2; + mapannounce "bat_c01", "Croix wins!",bc_map,"0x00ff00"; + mapannounce "bat_c01", "Congratulations to Croix members.",bc_map,"0x00ff00"; + mapannounce "bat_c01", "Everyone will be moved to the start point.",bc_map,"0x00ff00"; + donpcevent "KvM01_BG::OnStop"; + end; + +OnStop: + stopnpctimer; + enablenpc "KVM Officer#KVM01A"; + enablenpc "KVM Officer#KVM01B"; + // 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: + set .Croix_Count, 0; + set .Guillaume_Count, 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 "KVM Officer#KVM01A"; + disablenpc "KVM Officer#KVM01B"; + mapwarp "bat_c01","bat_room",154,150; + maprespawnguildid "bat_c01",0,3; // Just in case someone else + bg_updatescore "bat_c01",5,5; + set $@KvM01BG, 0; + donpcevent "KvM01_BG::OnReadyCheck"; // Maybe a game is ready to start + end; +} + +- script KvM01_BG_Out -1,{ + end; + +OnBegin: + initnpctimer; + end; + +OnTimer1000: + mapannounce "bat_c01", "Please apply with the Officer to acquire KVM points.",bc_map,"0x00ff00"; + end; + +OnTimer3000: + mapannounce "bat_c01", "The Officer will grant you the points for 30 seconds.",bc_map,"0x00ff00"; + mapannounce "bat_c01", "In 30 seconds, the Officer will be sent away.",bc_map,"0x00ff00"; + end; + +OnTimer5000: + mapannounce "bat_c01", "Unless you talk to the Officer, you cannot gain the points.",bc_map,"0x00ff00"; + mapannounce "bat_c01", "Please be careful.",bc_map,"0x00ff00"; + end; + +OnTimer:55000: + mapannounce "bat_c01", "You will be sent back.",bc_map,"0x00ff00"; + end; + +OnTimer60000: + stopnpctimer; + donpcevent "KvM01_BG::OnReset"; + end; +} + +// Battleground rewards +//============================================================ +bat_c01,51,130,5 script KVM Officer#KVM01A 419,{ + if( $@KvM01BG_Victory ) + { + if( $@KvM01BG_Victory == Bat_Team ) + { // Victory + set kvm_point,kvm_point + 5; + mes "[KVM Officer]"; + mes "Good Game."; + mes "May the glory of KVM be with you."; + mes "You aquire the winning points: 5"; + close2; + } + else + { // + set kvm_point,kvm_point + 1; + mes "[KVM Officer]"; + mes "I am so sorry."; + mes "I wish you better luck next time."; + mes "You aquire the losing points: 1"; + close2; + } + bg_leave; + set Bat_Team,0; + warp "bat_room",154,150; + end; + } + end; +} + +bat_c01,148,53,1 script KVM Officer#KVM01B 415,{ + if( $@KvM01BG_Victory ) + { + if( $@KvM01BG_Victory == Bat_Team ) + { // Victory + set kvm_point,kvm_point + 5; + mes "[KVM Officer]"; + mes "Good Game."; + mes "May the glory of KVM be with you."; + mes "You aquire the winning points: 5"; + close2; + } + else + { // + set kvm_point,kvm_point + 1; + mes "[KVM Officer]"; + mes "I am so sorry."; + mes "I wish you better luck next time."; + mes "You aquire the losing points: 1"; + close2; + } + bg_leave; + set Bat_Team,0; + warp "bat_room",154,150; + end; + } + end; +} diff --git a/npc/battleground/kvm/kvm02.txt b/npc/battleground/kvm/kvm02.txt new file mode 100644 index 000000000..d99741834 --- /dev/null +++ b/npc/battleground/kvm/kvm02.txt @@ -0,0 +1,430 @@ +//===== rAthena Script ======================================= +// BattleGround System - KvM 1-59 +//===== By: ================================================== +//= ???, L0ne_W0lf +//===== Current Version: ===================================== +//= 1.3 +//===== Compatible With: ===================================== +//= rAthena 1.0 +//===== Description: ========================================= +//= [AEGIS Conversion] +//= Kreiger Von Midgard Battleground for levels 1 to 59 +//= - Winning Team: 1 point +//= - Losing Team: 0 points +//===== Additional Comments: ================================= +//= 1.0 First Version. +//= 1.1 Updated using official Aegis files. [L0ne_W0lf] +//= 1.2 Upated some announces and dialogs from iRO. +//= Changed how the scoreboard works slightly. +//= Removed the areapercentheals, and minor things. +//= 1.3 Fixed wrong names for disablenpc/enablenpc. [Ai4rei] +//= Fixed points in text and actual points differing. +//============================================================ + +// Waiting Room NPCs +//============================================================ +bat_room,197,226,5 script KVM Waiting Room#a2::KvM02R_Guillaume 418,{ + end; + +OnInit: + waitingroom "Battle Station 5 Players",6,"KvM02_BG::OnGuillaumeJoin",1; + end; + +OnEnterBG: + set $@KvM02BG_id1, waitingroom2bg("bat_c02",52,129,"KvM02_BG::OnGuillaumeQuit","KvM02_BG::OnGuillaumeDie"); + end; +} + +bat_room,197,220,0 warp #kvm601 2,2,bat_room,154,150 + +bat_room,197,205,3 script KVM Waiting Room#b2::KvM02R_Croix 414,{ + end; + +OnInit: + waitingroom "Battle Station 5 Players",6,"KvM02_BG::OnCroixJoin",1; + end; + +OnEnterBG: + set $@KvM02BG_id2, waitingroom2bg("bat_c02",147,55,"KvM02_BG::OnCroixQuit","KvM02_BG::OnCroixDie"); + end; +} + +bat_room,197,211,0 warp #kvm602 2,2,bat_room,154,150 + +// Starting Line +//============================================================ +- script KVM02::CellEffect2 -1,{ + end; + +OnKvM02One: + misceffect EF_CHANGECOLD; + end; + +OnKvM02Two: + misceffect EF_CHANGEPOISON; + end; +} + +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 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 139,4,4,{ + end; + +OnInit: + disablenpc "#A_camp_start02"; + end; + +OnEnable: + enablenpc "#A_camp_start02"; + end; + +OnDisable: + disablenpc "#A_camp_start03"; + end; + +OnTouch: + set Bat_Team,1; + setquest 6025; + end; +} + +bat_c02,146,56,3 script #B_camp_start02 139,4,4,{ + end; + +OnInit: + disablenpc "#B_camp_start02"; + end; + +OnEnable: + enablenpc "#B_camp_start02"; + end; + +OnDisable: + disablenpc "#B_camp_start02"; + end; + +OnTouch: + set Bat_Team,2; + setquest 6025; + end; +} + +// 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 "KVM Officer#KVM02A"; + disablenpc "KVM Officer#KVM02B"; + 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; + bg_updatescore "bat_c02",.Guillaume_Count,.Croix_Count; + if( .Guillaume_Count < 1 ) donpcevent "KvM02_BG::OnCroixWin"; + else { + mapannounce "bat_c02", "The number of Guillaumes is "+.Guillaume_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c02", "The number of Croixes is "+.Croix_Count+".",bc_map,"0x00ff00"; + } + } + end; + +OnCroixQuit: + //set BG_Delay_Tick, gettimetick(2) + 1200; +OnCroixDie: + if( $@KvM02BG == 2 ) + { + set .Croix_Count, .Croix_Count - 1; + bg_updatescore "bat_c02",.Guillaume_Count,.Croix_Count; + if( .Croix_Count < 1 ) donpcevent "KvM02_BG::OnGuillaumeWin"; + else { + mapannounce "bat_c02", "The number of Guillaumes is "+.Guillaume_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c02", "The number of Croixes is "+.Croix_Count+".",bc_map,"0x00ff00"; + } + } + end; + +OnReadyCheck: + if( $@KvM02BG ) + end; + set .@Guillaume, getwaitingroomstate(0,"KvM02R_Guillaume"); + set .@Croix, getwaitingroomstate(0,"KvM02R_Croix"); + + if( .@Guillaume < 5 || .@Croix < 5 ) + end; + + set $@KvM02BG, 1; // Starting + donpcevent "KvM02R_Croix::OnEnterBG"; + donpcevent "KvM02R_Guillaume::OnEnterBG"; + donpcevent "KvM02_BG::OnStart"; + end; + +OnStart: + disablenpc "KVM Officer#KVM02A"; + disablenpc "KVM Officer#KVM02B"; + set $@KvM02BG_Victory, 0; + // Warp Teams + bg_warp $@KvM02BG_id1,"bat_c02",53,128; + bg_warp $@KvM02BG_id2,"bat_c02",146,55; + initnpctimer; + end; + +OnTimer1000: + mapannounce "bat_c02", "In 1 minute, KVM will start.",bc_map,"0x00ff00"; + end; + +OnTimer3000: + mapannounce "bat_c02", "The maximum time for a KVM battle is 5 minutes.",bc_map,"0x00ff00"; + end; + +OnTimer6000: + mapannounce "bat_c02", "Please prepare for the KVM battle.",bc_map,"0x00ff00"; + mapannounce "bat_c02", "You can buff your people.",bc_map,"0x00ff00"; + donpcevent "#A_camp_start02::OnEnable"; + donpcevent "#B_camp_start02::OnEnable"; + end; + +OnTimer13000: + donpcevent "#A_camp_start02::OnDisable"; + donpcevent "#B_camp_start02::OnDisable"; + end; + +OnTimer30000: + mapannounce "bat_c02", "30 seconds remaining to start KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer45000: + mapannounce "bat_c02", "15 seconds remaining to start KVM battle.",bc_map,"0x00ff00"; + donpcevent "::OnKvM01One"; + end; + +OnTimer50000: + mapannounce "bat_c02", "10 seconds remaining to start KVM battle.",bc_map,"0x00ff00"; + donpcevent "::OnKvM01Two"; + end; + +OnTimer55000: + mapannounce "bat_c02", "5 seconds remaining to start KVM battle.",bc_map,"0x00ff00"; + donpcevent "::OnKvM01One"; + end; + +OnTimer59000: + mapannounce "bat_c02", "KVM is now commencing.",bc_map,"0x00ff00"; + donpcevent "::OnKvM01Two"; + end; + +OnTimer61000: + // 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; + donpcevent "KvM02_BG::OnStop"; + end; + } + set $@KvM02BG, 2; // Playing + bg_warp $@KvM02BG_id1,"bat_c02",62,119; + bg_warp $@KvM02BG_id2,"bat_c02",137,64; + end; + +OnTimer300000: + mapannounce "bat_c02", "1 minute remaining to finish the KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer330000: + mapannounce "bat_c02", "30 seconds remaining to finish the KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer345000: + mapannounce "bat_c02", "15 seconds remaining to finish the KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer350000: + mapannounce "bat_c02", "10 seconds remaining to finish the KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer355000: + mapannounce "bat_c02", "5 seconds remaining to finish the KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer360000: + mapannounce "bat_c02", "The KVM battle is over.",bc_map,"0x00ff00"; + 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; + mapannounce "bat_c02", "The number of Guillaumes is "+.Guillaume_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c02", "The number of Croixes is "+.Croix_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c02", "This battle has ended in a draw.",bc_map,"0x00ff00"; + donpcevent "KvM02_BG::OnStop"; + } + end; + +OnGuillaumeWin: + set $@KvM02BG, 3; + set $@KvM02BG_Victory, 1; + mapannounce "bat_c02", "Guillaume wins!",bc_map,"0x00ff00"; + mapannounce "bat_c02", "Congratulations to Guillaume members.",bc_map,"0x00ff00"; + mapannounce "bat_c02", "Everyone will be moved to the start point.",bc_map,"0x00ff00"; + donpcevent "KvM02_BG::OnStop"; + end; + +OnCroixWin: + set $@KvM02BG, 3; + set $@KvM02BG_Victory, 2; + mapannounce "bat_c02", "Croix wins!",bc_map,"0x00ff00"; + mapannounce "bat_c02", "Congratulations to Croix members.",bc_map,"0x00ff00"; + mapannounce "bat_c02", "Everyone will be moved to the start point.",bc_map,"0x00ff00"; + donpcevent "KvM02_BG::OnStop"; + end; + +OnStop: + stopnpctimer; + enablenpc "KVM Officer#KVM02A"; + enablenpc "KVM Officer#KVM02B"; + // 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: + set .Croix_Count, 0; + set .Guillaume_Count, 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 "KVM Officer#KVM02A"; + disablenpc "KVM Officer#KVM02B"; + mapwarp "bat_c02","bat_room",154,150; + maprespawnguildid "bat_c02",0,3; // Just in case someone else + bg_updatescore "bat_c02",5,5; + set $@KvM02BG, 0; + donpcevent "KvM02_BG::OnReadyCheck"; // Maybe a game is ready to start + end; +} + +- script KvM02_BG_Out -1,{ + end; + +OnBegin: + initnpctimer; + end; + +OnTimer1000: + mapannounce "bat_c02", "Please apply with the Officer to acquire KVM points.",bc_map,"0x00ff00"; + end; + +OnTimer3000: + mapannounce "bat_c02", "The Officer will grant you the points for 30 seconds.",bc_map,"0x00ff00"; + mapannounce "bat_c02", "In 30 seconds, the Officer will be sent away.",bc_map,"0x00ff00"; + end; + +OnTimer5000: + mapannounce "bat_c02", "Unless you talk to the Officer, you cannot gain the points.",bc_map,"0x00ff00"; + mapannounce "bat_c02", "Please be careful.",bc_map,"0x00ff00"; + end; + +OnTimer:55000: + mapannounce "bat_c02", "You will be sent back.",bc_map,"0x00ff00"; + end; + +OnTimer60000: + stopnpctimer; + donpcevent "KvM02_BG::OnReset"; + end; +} + +// Battleground rewards +//============================================================ +bat_c02,51,130,5 script KVM Officer#KVM02A 419,{ + if( $@KvM01BG_Victory ) + { + if( $@KvM02BG_Victory == Bat_Team ) + { // Victory + set kvm_point,kvm_point + 1; + mes "[KVM Officer]"; + mes "Good Game."; + mes "May the glory of KVM be with you."; + mes "You aquire the winning points: 1"; + close2; + } + else + { // + mes "[KVM Officer]"; + mes "I am so sorry."; + mes "I wish you better luck next time."; + mes "You aquire the losing points: 0"; + close2; + } + bg_leave; + set Bat_Team,0; + warp "bat_room",154,150; + end; + } + end; +} + +bat_c02,148,53,1 script KVM Officer#KVM02B 415,{ + if( $@KvM01BG_Victory ) + { + if( $@KvM02BG_Victory == Bat_Team ) + { // Victory + set kvm_point,kvm_point + 1; + mes "[KVM Officer]"; + mes "Good Game."; + mes "May the glory of KVM be with you."; + mes "You aquire the winning points: 1"; + close2; + } + else + { // + mes "[KVM Officer]"; + mes "I am so sorry."; + mes "I wish you better luck next time."; + mes "You aquire the losing points: 0"; + close2; + } + bg_leave; + set Bat_Team,0; + warp "bat_room",154,150; + end; + } + end; +} diff --git a/npc/battleground/kvm/kvm03.txt b/npc/battleground/kvm/kvm03.txt new file mode 100644 index 000000000..8cc26dc93 --- /dev/null +++ b/npc/battleground/kvm/kvm03.txt @@ -0,0 +1,431 @@ +//===== rAthena Script ======================================= +// BattleGround System - KvM 60-80 +//===== By: ================================================== +//= ???, L0ne_W0lf +//===== Current Version: ===================================== +//= 1.3 +//===== Compatible With: ===================================== +//= rAthena 1.0 +//===== Description: ========================================= +//= [AEGIS Conversion] +//= Kreiger Von Midgard Battleground for levels 60 to 80 +//= - Winning Team: 2 points +//= - Losing Team: 1 point +//===== Additional Comments: ================================= +//= 1.0 First Version. +//= 1.1 Updated using official Aegis files. [L0ne_W0lf] +//= 1.2 Upated some announces and dialogs from iRO. +//= Changed how the scoreboard works slightly. +//= Removed the areapercentheals, and minor things. +//= 1.3 Fixed wrong names for disablenpc/enablenpc. [Ai4rei] +//============================================================ + +// Waiting Room NPCs +//============================================================ +bat_room,225,226,5 script KVM Waiting Room#a3::KvM03R_Guillaume 418,{ + end; + +OnInit: + waitingroom "Battle Station 5 Players",6,"KvM03_BG::OnGuillaumeJoin",1; + end; + +OnEnterBG: + set $@KvM03BG_id1, waitingroom2bg("bat_c03",52,129,"KvM03_BG::OnGuillaumeQuit","KvM03_BG::OnGuillaumeDie"); + end; +} + +bat_room,225,220,0 warp #kvm701 2,2,bat_room,154,150 + +bat_room,225,205,3 script KVM Waiting Room#b3::KvM03R_Croix 414,{ + end; + +OnInit: + waitingroom "Battle Station 5 Players",6,"KvM03_BG::OnCroixJoin",1; + end; + +OnEnterBG: + set $@KvM03BG_id2, waitingroom2bg("bat_c03",147,55,"KvM03_BG::OnCroixQuit","KvM03_BG::OnCroixDie"); + end; +} + +bat_room,225,211,0 warp #kvm702 2,2,bat_room,154,150 + +// Starting Line +//============================================================ +- script KVM03::CellEffect3 -1,{ + end; + +OnKvM03One: + misceffect EF_CHANGECOLD; + end; + +OnKvM03Two: + misceffect EF_CHANGEPOISON; + end; +} + +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 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 139,4,4,{ + end; + +OnInit: + disablenpc "#A_camp_start03"; + end; + +OnEnable: + enablenpc "#A_camp_start03"; + end; + +OnDisable: + disablenpc "#A_camp_start03"; + end; + +OnTouch: + set Bat_Team,1; + setquest 6025; + end; +} + +bat_c03,146,56,3 script #B_camp_start03 139,4,4,{ + end; + +OnInit: + disablenpc "#B_camp_start03"; + end; + +OnEnable: + enablenpc "#B_camp_start03"; + end; + +OnDisable: + disablenpc "#B_camp_start03"; + end; + +OnTouch: + set Bat_Team,2; + setquest 6025; + end; +} + +// 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 "KVM Officer#KVM03A"; + disablenpc "KVM Officer#KVM03B"; + 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; + bg_updatescore "bat_c03",.Guillaume_Count,.Croix_Count; + if( .Guillaume_Count < 1 ) donpcevent "KvM03_BG::OnCroixWin"; + else { + mapannounce "bat_c03", "The number of Guillaumes is "+.Guillaume_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c03", "The number of Croixes is "+.Croix_Count+".",bc_map,"0x00ff00"; + } + } + end; + +OnCroixQuit: + //set BG_Delay_Tick, gettimetick(2) + 1200; +OnCroixDie: + if( $@KvM03BG == 2 ) + { + set .Croix_Count, .Croix_Count - 1; + bg_updatescore "bat_c03",.Guillaume_Count,.Croix_Count; + if( .Croix_Count < 1 ) donpcevent "KvM03_BG::OnGuillaumeWin"; + else { + mapannounce "bat_c03", "The number of Guillaumes is "+.Guillaume_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c03", "The number of Croixes is "+.Croix_Count+".",bc_map,"0x00ff00"; + } + } + end; + +OnReadyCheck: + if( $@KvM03BG ) + end; + set .@Guillaume, getwaitingroomstate(0,"KvM03R_Guillaume"); + set .@Croix, getwaitingroomstate(0,"KvM03R_Croix"); + + if( .@Guillaume < 5 || .@Croix < 5 ) + end; + + set $@KvM03BG, 1; // Starting + donpcevent "KvM03R_Croix::OnEnterBG"; + donpcevent "KvM03R_Guillaume::OnEnterBG"; + donpcevent "KvM03_BG::OnStart"; + end; + +OnStart: + disablenpc "KVM Officer#KVM03A"; + disablenpc "KVM Officer#KVM03B"; + set $@KvM01BG_Victory, 0; + // Warp Teams + bg_warp $@KvM03BG_id1,"bat_c03",53,128; + bg_warp $@KvM03BG_id2,"bat_c03",146,55; + initnpctimer; + end; + +OnTimer1000: + mapannounce "bat_c03", "In 1 minute, KVM will start.",bc_map,"0x00ff00"; + end; + +OnTimer3000: + mapannounce "bat_c03", "The maximum time for a KVM battle is 5 minutes.",bc_map,"0x00ff00"; + end; + +OnTimer6000: + mapannounce "bat_c03", "Please prepare for the KVM battle.",bc_map,"0x00ff00"; + mapannounce "bat_c03", "You can buff your people.",bc_map,"0x00ff00"; + donpcevent "#A_camp_start03::OnEnable"; + donpcevent "#B_camp_start03::OnEnable"; + end; + +OnTimer13000: + donpcevent "#A_camp_start03::OnDisable"; + donpcevent "#B_camp_start03::OnDisable"; + end; + +OnTimer30000: + mapannounce "bat_c03", "30 seconds remaining to start KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer45000: + mapannounce "bat_c03", "15 seconds remaining to start KVM battle.",bc_map,"0x00ff00"; + donpcevent "::OnKvM01One"; + end; + +OnTimer50000: + mapannounce "bat_c03", "10 seconds remaining to start KVM battle.",bc_map,"0x00ff00"; + donpcevent "::OnKvM01Two"; + end; + +OnTimer55000: + mapannounce "bat_c03", "5 seconds remaining to start KVM battle.",bc_map,"0x00ff00"; + donpcevent "::OnKvM01One"; + end; + +OnTimer59000: + mapannounce "bat_c03", "KVM is now commencing.",bc_map,"0x00ff00"; + donpcevent "::OnKvM01Two"; + end; + +OnTimer61000: + // 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; + donpcevent "KvM03_BG::OnStop"; + end; + } + set $@KvM03BG, 2; // Playing + bg_warp $@KvM03BG_id1,"bat_c03",62,119; + bg_warp $@KvM03BG_id2,"bat_c03",137,64; + end; + +OnTimer300000: + mapannounce "bat_c03", "1 minute remaining to finish the KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer330000: + mapannounce "bat_c03", "30 seconds remaining to finish the KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer345000: + mapannounce "bat_c03", "15 seconds remaining to finish the KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer350000: + mapannounce "bat_c03", "10 seconds remaining to finish the KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer355000: + mapannounce "bat_c03", "5 seconds remaining to finish the KVM battle.",bc_map,"0x00ff00"; + end; + +OnTimer360000: + mapannounce "bat_c03", "KVM has ended.",bc_map,"0x00ff00"; + 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; + mapannounce "bat_c03", "The number of Guillaumes is "+.Guillaume_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c03", "The number of Croixes is "+.Croix_Count+".",bc_map,"0x00ff00"; + mapannounce "bat_c03", "This battle has ended in a draw.",bc_map,"0x00ff00"; + donpcevent "KvM03_BG::OnStop"; + } + end; + +OnGuillaumeWin: + set $@KvM03BG, 3; + set $@KvM03BG_Victory, 1; + mapannounce "bat_c03", "Guillaume wins!",bc_map,"0x00ff00"; + mapannounce "bat_c03", "Congratulations to Guillaume members.",bc_map,"0x00ff00"; + mapannounce "bat_c03", "Everyone will be moved to the start point.",bc_map,"0x00ff00"; + donpcevent "KvM03_BG::OnStop"; + end; + +OnCroixWin: + set $@KvM03BG, 3; + set $@KvM03BG_Victory, 2; + mapannounce "bat_c03", "Croix wins!",bc_map,"0x00ff00"; + mapannounce "bat_c03", "Congratulations to Croix members.",bc_map,"0x00ff00"; + mapannounce "bat_c03", "Everyone will be moved to the start point.",bc_map,"0x00ff00"; + donpcevent "KvM03_BG::OnStop"; + end; + +OnStop: + stopnpctimer; + enablenpc "KVM Officer#KVM03A"; + enablenpc "KVM Officer#KVM03B"; + // 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: + set .Croix_Count, 0; + set .Guillaume_Count, 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 "KVM Officer#KVM03A"; + disablenpc "KVM Officer#KVM03B"; + mapwarp "bat_c03","bat_room",154,150; + maprespawnguildid "bat_c03",0,3; // Just in case someone else + bg_updatescore "bat_c03",5,5; + set $@KvM03BG, 0; + donpcevent "KvM03_BG::OnReadyCheck"; // Maybe a game is ready to start + end; +} + +- script KvM03_BG_Out -1,{ + end; + +OnBegin: + initnpctimer; + end; + +OnTimer1000: + mapannounce "bat_c03", "Please apply with the Officer to acquire KVM points.",bc_map,"0x00ff00"; + end; + +OnTimer3000: + mapannounce "bat_c03", "The Officer will grant you the points for 30 seconds.",bc_map,"0x00ff00"; + mapannounce "bat_c03", "In 30 seconds, the Officer will be sent away.",bc_map,"0x00ff00"; + end; + +OnTimer5000: + mapannounce "bat_c03", "Unless you talk to the Officer, you cannot gain the points.",bc_map,"0x00ff00"; + mapannounce "bat_c03", "Please be careful.",bc_map,"0x00ff00"; + end; + +OnTimer:55000: + mapannounce "bat_c03", "You will be sent back.",bc_map,"0x00ff00"; + end; + +OnTimer60000: + stopnpctimer; + donpcevent "KvM03_BG::OnReset"; + end; +} + +// Battleground rewards +//============================================================ +bat_c03,51,130,5 script KVM Officer#KVM03A 419,{ + if( $@KvM01BG_Victory ) + { + if( $@KvM03BG_Victory == Bat_Team ) + { // Victory + set kvm_point,kvm_point + 2; + mes "[KVM Officer]"; + mes "Good Game."; + mes "May the glory of KVM be with you."; + mes "You aquire the winning points: 2"; + close2; + } + else + { // + set kvm_point,kvm_point + 1; + mes "[KVM Officer]"; + mes "I am so sorry."; + mes "I wish you better luck next time."; + mes "You aquire the losing points: 1"; + close2; + } + bg_leave; + set Bat_Team,0; + warp "bat_room",154,150; + end; + } + end; +} + +bat_c03,148,53,1 script KVM Officer#KVM03B 415,{ + if( $@KvM01BG_Victory ) + { + if( $@KvM03BG_Victory == Bat_Team ) + { // Victory + set kvm_point,kvm_point + 2; + mes "[KVM Officer]"; + mes "Good Game."; + mes "May the glory of KVM be with you."; + mes "You aquire the winning points: 2"; + close2; + } + else + { // + set kvm_point,kvm_point + 1; + mes "[KVM Officer]"; + mes "I am so sorry."; + mes "I wish you better luck next time."; + mes "You aquire the losing points: 1"; + close2; + } + bg_leave; + set Bat_Team,0; + warp "bat_room",154,150; + end; + } + end; +} diff --git a/npc/battleground/kvm/kvm_enter.txt b/npc/battleground/kvm/kvm_enter.txt new file mode 100644 index 000000000..d54792bb5 --- /dev/null +++ b/npc/battleground/kvm/kvm_enter.txt @@ -0,0 +1,218 @@ +//===== rAthena Script ======================================= +// BattleGround System - KvM Entrance NPCs +//===== By: ================================================== +//= L0ne_W0lf +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= rAthena 1.0 +//===== Description: ========================================= +//= [AEGIS Conversion] +//= Kreiger Von Midgard Battleground Entrance NPCs +//= Original NPCs scrapped from bg_common. +//===== Additional Comments: ================================= +//= 1.0 First Version. +//= 1.1 Corrected some typos, and shifted messages around. +//= Corrected iRO style quest log entries, however it's +//= advisable that you not use them, as they conflict. +//============================================================ + +// KvM Officer - Guillaume +//============================================================ +bat_room,164,178,5 script KVM Mercenary Officer#1 418,{ + /* + set .@kvm,checkquest(6026,PLAYTIME); + if ((.@kvm == 0) || (.@kvm == 1)) { + mes "[Croix 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 (.@kvm == 2) erasequest 6026; + */ + set .@permit,checkquest(6025,PLAYTIME); + if ((.@permit == 0) || (.@permit == 1)) { + mes "[Guillaume Mercenary Officer]"; + mes "It seems you have recently participated in a KVM battle. You must wait 5 minutes before signing up again."; + close; + } + else if (.@permit == 2) erasequest 6025; + mes "[Guillaume Mercenary Officer]"; + mes "Let them know the real might of Guillaume!"; + next; + switch(select("I will fight with you.:End Conversation.")) { + case 1: + mes "[Guillaume Mercenary Officer]"; + mes "Show them how strong we are."; + mes "Today, everyone will hear the shout of triumph from Guillaume!"; + close2; + //setquest 6025; + if (BaseLevel > 79) warp "bat_room",169,223; + else if (BaseLevel < 60) warp "bat_room",197,223; + else warp "bat_room",225,223; + close; + case 2: + mes "[Guillaume Mercenary Officer]"; + mes "We will win!"; + close; + } +} + +// Guillaume Knight - KvM +//============================================================ +bat_room,167,178,5 script Guillaume Knight#kvm 417,{ + mes "[Guillaume Knight]"; + mes "Hello."; + mes "What do you want to know?"; + next; + switch(select("Apply for KVM.:What is KVM?:How do I participate in KVM?:I want to know my Kreiger Points.")) { + case 1: + mes "[Guillaume Knight]"; + mes "Applications are not available yet."; + mes "To apply, you need to go to a KVM Mercenary Officer."; + close; + case 2: + mes "[Guillaume Knight]"; + mes "KVM is the abbreviation of Kreiger Von Midgard."; + mes "Adventurer, are you aware that the way to the new world has been opened?"; + next; + mes "[Guillaume Knight]"; + mes "We, the Guillaume Administration, have several plans to advance to the new world."; + mes "And KVM is one of them."; + next; + mes "[Guillaume Knight]"; + mes "It means that we, one of many countries in the Midgard continent,"; + mes "have decided to employ many adventurers for the immediate advance to the new world."; + next; + mes "[Guillaume Knight]"; + mes "Therefore, to select the best adventurers, we are holding the KVM."; + mes "We exspect responses from many adventurers."; + next; + mes "[Guillaume Knight]"; + mes "And we will give them rewards for their participation!"; + mes "As for the rewards, please contact a KVM Logistic Officer."; + close; + case 3: + mes "[Guillaume Knight]"; + mes "Basically, KVM is a 5 on 5 battle."; + mes "First, you apply with a KVM receptionist, in a group or individually."; + next; + mes "[Guillaume Knight]"; + mes "Group applications are for when you intend to enter the KVM with your party members,"; + mes "and a personal application is for when you intend to enter the KVM individually."; + next; + mes "[Guillaume Knight]"; + mes "Please apply with a KVM officer, and he will contact you later when you are in Prontera."; + next; + mes "[Guillaume Knight]"; + mes "Then you enter and follow the instructions in the battlefield."; + next; + mes "[Guillaume Knight]"; + mes "However, please be advised that unless you are in the KVM office, he cannot contact you."; + close; + case 4: + mes "[Guillaume Knight]"; + mes "Your Kreiger Points are:"; + mes ""+kvm_point+"."; + close; + } +} + +// KvM Officer - Croix +//============================================================ +bat_room,164,121,1 script KVM Mercenary Officer#2 414,{ + /* + set .@kvm,checkquest(6025,PLAYTIME); + if ((.@kvm == 0) || (.@kvm == 1)) { + mes "[Croix Mercenary Officer]"; + mes "I know that you've already signed with the Guillaume. Go back and join their team. We will not accept traitors to fight for us."; + close; + } + else if (.@kvm == 2) erasequest 6025; + */ + set .@permit,checkquest(6025,PLAYTIME); + if ((.@permit == 0) || (.@permit == 1)) { + mes "[Croix Mercenary Officer]"; + mes "It seems you have recently participated in a KVM battle. You must wait 5 minutes before signing up again."; + close; + } + else if (.@permit == 2) erasequest 6025; + mes "[Croix Mercenary Officer]"; + mes "Let them know the real might of Croix!"; + next; + switch(select("I will fight with you.:End Conversation.")) { + case 1: + mes "[Croix Mercenary Officer]"; + mes "Show them how strong we are."; + mes "Today, everyone will hear the shout of triumph from Croix!"; + close2; + //setquest 6026; + if (BaseLevel > 79) warp "bat_room",169,207; + else if (BaseLevel < 60) warp "bat_room",197,207; + else warp "bat_room",225,207; + close; + case 2: + mes "[Croix Mercenary Officer]"; + mes "We will win!"; + close; + } +} + +// Croix Knight - KvM +//============================================================ +bat_room,167,121,1 script Croix Knight#kvm 413,{ + mes "[Croix Knight]"; + mes "Hello."; + mes "What do you want to know?"; + next; + switch(select("Apply for KVM.:What is KVM?:How do I participate in KVM?:I want to know my Kreiger Points.")) { + case 1: + mes "[Croix Knight]"; + mes "Applications are not available yet."; + mes "To apply, you need to go to a KVM Mercenary Officer."; + close; + case 2: + mes "[Croix Knight]"; + mes "KVM is the abbreviation of Kreiger Von Midgard."; + mes "Adventurer, are you aware that the way to the new world has been opened?"; + next; + mes "[Croix Knight]"; + mes "We, the Croix Administration, have several plans to advance to the new world."; + mes "And KVM is one of them."; + next; + mes "[Croix Knight]"; + mes "It means that we, one of many countries in the Midgard continent,"; + mes "have decided to employ many adventurers for the immediate advance to the new world."; + next; + mes "[Croix Knight]"; + mes "Therefore, to select the best adventurers, we are holding the KVM."; + mes "We exspect responses from many adventurers."; + next; + mes "[Croix Knight]"; + mes "And we will give them rewards for their participation!"; + mes "As for the rewards, please contact a KVM Logistic Officer."; + close; + case 3: + mes "[Croix Knight]"; + mes "Basically, KVM is a 5 on 5 battle."; + mes "First, you apply with a KVM receptionist, in a group or individually."; + next; + mes "[Croix Knight]"; + mes "Group applications are for when you intend to enter the KVM with your party members,"; + mes "and a personal application is for when you intend to enter the KVM individually."; + next; + mes "[Croix Knight]"; + mes "Please apply with a KVM officer, and he will contact you later when you are in Prontera."; + next; + mes "[Croix Knight]"; + mes "Then you enter and follow the instructions in the battlefield."; + next; + mes "[Croix Knight]"; + mes "However, please be advised that unless you are in the KVM office, he cannot contact you."; + close; + case 4: + mes "[Croix Knight]"; + mes "Your Kreiger Points are:"; + mes ""+kvm_point+"."; + close; + } +} diff --git a/npc/battleground/kvm/kvm_item_pay.txt b/npc/battleground/kvm/kvm_item_pay.txt new file mode 100644 index 000000000..3af0c5a1b --- /dev/null +++ b/npc/battleground/kvm/kvm_item_pay.txt @@ -0,0 +1,313 @@ +//===== rAthena Script ======================================= +// BattleGround System - KvM Item Dealer +//===== By: ================================================== +//= L0ne_W0lf +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena 1.0 +//===== Description: ========================================= +//= [AEGIS Conversion] +//= Kreiger Von Midgard Battleground Point redemption NPC +//= * NOTE * +//= KvM Does NOT use items, but a character variable to +//= keep track of points. This NPC when talked to will +//= convert already-given tokens and convert them to points. +//= under the player variable kvm_point. +//===== Additional Comments: ================================= +//= 1.0 First Version. +//============================================================ + +bat_room,151,144,3 script KVM Logistic Officer#a 734,{ + if (countitem(7773)) { + set .@pointstoadd,countitem(7773); + delitem 7773,.@pointstoadd; + set kvm_point,kvm_point+.@pointstoadd; + mes "[Logistics]"; + mes "Are those "+getitemname(7773)+"s I see?"; + mes "We no longer accept that currency,"; + mes "but I can exchange those for you,"; + mes "So you have "+.@pointstoadd+" "+getitemname(7773)+"s?"; + mes "Alright, all set, you now have ^580080"+ kvm_point +"^000000 KVM Points."; + next; + } + 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 "[Logistics]"; + mes "Hello?"; + mes "I am in charge of distributing"; + mes "reward items for KVM points. Any"; + mes "wrong selection of items will not"; + mes "be reversed. Please be carefull."; + mes "Select the next step please."; + next; + set .@name$,strcharinfo(0); + switch(select("Read the KVM Catalogue.:Purchase KVM Items.:Confirm KVM Points.:Explanation of KVM Rewards.:Explanation of KVM Points.")) { + case 1: + mes "[Logistics]"; + mes "Here is the catalogue of KVM items."; + mes "Each weapon requires 2,000 points"; + mes "and each armor from 10 to 1,200"; + mes "points. So, be carefull when"; + mes "selecting a reward."; + close2; + ReadBook 11017,1; + end; + case 2: + mes "[Logistics]"; + mes "Wich items do you want to see? As"; + mes "for the detailed specification of"; + mes "the items, please refer to the"; + mes "^3131FFCatalogue^000000."; + next; + switch(select("Weapon:Armor/Accessory:Mass-Production Armor/Accessory:Popularized Armor/Accessory")) { + case 1: + mes "[Logistics]"; + mes "You have selected the Weapon Category."; + mes "Please select a sub-category."; + next; + switch(select("Dagger/Sword/Spear:Staff/Mace/Axe/Shuriken:Bow/Katar/Instrument/Whip:Book/Knuckle:Revolver/Rifle/Gun/Grenade Launcher")) { + case 1: + mes "[Logistics]"; + mes "You have selected the Dagger/Sword/Spear category."; + mes "Please select a sub-category."; + next; + switch(select("Dagger:One-handed Sword:Two-handed Sword:One-handed Spear:Two-handed Spear")) { + case 1: callsub PurchaseItem,13042,0,1; //Krieger_Dagger1 + case 2: + mes "[Logistics]"; + mes "You have selected the 'One-handed Sword' category."; + mes "There are 3 One-handed Swords: Glorious Flamberge, Glorious Rapier and Glorious Holy Avenger."; + mes "If you want their details, please refer to the KVM Catalogue."; + mes "Please select one of them."; + next; + switch(select("Glorious Flamberge:Glorious Rapier:Glorious Holy Avenger")) { + case 1: callsub PurchaseItem,13416,0,0; //Krieger_Onehand_Sword1 + case 2: callsub PurchaseItem,13417,0,0; //Krieger_Onehand_Sword2 + case 3: callsub PurchaseItem,13418,0,0; //Krieger_Onehand_Sword3 + } + case 3: callsub PurchaseItem,1187,0,1; //Krieger_Twohand_Sword1 + case 4: callsub PurchaseItem,1426,0,1; //Krieger_Onehand_Spear1 + case 5: callsub PurchaseItem,1486,0,1; //Krieger_Twohand_Spear1 + } + case 2: + mes "[Logistics]"; + mes "You have selected the 'Staff/Mace/Axe/Shuriken' category."; + mes "Please select a sub-category."; + next; + switch(select("Staff:Mace:One-handed Axe:Two-handed Axe:Shuriken")) { + case 1: + mes "[Logistics]"; + mes "You have selected the 'Staff' category."; + mes "There are 3 Staffs: a Two-handed Weapon Glorious Destruction Staff, a One-handed Glorious Arc Wand and a Glorious Healing Staff."; + mes "If you want their details, please refer to the KVM Catalogue."; + mes "Please select one of them."; + next; + switch(select("Glorious Destruction Staff:Glorious Arc Wand:Glorious Healing Staff")) { + case 1: callsub PurchaseItem,2002,0,0; //Krieger_Twohand_Staff1 + case 2: callsub PurchaseItem,1640,0,0; //Krieger_Onehand_Staff1 + case 3: callsub PurchaseItem,1641,0,0; //Krieger_Onehand_Staff2 + } + case 2: callsub PurchaseItem,1546,0,1; //Krieger_Onehand_Mace1 + case 3: callsub PurchaseItem,1310,0,1; //Krieger_Onehand_Axe1 + case 4: callsub PurchaseItem,1382,0,1; //Krieger_Twohand_Axe1 + case 5: callsub PurchaseItem,13307,0,1; //Krieger_Huuma_Shuriken1 + } + case 3: + mes "[Logistics]"; + mes "You have selected the Bow/Katar/Instrument/Whip category."; + mes "Please select a sub-category."; + next; + switch(select("Bow:Katar:Instrument:Whip")) { + case 1: callsub PurchaseItem,1743,0,1; //Krieger_Bow1 + case 2: + mes "[Logistics]"; + mes "You have selected the 'Katar' category."; + mes "There are 2 Katars: Glorious Bloody Roar and Glorious Jamadhar."; + mes "If you want their details, please refer to the KVM Catalogue."; + mes "Please select one of them."; + next; + switch(select("Glorious Bloody Roar:Glorious Jamadhar")) { + case 1: callsub PurchaseItem,1281,0,0; //Krieger_Katar1 + case 2: callsub PurchaseItem,1282,0,0; //Krieger_Katar2 + } + case 3: callsub PurchaseItem,1927,0,1; //Krieger_Instrument1 + case 4: callsub PurchaseItem,1981,0,1; //Krieger_Whip1 + } + case 4: + mes "[Logistics]"; + mes "You have selected the Book/Knuckle category."; + mes "Please select a sub-category."; + next; + switch(select("Book:Knuckle")) { + case 1: + mes "[Logistics]"; + mes "You have selected 'Book'."; + mes "There are 2 Books: Glorious Tablet and Glorious Apocalypse."; + mes "If you want their details, please refer to the KVM Catalogue."; + mes "Please select one of them."; + next; + switch(select("Glorious Tablet:Glorious Apocalypse")) { + case 1: callsub PurchaseItem,1576,0,0; //Krieger_Book1 + case 2: callsub PurchaseItem,1577,0,0; //Krieger_Book2 + } + case 2: + mes "[Logistics]"; + mes "You have selected the 'Knuckle' category."; + mes "There are 2 Knuckles: Glorious Claw and Glorious Fist."; + mes "If you want their details, please refer to the KVM Catalogue."; + mes "Please select one of them."; + next; + switch(select("Glorious Claw:Glorious Fist")) { + case 1: callsub PurchaseItem,1826,0,0; //Krieger_Knuckle1 + case 2: callsub PurchaseItem,1827,0,0; //Krieger_Knuckle2 + } + } + case 5: + mes "[Logistics]"; + mes "You have selected the 'Revolver/Rifle/Gun/Grenade Launcher' category."; + mes "Please select a sub-category."; + next; + switch(select("Revolver:Rifle:Gatling Gun:Shotgun:Grenade Launcher")) { + case 1: callsub PurchaseItem,13110,0,1; //Krieger_Pistol1 + case 2: callsub PurchaseItem,13176,0,1; //Krieger_Rifle1 + case 3: callsub PurchaseItem,13177,0,1; //Krieger_Gatling1 + case 4: callsub PurchaseItem,13178,0,1; //Krieger_Shotgun1 + case 5: callsub PurchaseItem,13179,0,1; //Krieger_Launcher1 + } + } + case 2: + mes "[Logistics]"; + mes "You have selected the 'Armor/Accessory' category."; + mes "Please select a sub-category."; + next; + switch(select("Armor:Cloak:Shoes:Accessory")) { + case 1: callsub PurchaseItem,2394,1,2; //Krieger_Suit1 + case 2: callsub PurchaseItem,2549,2,2; //Krieger_Muffler1 + case 3: callsub PurchaseItem,2444,3,2; //Krieger_Shoes1 + case 4: callsub PurchaseItem,2772,4,2; //Krieger_Ring1 + } + case 3: + mes "[Logistics]"; + mes "You have selected the 'Mass-Production Armor/Accessory' category."; + mes "Please select a sub-category."; + next; + switch(select("Mass-Production Armor:Mass-Production Shoes:Mass-Production Accessory")) { + case 1: callsub PurchaseItem,2395,5,3; //Krieger_Suit2 + case 2: callsub PurchaseItem,2445,6,3; //Krieger_Shoes2 + case 3: callsub PurchaseItem,2773,7,3; //Krieger_Ring2 + } + case 4: + mes "[Logistics]"; + mes "You have selected the 'Popularized Armor/Accessory' category."; + mes "Please select a sub-category."; + next; + switch(select("Popularized Armor:Popularized Shoes:Popularized Accessory")) { + case 1: callsub PurchaseItem,2396,8,4; //Krieger_Suit3 + case 2: callsub PurchaseItem,2446,9,4; //Krieger_Shoes3 + case 3: callsub PurchaseItem,2774,10,4; //Krieger_Ring3 + } + } + case 3: + mes "[Logistics]"; + mes ""+ .@name$ +", your current points are ^580080"+ kvm_point +"^000000 KVM Points."; + close; + case 4: + mes "[Logistics]"; + mes "There are 3 categories in KVM Rewards: Weapon/Armor.Accessory."; + next; + mes "[Logistics]"; + mes "Weapon rewards require 2,000 KVM points for each."; + mes "There are 3 types of Armor rewards and they require 840/630/580 KVM points fo each."; + mes "Accessory rewards require 1,200 KVM points for each."; + next; + mes "[Logistics]"; + mes "Kreiger Weapons are LV 4 Weapons, they can be upgraded and will have special effects: Slaughter, Destruction and Blessing."; + next; + mes "[Logistics]"; + mes "When you can wear all 3 armors, you can have a special set of options."; + mes "Also, when Kreiger Accessory rewards are worn with medalsm it will bring you special set rewards."; + next; + mes "[Logistics]"; + mes "Finally, there are Mass-Production Armor and Accessory rewards."; + mes "Players whose Lvl is higher than 60 can equip Mass-Production Armors and there is a Lvl limit for Popularized Armor as well."; + close; + case 5: + mes "[Logistics]"; + mes "KVM Points are rewarded when you win, lose or draw in Kreiger Von Midgard (KVM)."; + mes "You can have special Rewards by using these points."; + close; + } + +PurchaseItem: + // Pricing for Weapon, Suit1, Muffler1, Shoes1, Ring1m Suit2, Shoes2, Ring2, Suit3, Shoes3, Ring3 + setarray .@prices[0],2000,840,630,580,1200,120,70,200,15,10,30; + + mes "[Logistics]"; + + if (!getarg(2)) + mes "You have selected ^ff0000"+getitemname(getarg(0))+"^000000."; + else if (getarg(2) == 1) + mes "There is only one "+callfunc("F_GetWeaponType",getarg(0))+": "+getitemname(getarg(0))+"."; + else if (getarg(2) == 2) { + mes "You have selected '"+callfunc("F_GetArmorType",getarg(0))+"'."; + mes "The armor for one whose Lvl is more than 80 is: ^ff0000"+getitemname(getarg(0))+"^000000."; + } + else if (getarg(2) == 3) { + mes "You have selected 'Mass-Production "+callfunc("F_GetArmorType",getarg(0))+"'."; + mes "There is only one Mass-Production "+callfunc("F_GetArmorType",getarg(0))+": ^ff0000"+getitemname(getarg(0))+"^000000."; + } + else if (getarg(2) == 4) { + mes "You have selected 'Popularized "+callfunc("F_GetArmorType",getarg(0))+"'."; + mes "There is only one Popularized "+callfunc("F_GetArmorType",getarg(0))+": ^ff0000"+getitemname(getarg(0))+"^000000."; + } + + if (!getarg(1)) + mes "It requires ^0000ff2,000^000000 KVM Points, and "+ .@name$ +", your points are: ^580080"+ kvm_point +"^000000."; + else if (getarg(1) == 4) + mes "It requires ^0000ff1,200^000000 KVM Points, and "+ .@name$ +", your points are: ^580080"+ kvm_point +"^000000."; + else + mes "It requires ^0000ff"+.@prices[getarg(1)]+"^000000 KVM Points, and "+ .@name$ +", your points are: ^580080"+ kvm_point +"^000000."; + + mes "Are you sure you want this item?"; + next; + switch(select("No, I won't purchase it.:Yes, I will purchase it.")) { + case 1: + mes "[Logistics]"; + mes "You have selected 'I won't purchase it'."; + mes "When purchasing an item, please be careful there are no refunds."; + break; + case 2: + if (kvm_point >= .@prices[getarg(1)]) { + set kvm_point,kvm_point-.@prices[getarg(1)]; + getitem getarg(0),1; + mes "[Logistics]"; + mes "You have purchased a "+getitemname(getarg(0))+"."; + if (!getarg(1)) + mes "Your KVM Points are reduced by ^0000ff"+getarg(1)+"^000000 points, your KVM Points are now ^580080"+kvm_point+"^000000."; + if (getarg(1) == 4) + mes "Your KVM Points are reduced by ^0000ff1,200^000000 points, your KVM Points are now ^580080"+kvm_point+"^000000."; + else + mes "Your KVM Points are reduced by ^0000ff"+.@prices[getarg(1)]+"^000000 points, your KVM Points are now ^580080"+kvm_point+"^000000."; + } + else { + mes "[Logistics]"; + if (!getarg(1)) + mes "You need ^0000ff2,000^000000 KVM Points to purchase this item."; + else if (getarg(1) == 4) + mes "You need ^0000ff1,200^000000 KVM Points to purchase this item."; + else + mes "You need ^0000ff"+.@prices[getarg(1)]+"^000000 KVM Points to purchase this item."; + mes "However, your KVM Points are now ^580080"+ kvm_point +"^000000."; + mes "Which are not enough to buy it."; + mes "When you get enough points, please come back again."; + } + } + close; +} diff --git a/npc/battleground/tierra/tierra01.txt b/npc/battleground/tierra/tierra01.txt new file mode 100644 index 000000000..b6b3e4354 --- /dev/null +++ b/npc/battleground/tierra/tierra01.txt @@ -0,0 +1,948 @@ +//===== rAthena Script ======================================= +// BattleGround System - Tierra Gorge +//===== By: ================================================== +//= L0ne_W0lf +//===== Current Version: ===================================== +//= 1.3 +//===== Compatible With: ===================================== +//= rAthena 1.0 +//===== Description: ========================================= +//= [AEGIS Conversion] +//= Tierra Gorge Battleground. +//= - Winning Team: 3 badges +//= - Losing Team: 1 badge +//===== Additional Comments: ================================= +//= 1.0 First Version. +//= 1.1 Corrected setwalls for barricades. [L0ne_W0lf] +//= 1.2 Updated 'waitingroom' to support required zeny/lvl. [Kisuka] +//= 1.3 Removed MaxLvl check in waitingrooms. +//============================================================ + +// Waiting Room NPCs +//============================================================ +bat_room,57,227,5 script Lieutenant Kalos 418,{ + end; + +OnInit: + waitingroom "Battle Station",11,"start#bat_a01::OnReadyCheck",1,0,80; + end; + +OnEnterBG: + set $@TierraBG1_id1, waitingroom2bg("bat_a01",50,374,"start#bat_a01::OnGuillaumeQuit",""); + end; +} + +bat_room,58,204,1 script Lieutenant Eyor 414,{ + end; + +OnInit: + waitingroom "Battle Station",11,"start#bat_a01::OnReadyCheck",1,0,80; + end; + +OnEnterBG: + set $@TierraBG1_id2, waitingroom2bg("bat_a01",42,16,"start#bat_a01::OnCroixQuit",""); + end; +} + +bat_room,1,151,3 script #bat_a01_timer 844,{ + end; + +onInit: +OnEnable: + initnpctimer; + end; + +OnStop: + stopnpctimer; + end; + +OnTimer1000: + stopnpctimer; + initnpctimer; + set .@chk_bat_a01,getmapusers("bat_a01"); + if (.@chk_bat_a01 < 1) { + set $@TierraBG1,0; set $@TierraBG1_Victory, 0; + if( $@TierraBG1_id1 ) { bg_destroy $@TierraBG1_id1; set $@TierraBG1_id1, 0; } + if( $@TierraBG1_id2 ) { bg_destroy $@TierraBG1_id2; set $@TierraBG1_id2, 0; } + donpcevent "start#bat_a01::OnReadyCheck"; + } + end; +} + +bat_a01,352,342,0 script #bat_a01_quest_a -1,5,5,{ + end; + +OnTouch: + if (checkquest(2069) < 0) + setquest 2069; + end; +} + +bat_a01,353,52,0 script #bat_a01_quest_b -1,5,5,{ + end; + +OnTouch: + if (checkquest(2069) < 0) + setquest 2069; + end; +} + +bat_room,57,220,0 warp back_bgrooma01a 1,1,bat_room,154,150 +bat_room,57,211,0 warp back_bgrooma01b 1,1,bat_room,154,150 + +// Tierra Gorge Battleground Engine +//============================================================ +bat_a01,15,15,3 script start#bat_a01 844,{ +OnInit: + mapwarp "bat_a01","bat_room",154,150; + end; + +OnEnable: + donpcevent "OBJ#bat_a01_a::Onkill"; + donpcevent "OBJ#bat_a01_a::OnEnable"; + donpcevent "OBJ#bat_a01_b::Onkill"; + donpcevent "OBJ#bat_a01_b::OnEnable"; + donpcevent "barricade#bat_a01_a::Onkill"; + donpcevent "barricade#bat_a01_a::OnEnable"; + donpcevent "barricade#bat_a01_b::Onkill"; + donpcevent "barricade#bat_a01_b::OnEnable"; + donpcevent "OBJ#bat_a01_n::Onkill"; + donpcevent "OBJ#bat_a01_n::OnEnable"; + donpcevent "NOBJ_mob#bat_a01_a::Onkill"; + donpcevent "NOBJ_mob#bat_a01_b::Onkill"; + donpcevent "Battle Therapist#a01_a::OnEnable"; + donpcevent "Battle Therapist#a01_b::OnEnable"; + donpcevent "countdown#bat_a01::OnEnable"; + disablenpc "Guillaume Blacksmith#a01"; + disablenpc "Croix Blacksmith#bat_a01"; + disablenpc "Guillaume Vintenar#a01_a"; + disablenpc "Croix Vintenar#a01_b"; + end; + +OnGuillaumeQuit: +OnCroixQuit: + bg_leave; + end; + +OnReadyCheck: + if( $@TierraBG1 ) + end; + set .@Guillaume, getwaitingroomstate(0,"Lieutenant Kalos"); + set .@Croix, getwaitingroomstate(0,"Lieutenant Eyor"); + if( !.@Guillaume && !.@Croix ) { + donpcevent "#bat_a01_timer::OnStop"; + end; + } + else if( .@Guillaume < 10 || .@Croix < 10 ) + end; + set $@TierraBG1,1; + donpcevent "Lieutenant Kalos::OnEnterBG"; + donpcevent "Lieutenant Eyor::OnEnterBG"; + donpcevent "start#bat_a01::onEnable"; + bg_warp $@TierraBG1_id1,"bat_a01",352,342; + bg_warp $@TierraBG1_id2,"bat_a01",353,52; + initnpctimer; + end; + +OnTimer10000: + stopnpctimer; + donpcevent "#bat_a01_timer::OnEnable"; + end; +} + +bat_a01,15,16,3 script OBJ#bat_a01_a 844,{ +OnEnable: + bg_monster $@TierraBG1_id1,"bat_a01",177,345,"Food Storage",1909,"OBJ#bat_a01_a::OnMyMobDead"; + end; + +Onkill: + killmonster "bat_a01","OBJ#bat_a01_a::OnMyMobDead"; + end; + +OnMyMobDead: + if (mobcount("bat_a01","OBJ#bat_a01_a::OnMyMobDead") < 1) { + donpcevent "Battle Therapist#a01_a::OnStop"; + donpcevent "Battle Therapist#a01_b::OnStop"; + set $@TierraBG1_Victory, 2; + enablenpc "Guillaume Vintenar#a01_a"; + enablenpc "Croix Vintenar#a01_b"; + mapannounce "bat_a01", "Croix Vintenar Swandery: We destroyed Guillaume's Food Storage. We won that! Wow!",bc_map,"0xFFCE00"; + bg_warp $@TierraBG1_id1,"bat_a01",50,374; + bg_warp $@TierraBG1_id2,"bat_a01",42,16; + } + end; +} + +bat_a01,15,17,3 script OBJ#bat_a01_b 844,{ +OnEnable: + bg_monster $@TierraBG1_id2,"bat_a01",167,50,"Food Depot",1910,"OBJ#bat_a01_b::OnMyMobDead"; + end; + +Onkill: + killmonster "bat_a01","OBJ#bat_a01_b::OnMyMobDead"; + end; + +OnMyMobDead: + if (mobcount("bat_a01","OBJ#bat_a01_b::OnMyMobDead") < 1) { + donpcevent "Battle Therapist#a01_a::OnStop"; + donpcevent "Battle Therapist#a01_b::OnStop"; + set $@TierraBG1_Victory, 1; + enablenpc "Guillaume Vintenar#a01_a"; + enablenpc "Croix Vintenar#a01_b"; + mapannounce "bat_a01", "Guillaume Vintenar Axl Rose : We destroyed Croix's Food Storage. We won that! Wow!",bc_map,"0xFFCE00"; + bg_warp $@TierraBG1_id1,"bat_a01",50,374; + bg_warp $@TierraBG1_id2,"bat_a01",42,16; + } + end; +} + +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",186,266,16,6,1,"bat_a01_c1"; + end; + +Onkill: + killmonster "bat_a01","barricade#bat_a01_a::OnMyMobDead"; + delwall "bat_a01_c1"; + end; + +OnMyMobDead: + if (mobcount("bat_a01","barricade#bat_a01_a::OnMyMobDead") < 17) { + killmonster "bat_a01","barricade#bat_a01_a::OnMyMobDead"; + delwall "bat_a01_c1"; + enablenpc "Guillaume Blacksmith#a01"; + mapannounce "bat_a01", "Guillaume Vintenar Axl Rose : The Barricade in the valley has been destroyed! Where's the Blacksmith? We need to rebuild the Barricade!",bc_map,"0xFFCE00"; + } + end; +} + +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",170,129,16,6,1,"bat_a01_g1"; + end; + +Onkill: + killmonster "bat_a01","barricade#bat_a01_b::OnMyMobDead"; + delwall "bat_a01_g1"; + end; + +OnMyMobDead: + if (mobcount("bat_a01","barricade#bat_a01_b::OnMyMobDead") < 17) { + killmonster "bat_a01","barricade#bat_a01_b::OnMyMobDead"; + delwall "bat_a01_g1"; + enablenpc "Croix Blacksmith#bat_a01"; + mapannounce "bat_a01", "Croix Vintenar Swandery : The Barricade in the valley has been destroyed! Where's the Blacksmith? We need to rebuild the Barricade!",bc_map,"0xFFCE00"; + } + end; +} + +bat_a01,15,20,3 script OBJ#bat_a01_n 844,{ +OnEnable: + monster "bat_a01",273,203,"Neutrality Flag",1911,1,"OBJ#bat_a01_n::OnMyMobDead"; + end; + +Onkill: + killmonster "bat_a01","OBJ#bat_a01_n::OnMyMobDead"; + end; + +OnMyMobDead: + if (mobcount("bat_a01","OBJ#bat_a01_n::OnMyMobDead") < 17) { + bg_team_setxy getcharid(4),56,212; + if (getcharid(4) == $@TierraBG1_id1) { + donpcevent "NOBJ_mob#bat_a01_a::OnEnable"; + mapannounce "bat_a01", "Guillaume captured a Neutrality Flag, so they have an advantage.",bc_map,"0xFFCE00"; + } + else { + donpcevent "NOBJ_mob#bat_a01_b::OnEnable"; + mapannounce "bat_a01", "Croix captured a Neutrality Flag, so they have an advantage.",bc_map,"0xFFCE00"; + } + } + end; +} + +bat_a01,15,21,3 script NOBJ_mob#bat_a01_a 844,{ +OnEnable: + donpcevent "NOBJ_mob#bat_a01_b::Onkill"; + bg_monster $@TierraBG1_id1,"bat_a01",272,204,"Guillaume Camp Guardian",1949,"NOBJ_mob#bat_a01_a::OnMyMobDead"; + bg_monster $@TierraBG1_id1,"bat_a01",272,213,"Guillaume Camp Guardian",1949,"NOBJ_mob#bat_a01_a::OnMyMobDead"; + bg_monster $@TierraBG1_id1,"bat_a01",273,197,"Guillaume Camp Guardian",1950,"NOBJ_mob#bat_a01_a::OnMyMobDead"; + end; + +Onkill: + killmonster "bat_a01","NOBJ_mob#bat_a01_a::OnMyMobDead"; + end; + +OnMyMobDead: + end; +} + +bat_a01,15,22,3 script NOBJ_mob#bat_a01_b 844,{ +OnEnable: + donpcevent "NOBJ_mob#bat_a01_a::Onkill"; + bg_monster $@TierraBG1_id2,"bat_a01",272,204,"Croix Camp Guardian",1949,"NOBJ_mob#bat_a01_a::OnMyMobDead"; + bg_monster $@TierraBG1_id2,"bat_a01",272,213,"Croix Camp Guardian",1949,"NOBJ_mob#bat_a01_a::OnMyMobDead"; + bg_monster $@TierraBG1_id2,"bat_a01",273,197,"Croix Camp Guardian",1950,"NOBJ_mob#bat_a01_a::OnMyMobDead"; + end; + +Onkill: + killmonster "bat_a01","NOBJ_mob#bat_a01_b::OnMyMobDead"; + end; + +OnMyMobDead: + end; +} + +bat_a01,185,270,1 script Guillaume Blacksmith#a01 851,{ + if (getcharid(4) == $@TierraBG1_id1) { + mes "[Guillaume Blacksmith]"; + mes "We are in urgency! The Barricade has been destroyed!"; + mes "We can repair the Barricade with ^3131FF50 Stones, 3 Sinew of Bear, 500 Metal Fragments, 30 Rough Elunium and 100 Gold.^000000"; + mes "We have it all except for the 50 Stones!"; + next; + switch(select("Repair.:Leave it.")) { + case 1: + if (countitem(7049) > 49) { + mes "[Guillaume Blacksmith]"; + mes "You brought enough stones! Let's go and repair."; + next; + mes ".."; + next; + mes "...."; + next; + mes "......"; + next; + mes "........"; + next; + mes ".........."; + next; + mes "............"; + next; + mes ".............."; + next; + mes "[Guillaume Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage."; + next; + mes "[Guillaume Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage and shape the Barricade."; + next; + mes "[Guillaume Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger."; + next; + mes "[Guillaume Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger. Now decorate with Metal Fragments."; + next; + mes "[Guillaume Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger. Decorate with Metal Fragments, and plait stones with Sinew of Bear!"; + next; + mes ".............."; + mes ".............."; + mes ".............."; + mes ".............."; + mes ".............."; + next; + specialeffect EF_REPAIRWEAPON; + mes "[Guillaume Blacksmith]"; + mes "Wow! It's done."; + mes "We are relieved."; + delitem 7049,50; //Stone + donpcevent "barricade#bat_a01_a::OnEnable"; + close2; + disablenpc "Guillaume Blacksmith#a01"; + end; + } + else { + mes "[Guillaume Blacksmith]"; + mes "You don't have enough Stones!"; + next; + mes "[Guillaume Blacksmith]"; + mes "^3131FFWe need 50 Stones.^000000"; + mes "We are busy, so please hurry."; + close; + } + case 2: + mes "[Guillaume Blacksmith]"; + mes "There are enemies coming! Let's evacuate from here!"; + close; + } + } + else { + mes "[Guillaume Blacksmith]"; + mes "There the enemy is coming!"; + close; + } + +OnInit: + disablenpc "Guillaume Blacksmith#a01"; + end; +} + +bat_a01,170,121,5 script Croix Blacksmith#bat_a01 851,{ + if (getcharid(4) == $@TierraBG1_id2) { + mes "[Croix Blacksmith]"; + mes "We are in urgency! The Barricade has been destroyed!"; + mes "We can repair the Barricade with ^3131FF50 Stones, 3 Sinew of Bear, 500 Metal Fragments, 30 Rough Elunium and 100 Gold.^000000"; + mes "We have it all except for the 50 Stones!"; + next; + switch(select("Repair.:Leave it.")) { + case 1: + if (countitem(7049) > 49) { + mes "[Croix Blacksmith]"; + mes "You brought enough stones! Let's go and repair."; + next; + mes ".."; + next; + mes "...."; + next; + mes "......"; + next; + mes "........"; + next; + mes ".........."; + next; + mes "............"; + next; + mes ".............."; + next; + mes "[Croix Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage."; + next; + mes "[Croix Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage and shape the Barricade."; + next; + mes "[Croix Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger."; + next; + mes "[Croix Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger. Now decorate with Metal Fragments."; + next; + mes "[Croix Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger. Decorate with Metal Fragments, and plait stones with Sinew of Bear!"; + next; + mes ".............."; + mes ".............."; + mes ".............."; + mes ".............."; + mes ".............."; + next; + specialeffect EF_REPAIRWEAPON; + mes "[Croix Blacksmith]"; + mes "Wow! It's done."; + mes "We are relieved."; + delitem 7049,50; //Stone + donpcevent "barricade#bat_a01_b::OnEnable"; + close2; + disablenpc "Croix Blacksmith#bat_a01"; + end; + } + else { + mes "[Croix Blacksmith]"; + mes "You don't have enough Stones!"; + next; + mes "[Croix Blacksmith]"; + mes "^3131FFWe need 50 Stone.^000000"; + mes "We are busy, so please hurry."; + close; + } + case 2: + mes "[Croix Blacksmith]"; + mes "There are enemies coming! Let's evacuate from here!"; + close; + } + } + else { + mes "[Croix Blacksmith]"; + mes "There, the enemy is coming!"; + close; + } + +OnInit: + disablenpc "Croix Blacksmith#bat_a01"; + end; +} + +bat_a01,53,377,3 script Battle Therapist#a01_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; + end; + +OnInit: + initnpctimer; + end; + +OnEnable: + stopnpctimer; + initnpctimer; + enablenpc "Battle Therapist#a01_a"; + end; + +Onstop: + disablenpc "bat_a01_rp1_a_warp"; + disablenpc "Battle Therapist#a01_a"; + stopnpctimer; + end; + +OnTimer25000: + specialeffect EF_SANCTUARY; + enablenpc "bat_a01_rp1_a_warp"; + end; + +OnTimer26000: + disablenpc "bat_a01_rp1_a_warp"; + end; + +OnTimer26500: + donpcevent "Battle Therapist#a01_a::OnEnable"; + end; +} + +bat_a01,51,375,0 script bat_a01_rp1_a_warp -1,10,10,{ +OnInit: + disablenpc "bat_a01_rp1_a_warp"; + end; + +OnTouch_: + percentheal 100,100; + warp "bat_a01",352,342; + end; +} + +bat_a01,45,19,3 script Battle Therapist#a01_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; + end; + +OnInit: + initnpctimer; + end; + +OnEnable: + stopnpctimer; + initnpctimer; + enablenpc "Battle Therapist#a01_b"; + end; + +Onstop: + disablenpc "bat_a01_rp1_b_warp"; + disablenpc "Battle Therapist#a01_b"; + stopnpctimer; + end; + +OnTimer25000: + specialeffect EF_SANCTUARY; + enablenpc "bat_a01_rp1_b_warp"; + end; + +OnTimer26000: + disablenpc "bat_a01_rp1_b_warp"; + end; + +OnTimer26500: + donpcevent "Battle Therapist#a01_b::OnEnable"; + end; +} + +bat_a01,43,17,0 script bat_a01_rp1_b_warp -1,10,10,{ +OnInit: + disablenpc "bat_a01_rp1_b_warp"; + end; + +OnTouch: + percentheal 100,100; + warp "bat_a01",353,52; + end; +} + +bat_a01,60,216,3 script Valley Ghost#bat_a01_n 950,{ + specialeffect2 EF_HEAL; + mes "[Valley Ghost]"; + mes "Boo...Boo..."; + close; + +OnInit: + initnpctimer; + end; + +OnEnable: + stopnpctimer; + initnpctimer; + end; + +OnTimer25000: + specialeffect EF_SANCTUARY; + enablenpc "bat_a01_rp1_n_warp"; + end; + +OnTimer26000: + disablenpc "bat_a01_rp1_n_warp"; + end; + +OnTimer26500: + donpcevent "Valley Ghost#bat_a01_n::OnEnable"; + end; +} + +bat_a01,55,213,0 script bat_a01_rp1_n_warp -1,10,10,{ +OnInit: + disablenpc "bat_a01_rp1_n_warp"; + end; + +OnTouch: + percentheal 100,100; + warp "bat_a01",301,209; + end; +} + +bat_a01,194,267,0 script barri_warp_up#bat_a01_a -1,7,0,{ +OnTouch: + if (getcharid(4) == $@TierraBG1_id1) + warp "bat_a01",194,261; + end; +} + +bat_a01,194,265,0 script barri_warp_down#bat_a01a -1,7,0,{ +OnTouch: + if (getcharid(4) == $@TierraBG1_id1) + warp "bat_a01",194,270; + end; +} + +bat_a01,177,130,0 script barri_warp_up#bat_a01_b -1,7,0,{ +OnTouch: + if (getcharid(4) == $@TierraBG1_id2) + warp "bat_a01",178,125; + end; +} + +bat_a01,177,128,0 script barri_warp_down#bat_a01b -1,7,0,{ +OnTouch: + if (getcharid(4) == $@TierraBG1_id2) + warp "bat_a01",178,134; + end; +} + +bat_a01,352,342,0 script A_CODE#bat_a01 -1,5,5,{ +OnTouch: + set .@chk_bfquest,checkquest(2069); + if ((.@chk_bfquest == 0) || (.@chk_bfquest == 1)) + setquest 2069; + end; +} + +bat_a01,353,52,0 script B_CODE#bat_a01 -1,5,5,{ +OnTouch: + set .@chk_bfquest,checkquest(2069); + if ((.@chk_bfquest == 0) || (.@chk_bfquest == 1)) + setquest 2069; + end; +} + +bat_a01,169,227,0 script underladd#bat_a01_1 45,1,1,{ +OnTouch_: + warp "bat_a01",178,228; + end; +} + +bat_a01,208,164,0 script underladd#bat_a01_2 45,1,1,{ +OnTouch_: + warp "bat_a01",200,171; + end; +} + +bat_a01,171,309,3 script Guillaume Camp#flag1 973,{ end; } +bat_a01,149,310,3 script Guillaume Camp#flag2 973,{ end; } +bat_a01,119,336,3 script Guillaume Camp#flag3 973,{ end; } +bat_a01,118,357,3 script Guillaume Camp#flag4 973,{ end; } +bat_a01,150,380,3 script Guillaume Camp#flag5 973,{ end; } +bat_a01,173,380,3 script Guillaume Camp#flag6 973,{ end; } +bat_a01,210,344,3 script Guillaume Camp#flag7 973,{ end; } +bat_a01,350,325,3 script Guillaume Camp#flag8 973,{ end; } +bat_a01,358,325,3 script Guillaume Camp#flag9 973,{ end; } + +bat_a01,138,12,3 script Croix Camp#flag1 974,{ end; } +bat_a01,108,36,3 script Croix Camp#flag2 974,{ end; } +bat_a01,108,63,3 script Croix Camp#flag3 974,{ end; } +bat_a01,136,87,3 script Croix Camp#flag4 974,{ end; } +bat_a01,167,86,3 script Croix Camp#flag5 974,{ end; } +bat_a01,199,49,3 script Croix Camp#flag6 974,{ end; } +bat_a01,168,16,3 script Croix Camp#flag7 974,{ end; } +bat_a01,357,74,3 script Croix Camp#flag8 974,{ end; } +bat_a01,348,74,3 script Croix Camp#flag9 974,{ end; } + +bat_a01,53,377,3 script Guillaume Vintenar#a01_a 419,{ + if (getcharid(4) == $@TierraBG1_id1) { + if ($@TierraBG1_Victory == 1) { + set .@your_medal,countitem(7828); + set .@medal_gap, 500 - .@your_medal; + if (.@medal_gap > 2) { + mes "[Axl Rose]"; + mes "Blessed Guillaume!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7828,3; //BF_Badge1 + } + 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 7828,.@medal_gap; //BF_Badge1 + } + } + else { + set .@your_medal,countitem(7828); + set .@medal_gap, 500 - .@your_medal; + if (.@medal_gap > 0) { + 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, and next time you will definitely win."; + close2; + getitem 7828,1; //BF_Badge1 + } + 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, and next time you will definitely win."; + close2; + getitem 7828,.@medal_gap; //BF_Badge1 + } + } + } + else { + if ($@TierraBG1_Victory == 2) { + set .@your_medal,countitem(7828); + set .@medal_gap, 500 - .@your_medal; + if (.@medal_gap > 0) { + 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, and next time you will definitely win."; + close2; + getitem 7828,1; //BF_Badge1 + } + 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, and next time you will definitely win."; + close2; + getitem 7828,.@medal_gap; //BF_Badge1 + } + } + else { + set .@your_medal,countitem(7828); + set .@medal_gap, 500 - .@your_medal; + if (.@medal_gap > 2) { + mes "[Axl Rose]"; + mes "Blessed Guillaume!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7828,3; //BF_Badge1 + } + else { + mes "[Axl Rose]"; + mes "Blessed Guillaume!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign of victory."; + close2; + getitem 7828,.@medal_gap; //BF_Badge1 + } + } + } + bg_leave; + warp "bat_room",154,150; + end; + +OnInit: + disablenpc "Guillaume Vintenar#a01_a"; + end; +} + +bat_a01,45,19,3 script Croix Vintenar#a01_b 415,{ + if (getcharid(4) == $@TierraBG1_id2) { + if ($@TierraBG1_Victory == 2) { + set .@your_medal,countitem(7828); + set .@medal_gap, 500 - .@your_medal; + if (.@medal_gap > 2) { + mes "[Swandery]"; + mes "Blessed Croix!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7828,3; //BF_Badge1 + } + else { + mes "[Swandery]"; + mes "Blessed Croix!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7828,.@medal_gap; //BF_Badge1 + } + } + else { + set .@your_medal,countitem(7828); + set .@medal_gap, 500 - .@your_medal; + if (.@medal_gap > 0) { + 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 7828,1; //BF_Badge1 + } + 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 7828,.@medal_gap; //BF_Badge1 + } + } + } + else { + if ($@TierraBG1_Victory == 1) { + set .@your_medal,countitem(7828); + set .@medal_gap, 500 - .@your_medal; + if (.@medal_gap > 0) { + 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 7828,1; //BF_Badge1 + } + 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 7828,.@medal_gap; //BF_Badge1 + } + } + else { + set .@your_medal,countitem(7828); + set .@medal_gap, 500 - .@your_medal; + if (.@medal_gap > 2) { + mes "[Swandery]"; + mes "Blessed Croix!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7828,3; //BF_Badge1 + } + else { + mes "[Swandery]"; + mes "Blessed Croix!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7828,.@medal_gap; //BF_Badge1 + } + } + } + bg_leave; + warp "bat_room",154,150; + end; + +OnInit: + disablenpc "Croix Vintenar#a01_b"; + end; +} + +bat_a01,1,5,3 script countdown#bat_a01 844,{ +OnEnable: + initnpctimer; + end; + +Onstop: + stopnpctimer; + end; + +OnTimer7000: + mapannounce "bat_a01", "Guillaume Vintenar Axl Rose : Let's attack to burn down Croix's Food Depot!",bc_map,"0xFF9900"; + end; + +OnTimer8000: + mapannounce "bat_a01", "Croix Vintenar Swandery : Master of Valhalla! Let us be gifted with unfailing faith and courage!",bc_map,"0xFF99CC"; + end; + +OnTimer1800000: + mapannounce "bat_a01", "Marollo VII : Guillaume Marollo, Croix Marollo! Marollo followers!",bc_map,"0x99CC00"; + end; + +OnTimer1803000: + mapannounce "bat_a01", "Marollo VII : Both camps are competitive, so no camp would be destroyed easily. That means the Marollo kingdoms will never be defeated!",bc_map,"0x99CC00"; + end; + +OnTimer1808000: + mapannounce "bat_a01", "Marollo VII : I think we'd better terminate the battle, and call it a draw.",bc_map,"0x99CC00"; + end; + +OnTimer1822000: + mapannounce "bat_a01", "Marollo VII : Hold your royalty and faith for a moment, and let's settle up the battle of Tierra Gorge.",bc_map,"0x99CC00"; + end; + +OnTimer1825000: + mapannounce "bat_a01", "Axl Rose, Swandery : Yes sir.",bc_map,"0x99CC00"; + end; + +OnTimer1830000: + mapwarp "bat_a01","bat_room",154,150; + donpcevent "countdown#bat_a01::Onstop"; + end; +} + +/* +bat_a01,351,75,3 script Croix Camp Soldier#bat_a01_guide 934,{ + mes "Loading..."; + close; +} + +bat_a01,356,326,3 script Guillaume Camp Soldier#bat_a01_guide 934,{ + mes "Loading..."; + close; +} +*/ + +/* +bat_a01,1,1,3 script Release all#a01 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_a01","bat_room",154,150; + end; + case 2: + mes "Cancelled."; + } + } +} +*/ + diff --git a/npc/battleground/tierra/tierra02.txt b/npc/battleground/tierra/tierra02.txt new file mode 100644 index 000000000..867946181 --- /dev/null +++ b/npc/battleground/tierra/tierra02.txt @@ -0,0 +1,947 @@ +//===== rAthena Script ======================================= +// BattleGround System - Tierra Gorge 2 +//===== By: ================================================== +//= L0ne_W0lf +//===== Current Version: ===================================== +//= 1.2 +//===== Compatible With: ===================================== +//= rAthena 1.0 +//===== Description: ========================================= +//= [AEGIS Conversion] +//= Second Tierra Gorge Battleground. +//= - Winning Team: 3 badges +//= - Losing Team: 1 badge +//===== Additional Comments: ================================= +//= 1.0 First Version. +//= 1.1 Updated 'waitingroom' to support required zeny/lvl. [Kisuka] +//= 1.2 Removed MaxLvl check in waitingrooms. +//============================================================ + +// Waiting Room NPCs +//============================================================ +bat_room,114,227,5 script Lieutenant Rundel 418,{ + end; + +OnInit: + waitingroom "Battle Station",11,"start#bat_a02::OnReadyCheck",1,0,80; + end; + +OnEnterBG: + set $@TierraBG2_id1, waitingroom2bg("bat_a02",50,374,"start#bat_a02::OnGuillaumeQuit",""); + end; +} + +bat_room,114,204,1 script Lieutenant Guerrit 414,{ + end; + +OnInit: + waitingroom "Battle Station",11,"start#bat_a02::OnReadyCheck",1,0,80; + end; + +OnEnterBG: + set $@TierraBG2_id2, waitingroom2bg("bat_a02",42,16,"start#bat_a02::OnCroixQuit",""); + end; +} + +bat_room,1,151,3 script #bat_a02_timer 844,{ + end; + +onInit: +OnEnable: + initnpctimer; + end; + +OnStop: + stopnpctimer; + end; + +OnTimer1000: + stopnpctimer; + initnpctimer; + set .@chk_bat_a02,getmapusers("bat_a02"); + if (.@chk_bat_a02 < 1) { + set $@TierraBG2,0; set $@TierraBG2_Victory, 0; + if( $@TierraBG2_id1 ) { bg_destroy $@TierraBG2_id1; set $@TierraBG2_id1, 0; } + if( $@TierraBG2_id2 ) { bg_destroy $@TierraBG2_id2; set $@TierraBG2_id2, 0; } + donpcevent "start#bat_a02::OnReadyCheck"; + } + end; +} + +bat_a02,352,342,0 script #bat_a02_quest_a -1,5,5,{ + end; + +OnTouch: + if (checkquest(2069) < 0) + setquest 2069; + end; +} + +bat_a02,353,52,0 script #bat_a02_quest_b -1,5,5,{ + end; + +OnTouch: + if (checkquest(2069) < 0) + setquest 2069; + end; +} + +bat_room,113,220,0 warp back_bgrooma02a 1,1,bat_room,154,150 +bat_room,113,211,0 warp back_bgrooma02b 1,1,bat_room,154,150 + +// Tierra Gorge Battleground Engine +//============================================================ +bat_a02,15,15,3 script start#bat_a02 844,{ +OnInit: + mapwarp "bat_a02","bat_room",154,150; + end; + +OnEnable: + donpcevent "OBJ#bat_a02_a::Onkill"; + donpcevent "OBJ#bat_a02_a::OnEnable"; + donpcevent "OBJ#bat_a02_b::Onkill"; + donpcevent "OBJ#bat_a02_b::OnEnable"; + donpcevent "barricade#bat_a02_a::Onkill"; + donpcevent "barricade#bat_a02_a::OnEnable"; + donpcevent "barricade#bat_a02_b::Onkill"; + donpcevent "barricade#bat_a02_b::OnEnable"; + donpcevent "OBJ#bat_a02_n::Onkill"; + donpcevent "OBJ#bat_a02_n::OnEnable"; + donpcevent "NOBJ_mob#bat_a02_a::Onkill"; + donpcevent "NOBJ_mob#bat_a02_b::Onkill"; + donpcevent "Battle Therapist#a02_a::OnEnable"; + donpcevent "Battle Therapist#a02_b::OnEnable"; + donpcevent "countdown#bat_a02::OnEnable"; + disablenpc "Guillaume Blacksmith#a02"; + disablenpc "Croix Blacksmith#bat_a02"; + disablenpc "Guillaume Vintenar#a02_a"; + disablenpc "Croix Vintenar#a02_b"; + end; + +OnGuillaumeQuit: +OnCroixQuit: + bg_leave; + end; + +OnReadyCheck: + if( $@TierraBG2 ) + end; + set .@Guillaume, getwaitingroomstate(0,"Lieutenant Rundel"); + set .@Croix, getwaitingroomstate(0,"Lieutenant Guerrit"); + if( !.@Guillaume && !.@Croix ) { + donpcevent "#bat_a02_timer::OnStop"; + end; + } + else if( .@Guillaume < 10 || .@Croix < 10 ) + end; + set $@TierraBG2,1; + donpcevent "Lieutenant Rundel::OnEnterBG"; + donpcevent "Lieutenant Guerrit::OnEnterBG"; + donpcevent "start#bat_a02::onEnable"; + bg_warp $@TierraBG2_id1,"bat_a02",352,342; + bg_warp $@TierraBG2_id2,"bat_a02",353,52; + initnpctimer; + end; + +OnTimer10000: + stopnpctimer; + donpcevent "#bat_a02_timer::OnEnable"; + end; +} + +bat_a02,15,16,3 script OBJ#bat_a02_a 844,{ +OnEnable: + bg_monster $@TierraBG2_id1,"bat_a02",177,345,"Food Storage",1909,"OBJ#bat_a02_a::OnMyMobDead"; + end; + +Onkill: + killmonster "bat_a02","OBJ#bat_a02_a::OnMyMobDead"; + end; + +OnMyMobDead: + if (mobcount("bat_a02","OBJ#bat_a02_a::OnMyMobDead") < 1) { + donpcevent "Battle Therapist#a02_a::OnStop"; + donpcevent "Battle Therapist#a02_b::OnStop"; + set $@TierraBG2_Victory, 2; + enablenpc "Guillaume Vintenar#a02_a"; + enablenpc "Croix Vintenar#a02_b"; + mapannounce "bat_a02", "Croix Vintenar Swandery: We destroyed Guillaume's Food Storage. We won that! Wow!",bc_map,"0xFFCE00"; + bg_warp $@TierraBG2_id1,"bat_a02",50,374; + bg_warp $@TierraBG2_id2,"bat_a02",42,16; + } + end; +} + +bat_a02,15,17,3 script OBJ#bat_a02_b 844,{ +OnEnable: + bg_monster $@TierraBG2_id2,"bat_a02",167,50,"Food Depot",1910,"OBJ#bat_a02_b::OnMyMobDead"; + end; + +Onkill: + killmonster "bat_a02","OBJ#bat_a02_b::OnMyMobDead"; + end; + +OnMyMobDead: + if (mobcount("bat_a02","OBJ#bat_a02_b::OnMyMobDead") < 1) { + donpcevent "Battle Therapist#a02_a::OnStop"; + donpcevent "Battle Therapist#a02_b::OnStop"; + set $@TierraBG2_Victory, 1; + enablenpc "Guillaume Vintenar#a02_a"; + enablenpc "Croix Vintenar#a02_b"; + mapannounce "bat_a02", "Guillaume Vintenar Axl Rose : We destroyed Croix's Food Storage. We won that! Wow!",bc_map,"0xFFCE00"; + bg_warp $@TierraBG2_id1,"bat_a02",50,374; + bg_warp $@TierraBG2_id2,"bat_a02",42,16; + } + end; +} + +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",186,266,16,6,1,"bat_a02_c1"; + end; + +Onkill: + killmonster "bat_a02","barricade#bat_a02_a::OnMyMobDead"; + delwall "bat_a02_c1"; + end; + +OnMyMobDead: + if (mobcount("bat_a02","barricade#bat_a02_a::OnMyMobDead") < 17) { + killmonster "bat_a02","barricade#bat_a02_a::OnMyMobDead"; + delwall "bat_a02_c1"; + enablenpc "Guillaume Blacksmith#a02"; + mapannounce "bat_a02", "Guillaume Vintenar Axl Rose : The Barricade in the valley has been destroyed! Where's the Blacksmith? We need to rebuild the Barricade!",bc_map,"0xFFCE00"; + } + end; +} + +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",170,129,16,6,1,"bat_a02_g1"; + end; + +Onkill: + killmonster "bat_a02","barricade#bat_a02_b::OnMyMobDead"; + delwall "bat_a02_g1"; + end; + +OnMyMobDead: + if (mobcount("bat_a02","barricade#bat_a02_b::OnMyMobDead") < 17) { + killmonster "bat_a02","barricade#bat_a02_b::OnMyMobDead"; + delwall "bat_a02_g1"; + enablenpc "Croix Blacksmith#bat_a02"; + mapannounce "bat_a02", "Croix Vintenar Swandery : The Barricade in the valley has been destroyed! Where's the Blacksmith? We need to rebuild the Barricade!",bc_map,"0xFFCE00"; + } + end; +} + +bat_a02,15,20,3 script OBJ#bat_a02_n 844,{ +OnEnable: + monster "bat_a02",273,203,"Neutrality Flag",1911,1,"OBJ#bat_a02_n::OnMyMobDead"; + end; + +Onkill: + killmonster "bat_a02","OBJ#bat_a02_n::OnMyMobDead"; + end; + +OnMyMobDead: + if (mobcount("bat_a02","OBJ#bat_a02_n::OnMyMobDead") < 17) { + bg_team_setxy getcharid(4),56,212; + if (getcharid(4) == $@TierraBG2_id1) { + donpcevent "NOBJ_mob#bat_a02_a::OnEnable"; + mapannounce "bat_a02", "Guillaume captured a Neutrality Flag, so they have an advantage.",bc_map,"0xFFCE00"; + } + else { + donpcevent "NOBJ_mob#bat_a02_b::OnEnable"; + mapannounce "bat_a02", "Croix captured a Neutrality Flag, so they have an advantage.",bc_map,"0xFFCE00"; + } + } + end; +} + +bat_a02,15,21,3 script NOBJ_mob#bat_a02_a 844,{ +OnEnable: + donpcevent "NOBJ_mob#bat_a02_b::Onkill"; + bg_monster $@TierraBG2_id1,"bat_a02",272,204,"Guillaume Camp Guardian",1949,"NOBJ_mob#bat_a02_a::OnMyMobDead"; + bg_monster $@TierraBG2_id1,"bat_a02",272,213,"Guillaume Camp Guardian",1949,"NOBJ_mob#bat_a02_a::OnMyMobDead"; + bg_monster $@TierraBG2_id1,"bat_a02",273,197,"Guillaume Camp Guardian",1950,"NOBJ_mob#bat_a02_a::OnMyMobDead"; + end; + +Onkill: + killmonster "bat_a02","NOBJ_mob#bat_a02_a::OnMyMobDead"; + end; + +OnMyMobDead: + end; +} + +bat_a02,15,22,3 script NOBJ_mob#bat_a02_b 844,{ +OnEnable: + donpcevent "NOBJ_mob#bat_a02_a::Onkill"; + bg_monster $@TierraBG2_id2,"bat_a02",272,204,"Croix Camp Guardian",1949,"NOBJ_mob#bat_a02_a::OnMyMobDead"; + bg_monster $@TierraBG2_id2,"bat_a02",272,213,"Croix Camp Guardian",1949,"NOBJ_mob#bat_a02_a::OnMyMobDead"; + bg_monster $@TierraBG2_id2,"bat_a02",273,197,"Croix Camp Guardian",1950,"NOBJ_mob#bat_a02_a::OnMyMobDead"; + end; + +Onkill: + killmonster "bat_a02","NOBJ_mob#bat_a02_b::OnMyMobDead"; + end; + +OnMyMobDead: + end; +} + +bat_a02,185,270,1 script Guillaume Blacksmith#a02 851,{ + if (getcharid(4) == $@TierraBG2_id1) { + mes "[Guillaume Blacksmith]"; + mes "We are in urgency! The Barricade has been destroyed!"; + mes "We can repair the Barricade with ^3131FF50 Stones, 3 Sinew of Bear, 500 Metal Fragments, 30 Rough Elunium and 100 Gold.^000000"; + mes "We have it all except for the 50 Stones!"; + next; + switch(select("Repair.:Leave it.")) { + case 1: + if (countitem(7049) > 49) { + mes "[Guillaume Blacksmith]"; + mes "You brought enough stones! Let's go and repair."; + next; + mes ".."; + next; + mes "...."; + next; + mes "......"; + next; + mes "........"; + next; + mes ".........."; + next; + mes "............"; + next; + mes ".............."; + next; + mes "[Guillaume Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage."; + next; + mes "[Guillaume Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage and shape the Barricade."; + next; + mes "[Guillaume Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger."; + next; + mes "[Guillaume Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger. Now decorate with Metal Fragments."; + next; + mes "[Guillaume Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger. Decorate with Metal Fragments, and plait stones with Sinew of Bear!"; + next; + mes ".............."; + mes ".............."; + mes ".............."; + mes ".............."; + mes ".............."; + next; + specialeffect EF_REPAIRWEAPON; + mes "[Guillaume Blacksmith]"; + mes "Wow! It's done."; + mes "We are relieved."; + delitem 7049,50; //Stone + donpcevent "barricade#bat_a02_a::OnEnable"; + close2; + disablenpc "Guillaume Blacksmith#a02"; + end; + } + else { + mes "[Guillaume Blacksmith]"; + mes "You don't have enough Stones!"; + next; + mes "[Guillaume Blacksmith]"; + mes "^3131FFWe need 50 Stones.^000000"; + mes "We are busy, so please hurry."; + close; + } + case 2: + mes "[Guillaume Blacksmith]"; + mes "There are enemies coming! Let's evacuate from here!"; + close; + } + } + else { + mes "[Guillaume Blacksmith]"; + mes "There the enemy is coming!"; + close; + } + +OnInit: + disablenpc "Guillaume Blacksmith#a02"; + end; +} + +bat_a02,170,121,5 script Croix Blacksmith#bat_a02 851,{ + if (getcharid(4) == $@TierraBG2_id2) { + mes "[Croix Blacksmith]"; + mes "We are in urgency! The Barricade has been destroyed!"; + mes "We can repair the Barricade with ^3131FF50 Stones, 3 Sinew of Bear, 500 Metal Fragments, 30 Rough Elunium and 100 Gold.^000000"; + mes "We have it all except for the 50 Stones!"; + next; + switch(select("Repair.:Leave it.")) { + case 1: + if (countitem(7049) > 49) { + mes "[Croix Blacksmith]"; + mes "You brought enough stones! Let's go and repair."; + next; + mes ".."; + next; + mes "...."; + next; + mes "......"; + next; + mes "........"; + next; + mes ".........."; + next; + mes "............"; + next; + mes ".............."; + next; + mes "[Croix Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage."; + next; + mes "[Croix Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage and shape the Barricade."; + next; + mes "[Croix Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger."; + next; + mes "[Croix Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger. Now decorate with Metal Fragments."; + next; + mes "[Croix Blacksmith]"; + mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger. Decorate with Metal Fragments, and plait stones with Sinew of Bear!"; + next; + mes ".............."; + mes ".............."; + mes ".............."; + mes ".............."; + mes ".............."; + next; + specialeffect EF_REPAIRWEAPON; + mes "[Croix Blacksmith]"; + mes "Wow! It's done."; + mes "We are relieved."; + delitem 7049,50; //Stone + donpcevent "barricade#bat_a02_b::OnEnable"; + close2; + disablenpc "Croix Blacksmith#bat_a02"; + end; + } + else { + mes "[Croix Blacksmith]"; + mes "You don't have enough Stones!"; + next; + mes "[Croix Blacksmith]"; + mes "^3131FFWe need 50 Stone.^000000"; + mes "We are busy, so please hurry."; + close; + } + case 2: + mes "[Croix Blacksmith]"; + mes "There are enemies coming! Let's evacuate from here!"; + close; + } + } + else { + mes "[Croix Blacksmith]"; + mes "There, the enemy is coming!"; + close; + } + +OnInit: + disablenpc "Croix Blacksmith#bat_a02"; + end; +} + +bat_a02,53,377,3 script Battle Therapist#a02_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; + end; + +OnInit: + initnpctimer; + end; + +OnEnable: + stopnpctimer; + initnpctimer; + enablenpc "Battle Therapist#a02_a"; + end; + +Onstop: + disablenpc "bat_a02_rp1_a_warp"; + disablenpc "Battle Therapist#a02_a"; + stopnpctimer; + end; + +OnTimer25000: + specialeffect EF_SANCTUARY; + enablenpc "bat_a02_rp1_a_warp"; + end; + +OnTimer26000: + disablenpc "bat_a02_rp1_a_warp"; + end; + +OnTimer26500: + donpcevent "Battle Therapist#a02_a::OnEnable"; + end; +} + +bat_a02,51,375,0 script bat_a02_rp1_a_warp -1,10,10,{ +OnInit: + disablenpc "bat_a02_rp1_a_warp"; + end; + +OnTouch_: + percentheal 100,100; + warp "bat_a02",352,342; + end; +} + +bat_a02,45,19,3 script Battle Therapist#a02_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; + end; + +OnInit: + initnpctimer; + end; + +OnEnable: + stopnpctimer; + initnpctimer; + enablenpc "Battle Therapist#a02_b"; + end; + +Onstop: + disablenpc "bat_a02_rp1_b_warp"; + disablenpc "Battle Therapist#a02_b"; + stopnpctimer; + end; + +OnTimer25000: + specialeffect EF_SANCTUARY; + enablenpc "bat_a02_rp1_b_warp"; + end; + +OnTimer26000: + disablenpc "bat_a02_rp1_b_warp"; + end; + +OnTimer26500: + donpcevent "Battle Therapist#a02_b::OnEnable"; + end; +} + +bat_a02,43,17,0 script bat_a02_rp1_b_warp -1,10,10,{ +OnInit: + disablenpc "bat_a02_rp1_b_warp"; + end; + +OnTouch: + percentheal 100,100; + warp "bat_a02",353,52; + end; +} + +bat_a02,60,216,3 script Valley Ghost#bat_a02_n 950,{ + specialeffect2 EF_HEAL; + mes "[Valley Ghost]"; + mes "Boo...Boo..."; + close; + +OnInit: + initnpctimer; + end; + +OnEnable: + stopnpctimer; + initnpctimer; + end; + +OnTimer25000: + specialeffect EF_SANCTUARY; + enablenpc "bat_a02_rp1_n_warp"; + end; + +OnTimer26000: + disablenpc "bat_a02_rp1_n_warp"; + end; + +OnTimer26500: + donpcevent "Valley Ghost#bat_a02_n::OnEnable"; + end; +} + +bat_a02,55,213,0 script bat_a02_rp1_n_warp -1,10,10,{ +OnInit: + disablenpc "bat_a02_rp1_n_warp"; + end; + +OnTouch: + percentheal 100,100; + warp "bat_a02",301,209; + end; +} + +bat_a02,194,267,0 script barri_warp_up#bat_a02_a -1,7,0,{ +OnTouch: + if (getcharid(4) == $@TierraBG2_id1) + warp "bat_a02",194,261; + end; +} + +bat_a02,194,265,0 script barri_warp_down#bat_a02a -1,7,0,{ +OnTouch: + if (getcharid(4) == $@TierraBG2_id1) + warp "bat_a02",194,270; + end; +} + +bat_a02,177,130,0 script barri_warp_up#bat_a02_b -1,7,0,{ +OnTouch: + if (getcharid(4) == $@TierraBG2_id2) + warp "bat_a02",178,125; + end; +} + +bat_a02,177,128,0 script barri_warp_down#bat_a02b -1,7,0,{ +OnTouch: + if (getcharid(4) == $@TierraBG2_id2) + warp "bat_a02",178,134; + end; +} + +bat_a02,352,342,0 script A_CODE#bat_a02 -1,5,5,{ +OnTouch: + set .@chk_bfquest,checkquest(2069); + if ((.@chk_bfquest == 0) || (.@chk_bfquest == 1)) + setquest 2069; + end; +} + +bat_a02,353,52,0 script B_CODE#bat_a02 -1,5,5,{ +OnTouch: + set .@chk_bfquest,checkquest(2069); + if ((.@chk_bfquest == 0) || (.@chk_bfquest == 1)) + setquest 2069; + end; +} + +bat_a02,169,227,0 script underladd#bat_a02_1 45,1,1,{ +OnTouch_: + warp "bat_a02",178,228; + end; +} + +bat_a02,208,164,0 script underladd#bat_a02_2 45,1,1,{ +OnTouch_: + warp "bat_a02",200,171; + end; +} + +bat_a02,171,309,3 script Guillaume Camp#flag11 973,{ end; } +bat_a02,149,310,3 script Guillaume Camp#flag12 973,{ end; } +bat_a02,119,336,3 script Guillaume Camp#flag13 973,{ end; } +bat_a02,118,357,3 script Guillaume Camp#flag14 973,{ end; } +bat_a02,150,380,3 script Guillaume Camp#flag15 973,{ end; } +bat_a02,173,380,3 script Guillaume Camp#flag16 973,{ end; } +bat_a02,210,344,3 script Guillaume Camp#flag17 973,{ end; } +bat_a02,350,325,3 script Guillaume Camp#flag18 973,{ end; } +bat_a02,358,325,3 script Guillaume Camp#flag19 973,{ end; } + +bat_a02,138,12,3 script Croix Camp#flag11 974,{ end; } +bat_a02,108,36,3 script Croix Camp#flag12 974,{ end; } +bat_a02,108,63,3 script Croix Camp#flag13 974,{ end; } +bat_a02,136,87,3 script Croix Camp#flag14 974,{ end; } +bat_a02,167,86,3 script Croix Camp#flag15 974,{ end; } +bat_a02,199,49,3 script Croix Camp#flag16 974,{ end; } +bat_a02,168,16,3 script Croix Camp#flag17 974,{ end; } +bat_a02,357,74,3 script Croix Camp#flag18 974,{ end; } +bat_a02,348,74,3 script Croix Camp#flag19 974,{ end; } + +bat_a02,53,377,3 script Guillaume Vintenar#a02_a 419,{ + if (getcharid(4) == $@TierraBG2_id1) { + if ($@TierraBG2_Victory == 1) { + set .@your_medal,countitem(7828); + set .@medal_gap, 500 - .@your_medal; + if (.@medal_gap > 2) { + mes "[Axl Rose]"; + mes "Blessed Guillaume!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7828,3; //BF_Badge1 + } + 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 7828,.@medal_gap; //BF_Badge1 + } + } + else { + set .@your_medal,countitem(7828); + set .@medal_gap, 500 - .@your_medal; + if (.@medal_gap > 0) { + 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, and next time you will definitely win."; + close2; + getitem 7828,1; //BF_Badge1 + } + 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, and next time you will definitely win."; + close2; + getitem 7828,.@medal_gap; //BF_Badge1 + } + } + } + else { + if ($@TierraBG2_Victory == 2) { + set .@your_medal,countitem(7828); + set .@medal_gap, 500 - .@your_medal; + if (.@medal_gap > 0) { + 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, and next time you will definitely win."; + close2; + getitem 7828,1; //BF_Badge1 + } + 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, and next time you will definitely win."; + close2; + getitem 7828,.@medal_gap; //BF_Badge1 + } + } + else { + set .@your_medal,countitem(7828); + set .@medal_gap, 500 - .@your_medal; + if (.@medal_gap > 2) { + mes "[Axl Rose]"; + mes "Blessed Guillaume!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7828,3; //BF_Badge1 + } + else { + mes "[Axl Rose]"; + mes "Blessed Guillaume!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign of victory."; + close2; + getitem 7828,.@medal_gap; //BF_Badge1 + } + } + } + bg_leave; + warp "bat_room",154,150; + end; + +OnInit: + disablenpc "Guillaume Vintenar#a02_a"; + end; +} + +bat_a02,45,19,3 script Croix Vintenar#a02_b 415,{ + if (getcharid(4) == $@TierraBG2_id2) { + if ($@TierraBG2_Victory == 2) { + set .@your_medal,countitem(7828); + set .@medal_gap, 500 - .@your_medal; + if (.@medal_gap > 2) { + mes "[Swandery]"; + mes "Blessed Croix!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7828,3; //BF_Badge1 + } + else { + mes "[Swandery]"; + mes "Blessed Croix!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7828,.@medal_gap; //BF_Badge1 + } + } + else { + set .@your_medal,countitem(7828); + set .@medal_gap, 500 - .@your_medal; + if (.@medal_gap > 0) { + 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 7828,1; //BF_Badge1 + } + 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 7828,.@medal_gap; //BF_Badge1 + } + } + } + else { + if ($@TierraBG2_Victory == 1) { + set .@your_medal,countitem(7828); + set .@medal_gap, 500 - .@your_medal; + if (.@medal_gap > 0) { + 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 7828,1; //BF_Badge1 + } + 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 7828,.@medal_gap; //BF_Badge1 + } + } + else { + set .@your_medal,countitem(7828); + set .@medal_gap, 500 - .@your_medal; + if (.@medal_gap > 2) { + mes "[Swandery]"; + mes "Blessed Croix!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7828,3; //BF_Badge1 + } + else { + mes "[Swandery]"; + mes "Blessed Croix!"; + mes "Let's enjoy our glorious victory!"; + mes ""+strcharinfo(0)+", it's a sign reflecting victory."; + close2; + getitem 7828,.@medal_gap; //BF_Badge1 + } + } + } + bg_leave; + warp "bat_room",154,150; + end; + +OnInit: + disablenpc "Croix Vintenar#a02_b"; + end; +} + +bat_a02,1,5,3 script countdown#bat_a02 844,{ +OnEnable: + initnpctimer; + end; + +Onstop: + stopnpctimer; + end; + +OnTimer7000: + mapannounce "bat_a02", "Guillaume Vintenar Axl Rose : Let's attack to burn down Croix's Food Depot!",bc_map,"0xFF9900"; + end; + +OnTimer8000: + mapannounce "bat_a02", "Croix Vintenar Swandery : Master of Valhalla! Let us be gifted with unfailing faith and courage!",bc_map,"0xFF99CC"; + end; + +OnTimer1800000: + mapannounce "bat_a02", "Marollo VII : Guillaume Marollo, Croix Marollo! Marollo followers!",bc_map,"0x99CC00"; + end; + +OnTimer1803000: + mapannounce "bat_a02", "Marollo VII : Both camps are competitive, so no camp would be destroyed easily. That means the Marollo kingdoms will never be defeated!",bc_map,"0x99CC00"; + end; + +OnTimer1808000: + mapannounce "bat_a02", "Marollo VII : I think we'd better terminate the battle, and call it a draw.",bc_map,"0x99CC00"; + end; + +OnTimer1822000: + mapannounce "bat_a02", "Marollo VII : Hold your royalty and faith for a moment, and let's settle up the battle of Tierra Gorge.",bc_map,"0x99CC00"; + end; + +OnTimer1825000: + mapannounce "bat_a02", "Axl Rose, Swandery : Yes sir.",bc_map,"0x99CC00"; + end; + +OnTimer1830000: + mapwarp "bat_a02","bat_room",154,150; + donpcevent "countdown#bat_a02::Onstop"; + end; +} + +/* +bat_a02,351,75,3 script Croix Camp Soldier#bat_a02_guide 934,{ + mes "Loading..."; + close; +} + +bat_a02,356,326,3 script Guillaume Camp Soldier#bat_a02_guide 934,{ + mes "Loading..."; + close; +} +*/ + +/* +bat_a02,1,1,3 script Release all#a02 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_a02","bat_room",154,150; + end; + case 2: + mes "Cancelled."; + } + } +} +*/ + diff --git a/npc/battleground/tierra/tierra_enter.txt b/npc/battleground/tierra/tierra_enter.txt new file mode 100644 index 000000000..4ee74ceca --- /dev/null +++ b/npc/battleground/tierra/tierra_enter.txt @@ -0,0 +1,383 @@ +//===== rAthena Script ======================================= +// BattleGround System - Tierra Gorge Entrance NPCs +//===== By: ================================================== +//= L0ne_W0lf +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena 1.0 +//===== Description: ========================================= +//= [AEGIS Conversion] +//= Tierra Gorge Battleground Entrance NPCs +//===== Additional Comments: ================================= +//= 1.0 First Version. +//= 1.1 Fixed silly copy paste errors. (bugreport:4401) +//============================================================ + +// First Tierra Gorge Officers - Guillaume +//============================================================ +bat_room,124,178,5 script Tierra Gorge Officer#01a 418,{ + 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 "[Guillaume Army Officer]"; + mes "Let's show the power of the Guillaume Army to those stinky Croixs!"; + next; + switch(select("I want to join your army!:End Conversation")) { + case 1: + if ((Class == job_Novice) || (BaseClass == Job_Supernovice)) { + mes "[Guillaume Army Officer]"; + mes "I'm very pleased that you want to join us and fight the Croix Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield."; + } + else { + if (BaseLevel < 80) { + mes "[Guillaume Army Officer]"; + mes "I'm very pleased that you want to join us and fight the Croix Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield."; + } + else { + set .@chk_urtime,checkquest(2069,PLAYTIME); + if ((.@chk_urtime == 0)|| (.@chk_urtime == 1)) { + mes "[Guillaume Army Officer]"; + mes "You seem to have just returned from the battlefield."; + mes "It's too early for you to go back. Go rest, and leave the enemies to us!"; + } + else { + if (.@chk_urtime == 2) + erasequest 2069; + set .@mapcount,getmapusers("bat_a01"); + if (.@mapcount > 0) { + mes "[Guillaume Army Officer]"; + mes "I've received a report informing me that an elite corps has been dispatched to the battlefield fighting the Croixs already."; + mes "Why don't you go wait for a while? I suggest you sharpen your weapons and prepare your supplies until then."; + } + else { + if ($@TierraBG1) { + mes "[Guillaume Army Officer]"; + mes "An elite corps is already standing by to be dispatched to the battlefield."; + mes "Why don't you go wait for a while? I suggest you sharpen your weapons and prepare your supplies until then."; + } + else { + mes "[Guillaume Army Officer]"; + mes "You definitely seem to be ready for battle!"; + mes "Go show the Croixs what fear truly means!"; + mes "Today, our cry of victory shall echo all over the battlefield!"; + close2; + warp "bat_room",57,223; + end; + } + } + } + } + } + break; + case 2: + mes "[Guillaume Army Officer]"; + mes "Today, we shall be victorious!"; + break; + } + close; +} + +bat_room,140,178,5 script Tierra Gorge Officer#02a 418,{ + 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 "[Guillaume Army Officer]"; + mes "Let's show the power of the Guillaume Army to those stinky Croixs!"; + next; + switch(select("I want to join your army!:End Conversation")) { + case 1: + if ((Class == job_Novice) || (BaseClass == Job_Supernovice)) { + mes "[Guillaume Army Officer]"; + mes "I'm very pleased that you want to join us and fight the Croix Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield."; + } + else { + if (BaseLevel < 80) { + mes "[Guillaume Army Officer]"; + mes "I'm very pleased that you want to join us and fight the Croix Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield."; + } + else { + set .@chk_urtime,checkquest(2069,PLAYTIME); + if (.@chk_urtime == 1) { + mes "[Guillaume Army Officer]"; + mes "You seem to have just returned from the battlefield."; + mes "It's too early for you to go back. Go rest, and leave the enemies to us!"; + } + else { + if (.@chk_urtime == 2) + erasequest 2069; + set .@mapcount,getmapusers("bat_a02"); + if (.@mapcount > 0) { + mes "[Guillaume Army Officer]"; + mes "I've received a report informing me that an elite corps has been dispatched to the battlefield fighting the Croixs already."; + mes "Why don't you go wait for a while? I suggest you sharpen your weapons and prepare your supplies until then."; + } + else { + if ($@TierraBG2) { + mes "[Guillaume Army Officer]"; + mes "An elite corps is already standing by to be dispatched to the battlefield."; + mes "Why don't you go wait for a while? I suggest you sharpen your weapons and prepare your supplies until then."; + } + else { + mes "[Guillaume Army Officer]"; + mes "You definitely seem to be ready for battle!"; + mes "Go show the Croixs what fear truly means!"; + mes "Today, our cry of victory shall echo all over the battlefield!"; + close2; + warp "bat_room",114,223; + end; + } + } + } + } + } + break; + case 2: + mes "[Guillaume Army Officer]"; + mes "Today, we shall be victorious!"; + break; + } + close; +} + +bat_room,127,178,5 script Guillaume Knight#1 417,{ + mes "[Guillaume Knight]"; + mes "Tierra Gorge consists of two steep sides placed vertically, and has ration depots for the Guillaume and Croix Armies at the 11 and 7 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."; + next; + mes "[Guillaume Knight]"; + mes "The healer of the battlefield will resurrect soldiers once every 25 seconds so that they can rejoin the battle."; + 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 "Those two rations depots are connected to each other through short and narrow paths, but the gates are blocked with barricades."; + mes "Think and move as quickly as you can. The victory of your army relies on your contribution."; + next; + mes "[Guillaume Knight]"; + mes "Please remember: when you join a battle, you will receive a token which indicates the set duration for which you cannot participate in the same type of battle."; + mes "You may check the duration by pressing the Alt+U keys."; + next; + mes "[Guillaume Knight]"; + mes "Are you ready to battle? Then apply with the recruiter next to me!"; + close; +} + +bat_room,143,178,5 script Guillaume Knight#2 417,{ + mes "[Guillaume Knight]"; + mes "Tierra Gorge consists of two steep sides placed vertically, and has ration depots for the Guillaume and Croix Armies at the 11 and 7 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."; + next; + mes "[Guillaume Knight]"; + mes "The healer of the battlefield will resurrect soldiers once every 25 seconds so that they can rejoin the battle."; + 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 "Those two rations depots are connected to each other through short and narrow paths, but the gates are blocked with barricades."; + mes "Think and move as quickly as you can. The victory of your army relies on your contribution."; + next; + mes "[Guillaume Knight]"; + mes "Please remember: when you join a battle, you will receive a token which indicates the set duration for which you cannot participate in the same type of battle."; + mes "You may check the duration by pressing the Alt+U keys."; + next; + mes "[Guillaume Knight]"; + mes "Are you ready to battle? Then apply with the recruiter next to me!"; + close; +} + +bat_room,127,121,1 script Croix Knight#1 413,{ + mes "[Croix Knight]"; + mes "Tierra Gorge consists of two steep sides placed vertically, and has ration depots for the Guillaume and Croix Armies at the 11 and 7 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."; + next; + mes "[Croix Knight]"; + mes "The healer of the battlefield will resurrect soldiers once every 25 seconds so that they can rejoin the battle."; + 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 "Those two rations depots are connected to each other through short and narrow paths, but the gates are blocked with barricades."; + mes "Think and move as quickly as you can. The victory of your army relies on your contribution."; + next; + mes "[Croix Knight]"; + mes "Please remember: when you join a battle, you will receive a token which indicates the set duration for which you cannot participate in the same type of battle."; + mes "You may check the duration by pressing the Alt+U keys."; + next; + mes "[Croix Knight]"; + mes "Are you ready to battle? Then apply with the recruiter next to me!"; + close; +} + +bat_room,143,121,1 script Croix Knight#2 413,{ + mes "[Croix Knight]"; + mes "Tierra Gorge consists of two steep sides placed vertically, and has ration depots for the Guillaume and Croix Armies at the 11 and 7 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."; + next; + mes "[Croix Knight]"; + mes "The healer of the battlefield will resurrect soldiers once every 25 seconds so that they can rejoin the battle."; + 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 "Those two rations depots are connected to each other through short and narrow paths, but the gates are blocked with barricades."; + mes "Think and move as quickly as you can. The victory of your army relies on your contribution."; + next; + mes "[Croix Knight]"; + mes "Please remember: when you join a battle, you will receive a token which indicates the set duration for which you cannot participate in the same type of battle."; + mes "You may check the duration by pressing the Alt+U keys."; + next; + mes "[Croix Knight]"; + mes "Are you ready to battle? Then apply with the recruiter next to me!"; + close; +} + +// Second Tierra Gorge Officers - Croix +//============================================================ +bat_room,125,121,1 script Tierra Gorge Officer#01b 414,{ + 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 "[Croix Army Officer]"; + mes "Let's show the power of the Croix Army to those stinky Guillaumes!"; + next; + switch(select("I want to join your army!:End Conversation")) { + case 1: + if ((Class == job_Novice) || (BaseClass == Job_Supernovice)) { + mes "[Croix Army Officer]"; + mes "I'm very pleased that you want to join us and fight the Guillaume Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield."; + } + else { + if (BaseLevel < 80) { + mes "[Croix Army Officer]"; + mes "I'm very pleased that you want to join us and fight the Guillaume Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield."; + } + else { + set .@chk_urtime,checkquest(2069,PLAYTIME); + if ((.@chk_urtime == 0)|| (.@chk_urtime == 1)) { + mes "[Croix Army Officer]"; + mes "You seem to have just returned from the battlefield."; + mes "It's too early for you to go back. Go rest, and leave the enemies to us!"; + } + else { + if (.@chk_urtime == 2) + erasequest 2069; + set .@mapcount,getmapusers("bat_a02"); + if (.@mapcount > 0) { + mes "[Croix Army Officer]"; + mes "I've received a report informing me that an elite corps has been dispatched to the battlefield fighting the Guillaume already."; + mes "Why don't you go wait for a while? I suggest you sharpen your weapons and prepare your supplies until then."; + } + else { + if ($@TierraBG1) { + mes "[Croix Army Officer]"; + mes "An elite corps is already standing by to be dispatched to the battlefield."; + mes "Why don't you go wait for a while? I suggest you sharpen your weapons and prepare your supplies until then."; + } + else { + mes "[Croix Army Officer]"; + mes "You definitely seem to be ready for battle!"; + mes "Go show the Guillaumes what fear truly means!"; + mes "Today, our cry of victory shall echo all over the battlefield!"; + close2; + warp "bat_room",57,207; + end; + } + } + } + } + } + break; + case 2: + mes "[Croix Army Officer]"; + mes "Today, we shall be victorious!"; + break; + } + close; +} + +bat_room,140,121,1 script Tierra Gorge Officer#02b 414,{ + 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 "[Croix Army Officer]"; + mes "Let's show the power of the Croix Army to those stinky Guillaumes!"; + next; + switch(select("I want to join your army!:End Conversation")) { + case 1: + if ((Class == job_Novice) || (BaseClass == Job_Supernovice)) { + mes "[Croix Army Officer]"; + mes "I'm very pleased that you want to join us and fight the Guillaume Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield."; + } + else { + if (BaseLevel < 80) { + mes "[Croix Army Officer]"; + mes "I'm very pleased that you want to join us and fight the Guillaume Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield."; + } + else { + set .@chk_urtime,checkquest(2069,PLAYTIME); + if (.@chk_urtime == 1) { + mes "[Croix Army Officer]"; + mes "You seem to have just returned from the battlefield."; + mes "It's too early for you to go back. Go rest, and leave the enemies to us!"; + } + else { + if (.@chk_urtime == 2) + erasequest 2069; + set .@mapcount,getmapusers("bat_a02"); + if (.@mapcount > 0) { + mes "[Croix Army Officer]"; + mes "I've received a report informing me that an elite corps has been dispatched to the battlefield fighting the Guillaume already."; + mes "Why don't you go wait for a while? I suggest you sharpen your weapons and prepare your supplies until then."; + } + else { + if ($@TierraBG2) { + mes "[Croix Army Officer]"; + mes "An elite corps is already standing by to be dispatched to the battlefield."; + mes "Why don't you go wait for a while? I suggest you sharpen your weapons and prepare your supplies until then."; + } + else { + mes "[Croix Army Officer]"; + mes "You definitely seem to be ready for battle!"; + mes "Go show the Guillaumes what fear truly means!"; + mes "Today, our cry of victory shall echo all over the battlefield!"; + close2; + warp "bat_room",114,207; + end; + } + } + } + } + } + break; + case 2: + mes "[Croix Army Officer]"; + mes "Today, we shall be victorious!"; + break; + } + close; +} |