diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-10-05 11:34:32 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2019-03-11 21:55:00 +0300 |
commit | 2f6d4516113059d9edbe71b085540c9cda92fa03 (patch) | |
tree | 4b9a4d9d3ddbff7d478f3f7363f395fd44036ecc /npc/custom | |
parent | d8215077643025d10527cbab22d6949a59d3258c (diff) | |
download | hercules-2f6d4516113059d9edbe71b085540c9cda92fa03.tar.gz hercules-2f6d4516113059d9edbe71b085540c9cda92fa03.tar.bz2 hercules-2f6d4516113059d9edbe71b085540c9cda92fa03.tar.xz hercules-2f6d4516113059d9edbe71b085540c9cda92fa03.zip |
Remove conf dir.
Diffstat (limited to 'npc/custom')
67 files changed, 0 insertions, 19833 deletions
diff --git a/npc/custom/bartershop.txt b/npc/custom/bartershop.txt deleted file mode 100644 index bcb61795e..000000000 --- a/npc/custom/bartershop.txt +++ /dev/null @@ -1,21 +0,0 @@ -//===== Hercules Script ====================================== -//= Barter shop demo -//===== By: ================================================== -//= 4144 -//===== Current Version: ===================================== -//= 1.0 -//===== Description: ========================================= -//= Barter shop demo in prontera. -//============================================================ - -prontera,159,284,4 trader Barter Shop#prt 4_M_KID1,{ -OnInit: - tradertype(NST_BARTER); - sellitem White_Herb, 100, Red_Potion, 2; - sellitem Blue_Herb, 200, Orange_Potion, 3; - sellitem Green_Herb, 100, Red_Potion, 4; - sellitem White_Herb, 100, Orange_Potion, 1; - sellitem Apple, -1, Orange_Potion, 1; - sellitem Praetorian_Shield, 100, Berserk_Potion, 10; - end; -} diff --git a/npc/custom/battleground/bg_common.txt b/npc/custom/battleground/bg_common.txt deleted file mode 100644 index 7ba3eecb0..000000000 --- a/npc/custom/battleground/bg_common.txt +++ /dev/null @@ -1,1328 +0,0 @@ -// ============================================================================== -// BattleGround System - Common NPCs -// ============================================================================== - -// BattleGround Warper - Entrance -// ********************************************************************* - -- script Maroll Battle Recruiter::BatRecruit 4_F_JOB_KNIGHT,{ - mes "[Maroll Battle Recruiter]"; - mes "Good day, adventurer."; - mes "I'm a knight from a far country called Maroll Kingdom."; - next; - mes "[Maroll Battle Recruiter]"; - mes "The two princes of the kingdom are now battling for the throne of Maroll, and are in need of experienced soldiers like you. How would you like to lend your power to one of the princes in the Maroll Kingdom?"; - next; - if( select("Join", "Don't Join") == 2 ) - { - mes "[Maroll Battle Recruiter]"; - mes "I'll always be stationed here for more soldiers. Feel free to come back whenever you're interested."; - close; - } - mes "[Maroll Battle Recruiter]"; - mes "May the war god bless you."; - close2; - warp "bat_room",155,150; - end; -} - -payon,189,104,3 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit1 4_F_JOB_KNIGHT -prontera,123,83,5 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit2 4_F_JOB_KNIGHT -rachel,149,138,5 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit3 4_F_JOB_KNIGHT -moc_ruins,75,162,5 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit4 4_F_JOB_KNIGHT -aldebaran,146,109,5 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit5 4_F_JOB_KNIGHT -lighthalzen,153,86,5 duplicate(BatRecruit) Maroll Battle Recruiter::BatRecruit6 4_F_JOB_KNIGHT - -// BattleGround Warper - Exit -// ********************************************************************* - -bat_room,148,150,4 script Teleporter#bat 4_F_TELEPORTER,{ - mes "[Teleporter]"; - mes "Do you wish to leave the battlefield? Use my service to return to town."; - next; - if( select("Leave", "Don't Leave") == 2 ) - { - mes "[Teleporter]"; - mes "I'll be here whenever you're in need of my service."; - close; - } - - set .@spoint$, getsavepoint(0); - set .@x, getsavepoint(1); - set .@y, getsavepoint(2); - mes "[Teleporter]"; - mes "You will be sent back to " + .@spoint$ + "."; - close2; - warp .@spoint$, .@x, .@y; - end; -} - -// Kafra -// ********************************************************************* -bat_room,148,147,4 script Kafra Staff::kaf_bat 4_F_KAFRA9,{ - cutin "kafra_09",2; - callfunc "F_Kafra",0,2,1,150,0; -} - -// General Guillaume -// ********************************************************************* -bat_room,160,159,3 script General Guillaume 4_M_KY_KIYOM,{ - cutin "bat_kiyom2",2; - mes "[General Guillaume]"; - mes "Hot-blooded adventurer, we need your ability to win this battle."; - next; - cutin "bat_kiyom1",2; - mes "[General Guillaume]"; - mes "Our great king, Marcel Marollo VII, is very sick lately. His Majesty has declared that he chosen either me or Prince Croix as the next king amongst his 9 sons."; - next; - mes "[General Guillaume]"; - mes "Two kings can't share a nation!"; - mes "Only the one victorious from His Majesty's appointed battle will be enthroned."; - next; - mes "[General Guillaume]"; - mes "This is however, not just a battle between us. This battle will determine the future of this country. I pledge on my honor to prove that I'm the one who can protect this Maroll from outside threats."; - next; - if( select("Yes, I want to join you.", "End Conversation") == 2 ) - { - mes "[General Guillaume]"; - mes "I'll be the one who will capture the flag!"; - close2; - cutin "",255; - end; - } - cutin "bat_kiyom2",2; - mes "[General Guillaume]"; - mes "Welcome to my army, comrade."; - mes "Your eyes tell me that you're a soldier that I can trust."; - set Bat_Team,1; - next; - mes "[General Guillaume]"; - mes "Now, go upstairs and apply for battle with your comrades. I'm sure they'll welcome you whole-heartedly!"; - close2; - cutin "",255; - end; -} - -// General Croix -// ********************************************************************* -bat_room,160,140,3 script Prince Croix 4_M_CRU_CRUA,{ - cutin "bat_crua1",2; - mes "[Prince Croix]"; - mes "Wise adventurer, why don't you lend us your power for victory?"; - next; - cutin "bat_crua2",2; - mes "[Prince Croix]"; - mes "I do not wish to shed blood, but I have no choice but to fight for the possibility of peace and for the sake of my people."; - next; - mes "[Prince Croix]"; - mes "General Guillaume may have an advantage in this battle as he is the great general of Maroll, but that doesn't automatically mean he'll win. I want to win this battle so that I can grant a better future for my people."; - next; - if( select("Yes, I want to join you!", "End Conversation") == 2 ) - { - mes "[Prince Croix]"; - mes "For Maroll!"; - close2; - cutin "",255; - end; - } - mes "[Prince Croix]"; - mes "Thank you so much. I feel like I can win with the help of adventurers like you. Now, please go downstairs and join your comrades in sharpening their skills to fight the enemy!"; - set Bat_Team,2; - close2; - cutin "",255; - end; -} - -// Time calculation Function -// ********************************************************************* -function script Time2Str { - set .@time_left, getarg(0) - gettimetick(2); - - set .@Days, .@time_left / 86400; - set .@time_left, .@time_left - (.@Days * 86400); - set .@Hours, .@time_left / 3600; - set .@time_left, .@time_left - (.@Hours * 3600); - set .@Minutes, .@time_left / 60; - set .@time_left, .@time_left - (.@Minutes * 60); - - set .@Time$, ""; - if( .@Days > 1 ) - set .@Time$, .@Time$ + .@Days + " days, "; - else if( .@Days > 0 ) - set .@Time$, .@Time$ + .@Days + " day, "; - - if( .@Hours > 1 ) - set .@Time$, .@Time$ + .@Hours + " hours, "; - else if( .@Hours > 0 ) - set .@Time$, .@Time$ + .@Hours + " hour, "; - - if( .@Minutes > 1 ) - set .@Time$, .@Time$ + .@Minutes + " minutes, "; - else if( .@Minutes > 0 ) - set .@Time$, .@Time$ + .@Minutes + " minute, "; - - if( .@time_left > 1 || .@time_left == 0 ) - set .@Time$, .@Time$ + .@time_left + " seconds."; - else if( .@time_left == 1 ) - set .@Time$, .@Time$ + .@time_left + " second."; - - return .@Time$; -} - -// Guillaume Knight - Tierra Valley -// ********************************************************************* -bat_room,159,178,5 script Guillaume Knight#1 4_M_KY_SOLD,{ - mes "[Guillaume Knight]"; - mes "Tierra Gorge is a very steep canyon with two forts residing in the north and south ends of the map."; - next; - mes "[Guillaume Knight]"; - mes "There is a ration depot for the Guillaume and Croix armies at the 11 and 8 o'clock directions."; - next; - mes "[Guillaume Knight]"; - mes "The battle starts at your army's ship, and the goal is to advance and destroy your enemy's rations depot faster than they can destroy yours."; - mes ""; - mes "The army that captures the neutral flag in the center of the battlefield will be rewarded with extra regeneration points, meaning their soldiers will resurrect more than the other side, giving them an advantage."; - next; - mes "[Guillaume Knight]"; - mes "Are you ready for battle? Then apply with the recruiter next to me!"; - close; -} - -// Tierra Officer - Guillaume -// ********************************************************************* -bat_room,156,178,5 script Tierra Valley Officer#1 4_M_KY_KNT,{ - mes "[Tierra Officer]"; - if( Bat_Team == 2 ) - { - mes "Get out of here you stinky Croix!"; - close; - } - - if( Bat_Team == 0 ) - { - mes "Please sign up for an army with Prince Croix or General Guillaume!"; - close; - } - - mes "Hello " + strcharinfo(PC_NAME) + ", let's show the power of the Guillaume Army to those stinky Croixs!"; - next; - if( select("I want to join your army!", "End Conversation") == 2 ) - close; - - mes "[Tierra Officer]"; - if( BG_Delay_Tick >= gettimetick(2) ) - { - mes "You are a Deserter!!"; - mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; - close; - } - - if (questprogress(2069,PLAYTIME) == 2) - erasequest 2069; - if (questprogress(2069,PLAYTIME)) { - mes "You have received an indicator showing that you've participated in the Battle at Tierra Gorge. I can't let you participate in any other battles until the indicator goes off."; - next; - mes "[Tierra Officer]"; - mes "Stand-by for Tierra Gorge Battle until the time limit passes."; - close; - } - - if( BaseLevel < 80 ) - { - mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; - close; - } - - mes "Good luck!"; - close2; - warp "bat_room",85,224; - end; -} - -// Croix Knight - Tierra Valley -// ********************************************************************* -bat_room,159,121,1 script Croix Knight#1 4_M_CRU_SOLD,{ - mes "[Croix Knight]"; - mes "Tierra Gorge is a very steep canyon with two forts residing in the north and south ends of the map."; - next; - mes "[Croix Knight]"; - mes "There is a ration depot for the Guillaume and Croix armies at the 11 and 8 o'clock directions."; - next; - mes "[Croix Knight]"; - mes "The battle starts at your army's ship, and the goal is to advance and destroy your enemy's rations depot faster than they can destroy yours."; - mes ""; - mes "The army that captures the neutral flag in the center of the battlefield will be rewarded with extra regeneration points, meaning their soldiers will resurrect more than the other side, giving them an advantage."; - next; - mes "[Croix Knight]"; - mes "Are you ready for battle? Then apply with the recruiter next to me!"; - close; -} - -// Tierra Officer - Croix -// ********************************************************************* -bat_room,156,121,1 script Tierra Valley Officer#2 4_M_CRU_KNT,{ - mes "[Tierra Officer]"; - if( Bat_Team == 1 ) - { - mes "Get out of here you stupid Guillaume!"; - close; - } - - if( Bat_Team == 0 ) - { - mes "Please sign up for an army with Prince Croix or General Guillaume!"; - close; - } - - mes "Hello " + strcharinfo(PC_NAME) + ", let's show the power of the Croix Army to those stinky Guillaumes!"; - next; - if( select("I want to join your army!", "End Conversation") == 2 ) - close; - - mes "[Tierra Officer]"; - if( BG_Delay_Tick >= gettimetick(2) ) - { - mes "You are a Deserter!!"; - mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; - close; - } - - if (questprogress(2069,PLAYTIME) == 2) - erasequest 2069; - if (questprogress(2069,PLAYTIME)) { - mes "You have received an indicator showing that you've participated in the Battle at Tierra Gorge. I can't let you participate in any other battles until the indicator goes off."; - next; - mes "[Tierra Officer]"; - mes "Stand-by for Tierra Gorge Battle until the time limit passes."; - close; - } - - if( BaseLevel < 80 ) - { - mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; - close; - } - - mes "Good luck!"; - close2; - warp "bat_room",85,208; - end; -} - -// Guillaume Knight - Tierra -// ********************************************************************* -bat_room,167,178,5 script Guillaume Knight#2 4_M_KY_SOLD,{ - mes "[Guillaume Knight]"; - mes "Tierra Gorge is a very steep canyon with two forts residing in the north and south ends of the map."; - next; - mes "[Guillaume Knight]"; - mes "There is a ration depot for the Guillaume and Croix armies at the 11 and 8 o'clock directions."; - next; - mes "[Guillaume Knight]"; - mes "The battle starts at your army's ship, and the goal is to advance and destroy your enemy's rations depot faster than they can destroy yours."; - mes ""; - mes "The army that captures the neutral flag in the center of the battlefield will be rewarded with extra regeneration points, meaning their soldiers will resurrect more than the other side, giving them an advantage."; - next; - mes "[Guillaume Knight]"; - mes "Are you ready for battle? Then apply with the recruiter next to me!"; - close; -} - -// Tierra Officer - Guillaume -// ********************************************************************* -bat_room,164,178,5 script Tierra Valley Officer#3 4_M_KY_KNT,{ - mes "[Tierra Officer]"; - if( Bat_Team == 2 ) - { - mes "Get out of here you stinky Croix!"; - close; - } - - if( Bat_Team == 0 ) - { - mes "Please sign up for an army with Prince Croix or General Guillaume!"; - close; - } - - mes "Hello " + strcharinfo(PC_NAME) + ", let's show the power of the Guillaume Army to those stinky Croixs!"; - next; - if( select("I want to join your army!", "End Conversation") == 2 ) - close; - - mes "[Tierra Officer]"; - if( BG_Delay_Tick >= gettimetick(2) ) - { - mes "You are a Deserter!!"; - mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; - close; - } - - if (questprogress(2069,PLAYTIME) == 2) - erasequest 2069; - if (questprogress(2069,PLAYTIME)) { - mes "You have received an indicator showing that you've participated in the Battle at Tierra Gorge. I can't let you participate in any other battles until the indicator goes off."; - next; - mes "[Tierra Officer]"; - mes "Stand-by for Tierra Gorge Battle until the time limit passes."; - close; - } - - if( BaseLevel < 80 ) - { - mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; - close; - } - - mes "Good luck!"; - close2; - warp "bat_room",57,94; - end; -} - -// Croix Knight - Tierra -// ********************************************************************* -bat_room,167,121,1 script Croix Knight#2 4_M_CRU_SOLD,{ - mes "[Croix Knight]"; - mes "Tierra Gorge is a very steep canyon with two forts residing in the north and south ends of the map."; - next; - mes "[Croix Knight]"; - mes "There is a ration depot for the Guillaume and Croix armies at the 11 and 8 o'clock directions."; - next; - mes "[Croix Knight]"; - mes "The battle starts at your army's ship, and the goal is to advance and destroy your enemy's rations depot faster than they can destroy yours."; - mes ""; - mes "The army that captures the neutral flag in the center of the battlefield will be rewarded with extra regeneration points, meaning their soldiers will resurrect more than the other side, giving them an advantage."; - next; - mes "[Croix Knight]"; - mes "Are you ready for battle? Then apply with the recruiter next to me!"; - close; -} - -// Tierra Officer - Croix -// ********************************************************************* -bat_room,164,121,1 script Tierra Valley Officer#4 4_M_CRU_KNT,{ - mes "[Tierra Officer]"; - if( Bat_Team == 1 ) - { - mes "Get out of here you stupid Guillaume!"; - close; - } - - if( Bat_Team == 0 ) - { - mes "Please sign up for an army with Prince Croix or General Guillaume!"; - close; - } - - mes "Hello " + strcharinfo(PC_NAME) + ", let's show the power of the Croix Army to those stinky Guillaumes!"; - next; - if( select("I want to join your army!", "End Conversation") == 2 ) - close; - - mes "[Tierra Officer]"; - if( BG_Delay_Tick >= gettimetick(2) ) - { - mes "You are a Deserter!!"; - mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; - close; - } - - if (questprogress(2069,PLAYTIME) == 2) - erasequest 2069; - if (questprogress(2069,PLAYTIME)) { - mes "You have received an indicator showing that you've participated in the Battle at Tierra Gorge. I can't let you participate in any other battles until the indicator goes off."; - next; - mes "[Tierra Officer]"; - mes "Stand-by for Tierra Gorge Battle until the time limit passes."; - close; - } - - if( BaseLevel < 80 ) - { - mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; - close; - } - - mes "Good luck!"; - close2; - warp "bat_room",57,77; - end; -} - -// Guillaune Knight - Flavius -// ********************************************************************* -bat_room,175,178,5 script Guillaume Knight#3 4_M_KY_SOLD,{ - mes "[Guillaume Knight]"; - mes "The objective of the Flavius Battle is to score 2 points before your enemy by destroying their crystal."; - next; - mes "[Guillaume Knight]"; - mes "The crystals for both armies are protected by special barricades that cannot be destroyed by direct attacks."; - next; - mes "[Guillaume Knight]"; - mes "But they can be removed by destroying the Guardians that protect the enemy army base."; - next; - mes "[Guillaume Knight]"; - mes "The crystals are immune to every type of skill; your physical attacks are the only choice for destroying your enemy's crystal."; - next; - mes "[Guillaume Knight]"; - mes "Are you ready for battle? Then apply with the recruiter next to me!"; - close; -} - -// Flavius Officer - Guillaume -// ********************************************************************* -bat_room,172,178,5 script Flavius Officer#1 4_M_KY_KNT,{ - mes "[Flavius Officer]"; - if( Bat_Team == 2 ) - { - mes "Get out of here you stupid Croix!"; - close; - } - - if( Bat_Team == 0 ) - { - mes "Please sign up for an army with Prince Croix or General Guillaume!"; - close; - } - - mes "Hello " + strcharinfo(PC_NAME) + ", let's show the power of the Guillaume Army to those stinky Croixs!"; - next; - if( select("I want to join your army!", "End Conversation") == 2 ) - close; - - mes "[Flavius Officer]"; - if( BG_Delay_Tick >= gettimetick(2) ) - { - mes "You are a Deserter!!"; - mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; - close; - } - - if (questprogress(2070,PLAYTIME) == 2) - erasequest 2070; - if (questprogress(2070,PLAYTIME)) { - mes "You have received an indicator showing that you've participated in the Battle at Flavius. I can't let you participate in any other battles until the indicator goes off."; - next; - mes "[Flavius Officer]"; - mes "Stand-by for Flavius Battle until the time limit passes."; - close; - } - - if( BaseLevel < 80 ) - { - mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; - close; - } - - mes "Good luck!"; - close2; - warp "bat_room",85,94; - end; -} - -// Croix Knight - Flavius -// ********************************************************************* -bat_room,175,121,1 script Croix Knight#3 4_M_CRU_SOLD,{ - mes "[Croix Knight]"; - mes "The objective of the Flavius Battle is to score 2 points before your enemy by destroying their crystal."; - next; - mes "[Croix Knight]"; - mes "The crystals for both armies are protected by special barricades that cannot be destroyed by direct attacks."; - next; - mes "[Croix Knight]"; - mes "But they can be removed by destroying the Guardians that protect the enemy army base."; - next; - mes "[Croix Knight]"; - mes "The crystals are immune to every type of skill; your physical attacks are the only choice for destroying your enemy's crystal."; - next; - mes "[Croix Knight]"; - mes "Are you ready for battle? Then apply with the recruiter next to me!"; - close; -} - -// Flavius Officerer - Croix -// ********************************************************************* -bat_room,172,121,1 script Flavius Officer#2 4_M_CRU_KNT,{ - mes "[Flavius Officer]"; - if( Bat_Team == 1 ) - { - mes "Get out of here you stupid Guillaume!"; - close; - } - - if( Bat_Team == 0 ) - { - mes "Please sign up for an army with Prince Croix or General Guillaume!"; - close; - } - - mes "Hello " + strcharinfo(PC_NAME) + ", let's show the power of the Croix Army to those stinky Guillaumes!"; - next; - if( select("I want to join your army!", "End Conversation") == 2 ) - close; - - mes "[Flavius Officer]"; - if( BG_Delay_Tick >= gettimetick(2) ) - { - mes "You are a Deserter!!"; - mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; - close; - } - - if (questprogress(2070,PLAYTIME) == 2) - erasequest 2070; - if (questprogress(2070,PLAYTIME)) { - mes "You have received an indicator showing that you've participated in the Battle at Flavius. I can't let you participate in any other battles until the indicator goes off."; - next; - mes "[Flavius Officer]"; - mes "Stand-by for Flavius Battle until the time limit passes."; - close; - } - - if( BaseLevel < 80 ) - { - mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; - close; - } - - mes "Good luck!"; - close2; - warp "bat_room",85,77; - end; -} - -// Guillaune Knight - Flavius -// ********************************************************************* -bat_room,151,178,5 script Guillaume Knight#4 4_M_KY_SOLD,{ - mes "[Guillaume Knight]"; - mes "The objective of the Flavius Battle is to score 2 points before your enemy by destroying their crystal."; - next; - mes "[Guillaume Knight]"; - mes "The crystals for both armies are protected by special barricades that cannot be destroyed by direct attacks."; - next; - mes "[Guillaume Knight]"; - mes "But they can be removed by destroying the Guardians that protect the enemy army base."; - next; - mes "[Guillaume Knight]"; - mes "The crystals are immune to every type of skill; your physical attacks are the only choice for destroying your enemy's crystal."; - next; - mes "[Guillaume Knight]"; - mes "Are you ready for battle? Then apply with the recruiter next to me!"; - close; -} - -// Flavius Officerer - Guillaume -// ********************************************************************* -bat_room,148,178,5 script Flavius Officer#3 4_M_KY_KNT,{ - mes "[Flavius Officer]"; - if( Bat_Team == 2 ) - { - mes "Get out of here you stupid Croix!"; - close; - } - - if( Bat_Team == 0 ) - { - mes "Please sign up for an army with Prince Croix or General Guillaume!"; - close; - } - - mes "Hello " + strcharinfo(PC_NAME) + ", let's show the power of the Guillaume Army to those stinky Croixs!"; - next; - if( select("I want to join your army!", "End Conversation") == 2 ) - close; - - mes "[Flavius Officer]"; - if( BG_Delay_Tick >= gettimetick(2) ) - { - mes "You are a Deserter!!"; - mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; - close; - } - - if (questprogress(2070,PLAYTIME) == 2) - erasequest 2070; - if (questprogress(2070,PLAYTIME)) { - mes "You have received an indicator showing that you've participated in the Battle at Flavius. I can't let you participate in any other battles until the indicator goes off."; - next; - mes "[Flavius Officer]"; - mes "Stand-by for Flavius Battle until the time limit passes."; - close; - } - - if( BaseLevel < 80 ) - { - mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; - close; - } - - mes "Good luck!"; - close2; - warp "bat_room",253,94; - end; -} - -// Croix Knight - Flavius -// ********************************************************************* -bat_room,151,121,1 script Croix Knight#4 4_M_CRU_SOLD,{ - mes "[Croix Knight]"; - mes "The objective of the Flavius Battle is to score 2 points before your enemy by destroying their crystal."; - next; - mes "[Croix Knight]"; - mes "The crystals for both armies are protected by special barricades that cannot be destroyed by direct attacks."; - next; - mes "[Croix Knight]"; - mes "But they can be removed by destroying the Guardians that protect the enemy army base."; - next; - mes "[Croix Knight]"; - mes "The crystals are immune to every type of skill; your physical attacks are the only choice for destroying your enemy's crystal."; - next; - mes "[Croix Knight]"; - mes "Are you ready for battle? Then apply with the recruiter next to me!"; - close; -} - -// Flavius Officerer - Croix -// ********************************************************************* -bat_room,148,121,1 script Flavius Officer#4 4_M_CRU_KNT,{ - mes "[Flavius Officer]"; - if( Bat_Team == 1 ) - { - mes "Get out of here you stupid Guillaume!"; - close; - } - - if( Bat_Team == 0 ) - { - mes "Please sign up for an army with Prince Croix or General Guillaume!"; - close; - } - - mes "Hello " + strcharinfo(PC_NAME) + ", let's show the power of the Croix Army to those stinky Guillaumes!"; - next; - if( select("I want to join your army!", "End Conversation") == 2 ) - close; - - mes "[Flavius Officer]"; - if( BG_Delay_Tick >= gettimetick(2) ) - { - mes "You are a Deserter!!"; - mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; - close; - } - - if (questprogress(2070,PLAYTIME) == 2) - erasequest 2070; - if (questprogress(2070,PLAYTIME)) { - mes "You have received an indicator showing that you've participated in the Battle at Flavius. I can't let you participate in any other battles until the indicator goes off."; - next; - mes "[Flavius Officer]"; - mes "Stand-by for Flavius Battle until the time limit passes."; - close; - } - - if( BaseLevel < 80 ) - { - mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield"; - close; - } - - mes "Good luck!"; - close2; - warp "bat_room",253,77; - end; -} - -// Guillaume Knight - KvM -// ********************************************************************* -bat_room,143,178,5 script Guillaume Knight#5 4_M_KY_SOLD,{ - mes "[Guillaume Knight]"; - mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents before all of you die."; - next; - mes "[Guillaume Knight]"; - mes "The first team to lose all their soldiers loses."; - next; - mes "[Guillaume Knight]"; - mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential."; - next; - mes "[Guillaume Knight]"; - mes "Are you ready for battle? Then apply with the recruiter next to me!"; - close; -} - -// KvM Officerer - Guillaume -// ********************************************************************* -bat_room,140,178,5 script KVM [80-99] Officer#1 4_M_KY_KNT,{ - mes "[KVM Officer]"; - if( Bat_Team == 2 ) - { - mes "Get out of here you stinky Croix!"; - close; - } - - if( Bat_Team == 0 ) - { - mes "Please sign up for an army with Prince Croix or General Guillaume!"; - close; - } - - mes "Hello " + strcharinfo(PC_NAME) + ", let's show the power of the Guillaume Army to those stinky Croixs!"; - next; - if( select("I want to join your army!", "End Conversation") == 2 ) - close; - - mes "[KVM Officer]"; - if( BG_Delay_Tick >= gettimetick(2) ) - { - mes "You are a Deserter!!"; - mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; - close; - } - - if (questprogress(6025,PLAYTIME) == 2) - erasequest 6025; - if (questprogress(6025,PLAYTIME)) { - mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off."; - next; - mes "[KVM Officer]"; - mes "Stand-by for KvM Battle until the time limit passes."; - close; - } - - if( BaseLevel < 80 ) - { - mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 80 to 99."; - close; - } - - mes "Good luck!"; - close2; - warp "bat_room",253,224; - end; -} - -// Croix Knight - KvM -// ********************************************************************* -bat_room,143,121,1 script Croix Knight#5 4_M_CRU_SOLD,{ - mes "[Croix Knight]"; - mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents before all of you die."; - next; - mes "[Croix Knight]"; - mes "The first team to lose all their soldiers loses."; - next; - mes "[Croix Knight]"; - mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential."; - next; - mes "[Croix Knight]"; - mes "Are you ready for battle? Then apply with the recruiter next to me!"; - close; -} - -// KvM Officer - Croix -// ********************************************************************* -bat_room,140,121,1 script KVM [80-99] Officer#2 4_M_CRU_KNT,{ - mes "[KVM Officer]"; - if( Bat_Team == 1 ) - { - mes "Get out of here you stupid Guillaume!"; - close; - } - - if( Bat_Team == 0 ) - { - mes "Please sign up for an army with Prince Croix or General Guillaume!"; - close; - } - - mes "Hello " + strcharinfo(PC_NAME) + ", let's show the power of the Croix Army to those stinky Guillaumes!"; - next; - if( select("I want to join your army!", "End Conversation") == 2 ) - close; - - mes "[KVM Officer]"; - if( BG_Delay_Tick >= gettimetick(2) ) - { - mes "You are a Deserter!!"; - mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; - close; - } - - if (questprogress(6025,PLAYTIME) == 2) - erasequest 6025; - if (questprogress(6025,PLAYTIME)) { - mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off."; - next; - mes "[KVM Officer]"; - mes "Stand-by for KvM Battle until the time limit passes."; - close; - } - - if( BaseLevel < 80 ) - { - mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 80 to 99."; - close; - } - - mes "Good luck!"; - close2; - warp "bat_room",253,208; - end; -} - -// Guillaume Knight - KvM -// ********************************************************************* -bat_room,135,178,5 script Guillaume Knight#6 4_M_KY_SOLD,{ - mes "[Guillaume Knight]"; - mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents before all of you die."; - next; - mes "[Guillaume Knight]"; - mes "The first team to lose all their soldiers loses."; - next; - mes "[Guillaume Knight]"; - mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential."; - next; - mes "[Guillaume Knight]"; - mes "Are you ready for battle? Then apply with the recruiter next to me!"; - close; -} - -// KvM Officerer - Guillaume -// ********************************************************************* -bat_room,132,178,5 script KVM [60-79] Officer#1 4_M_KY_KNT,{ - mes "[KVM Officer]"; - if( Bat_Team == 2 ) - { - mes "Get out of here you stinky Croix!"; - close; - } - - if( Bat_Team == 0 ) - { - mes "Please sign up for an army with Prince Croix or General Guillaume!"; - close; - } - - mes "Hello " + strcharinfo(PC_NAME) + ", let's show the power of the Guillaume Army to those stinky Croixs!"; - next; - if( select("I want to join your army!", "End Conversation") == 2 ) - close; - - mes "[KVM Officer]"; - if( BG_Delay_Tick >= gettimetick(2) ) - { - mes "You are a Deserter!!"; - mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; - close; - } - - if (questprogress(6025,PLAYTIME) == 2) - erasequest 6025; - if (questprogress(6025,PLAYTIME)) { - mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off."; - next; - mes "[KVM Officer]"; - mes "Stand-by for KvM Battle until the time limit passes."; - close; - } - - if( BaseLevel < 60 || BaseLevel > 79 ) - { - mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 60 to 79."; - close; - } - - mes "Good luck!"; - close2; - warp "bat_room",225,224; - end; -} - -// Croix Knight - KvM -// ********************************************************************* -bat_room,135,121,1 script Croix Knight#6 4_M_CRU_SOLD,{ - mes "[Croix Knight]"; - mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents before all of you die."; - next; - mes "[Croix Knight]"; - mes "The first team to lose all their soldiers loses."; - next; - mes "[Croix Knight]"; - mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential."; - next; - mes "[Croix Knight]"; - mes "Are you ready for battle? Then apply with the recruiter next to me!"; - close; -} - -// KvM Officer - Croix -// ********************************************************************* -bat_room,132,121,1 script KVM [60-79] Officer#2 4_M_CRU_KNT,{ - mes "[KVM Officer]"; - if( Bat_Team == 1 ) - { - mes "Get out of here you stupid Guillaume!"; - close; - } - - if( Bat_Team == 0 ) - { - mes "Please sign up for an army with Prince Croix or General Guillaume!"; - close; - } - - mes "Hello " + strcharinfo(PC_NAME) + ", let's show the power of the Croix Army to those stinky Guillaumes!"; - next; - if( select("I want to join your army!", "End Conversation") == 2 ) - close; - - mes "[KVM Officer]"; - if( BG_Delay_Tick >= gettimetick(2) ) - { - mes "You are a Deserter!!"; - mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; - close; - } - - if (questprogress(6025,PLAYTIME) == 2) - erasequest 6025; - if (questprogress(6025,PLAYTIME)) { - mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off."; - next; - mes "[KVM Officer]"; - mes "Stand-by for KvM Battle until the time limit passes."; - close; - } - - if( BaseLevel < 60 || BaseLevel > 79 ) - { - mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 60 to 79."; - close; - } - - mes "Good luck!"; - close2; - warp "bat_room",225,208; - end; -} - -// Guillaume Knight - KvM -// ********************************************************************* -bat_room,127,178,5 script Guillaume Knight#7 4_M_KY_SOLD,{ - mes "[Guillaume Knight]"; - mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents before all of you die."; - next; - mes "[Guillaume Knight]"; - mes "The first team to lose all their soldiers loses."; - next; - mes "[Guillaume Knight]"; - mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential."; - next; - mes "[Guillaume Knight]"; - mes "Are you ready for battle? Then apply with the recruiter next to me!"; - close; -} - -// KvM Officerer - Guillaume -// ********************************************************************* -bat_room,124,178,5 script KVM [1-59] Officer#1 4_M_KY_KNT,{ - mes "[KVM Officer]"; - if( Bat_Team == 2 ) - { - mes "Get out of here you stinky Croix!"; - close; - } - - if( Bat_Team == 0 ) - { - mes "Please sign up for an army with Prince Croix or General Guillaume!"; - close; - } - - mes "Hello " + strcharinfo(PC_NAME) + ", let's show the power of the Guillaume Army to those stinky Croixs!"; - next; - if( select("I want to join your army!", "End Conversation") == 2 ) - close; - - mes "[KVM Officer]"; - if( BG_Delay_Tick >= gettimetick(2) ) - { - mes "You are a Deserter!!"; - mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; - close; - } - - if (questprogress(6025,PLAYTIME) == 2) - erasequest 6025; - if (questprogress(6025,PLAYTIME)) { - mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off."; - next; - mes "[KVM Officer]"; - mes "Stand-by for KvM Battle until the time limit passes."; - close; - } - - if( BaseLevel > 59 ) - { - mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 1 to 59."; - close; - } - - mes "Good luck!"; - close2; - warp "bat_room",197,224; - end; -} - -// Croix Knight - KvM -// ********************************************************************* -bat_room,127,121,1 script Croix Knight#7 4_M_CRU_SOLD,{ - mes "[Croix Knight]"; - mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents before all of you die."; - next; - mes "[Croix Knight]"; - mes "The first team to lose all their soldiers loses."; - next; - mes "[Croix Knight]"; - mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential."; - next; - mes "[Croix Knight]"; - mes "Are you ready for battle? Then apply with the recruiter next to me!"; - close; -} - -// KvM Officer - Croix -// ********************************************************************* -bat_room,124,121,1 script KVM [1-59] Officer#2 4_M_CRU_KNT,{ - mes "[KVM Officer]"; - if( Bat_Team == 1 ) - { - mes "Get out of here you stupid Guillaume!"; - close; - } - - if( Bat_Team == 0 ) - { - mes "Please sign up for an army with Prince Croix or General Guillaume!"; - close; - } - - mes "Hello " + strcharinfo(PC_NAME) + ", let's show the power of the Croix Army to those stinky Guillaumes!"; - next; - if( select("I want to join your army!", "End Conversation") == 2 ) - close; - - mes "[KVM Officer]"; - if( BG_Delay_Tick >= gettimetick(2) ) - { - mes "You are a Deserter!!"; - mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround."; - close; - } - - if (questprogress(6025,PLAYTIME) == 2) - erasequest 6025; - if (questprogress(6025,PLAYTIME)) { - mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off."; - next; - mes "[KVM Officer]"; - mes "Stand-by for KvM Battle until the time limit passes."; - close; - } - - if( BaseLevel > 59 ) - { - mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 1 to 59."; - close; - } - - mes "Good luck!"; - close2; - warp "bat_room",197,208; - end; -} - -// Guard Dummy -// ********************************************************************* - -bat_room,161,141,3 script Prince Croix's Aid::bat_aid 4_M_CRU_HEAD,{ end; } -bat_room,161,139,3 duplicate(bat_aid) Prince Croix's Aid::bat_aid2 4_M_CRU_HEAD -bat_room,161,160,3 duplicate(bat_aid) General Guillaume's Aid::bat_aid3 4_M_KY_HEAD -bat_room,161,158,3 duplicate(bat_aid) General Guillaume's Aid::bat_aid4 4_M_KY_HEAD - -// Flags -// ********************************************************************* - -- script Guillaume camp#bat 1_FLAG_LION,{ end; } -- script Croix camp#bat 1_FLAG_EAGLE,{ end; } - -// Exit from Registration -// ********************************************************************* -- script warp2bat_room FAKE_NPC,{ - end; - -OnTouch: - set BG_Delay_Tick, gettimetick(2) + 30; - warp "bat_room",154,149; - end; -} - -// Flavius bat_b02 -bat_room,57,81,0 duplicate(warp2bat_room) bat1 WARPNPC,1,1 -bat_room,57,90,0 duplicate(warp2bat_room) bat2 WARPNPC,1,1 -// Free BG -bat_room,57,220,0 duplicate(warp2bat_room) bat3 WARPNPC,1,1 -bat_room,57,211,0 duplicate(warp2bat_room) bat4 WARPNPC,1,1 -// Tierra Valley bat_a02 -bat_room,85,81,0 duplicate(warp2bat_room) bat5 WARPNPC,1,1 -bat_room,85,90,0 duplicate(warp2bat_room) bat6 WARPNPC,1,1 -// Tierra Valley bat_a01 -bat_room,85,220,0 duplicate(warp2bat_room) bat7 WARPNPC,1,1 -bat_room,85,211,0 duplicate(warp2bat_room) bat8 WARPNPC,1,1 -// Free BG -bat_room,113,81,0 duplicate(warp2bat_room) bat9 WARPNPC,1,1 -bat_room,113,90,0 duplicate(warp2bat_room) bat10 WARPNPC,1,1 -// Free BG -bat_room,113,220,0 duplicate(warp2bat_room) bat11 WARPNPC,1,1 -bat_room,113,211,0 duplicate(warp2bat_room) bat12 WARPNPC,1,1 -// Free BG -bat_room,141,81,0 duplicate(warp2bat_room) bat13 WARPNPC,1,1 -bat_room,141,90,0 duplicate(warp2bat_room) bat14 WARPNPC,1,1 -// Free BG -bat_room,141,220,0 duplicate(warp2bat_room) bat15 WARPNPC,1,1 -bat_room,141,211,0 duplicate(warp2bat_room) bat16 WARPNPC,1,1 -// Free BG -bat_room,169,81,0 duplicate(warp2bat_room) bat17 WARPNPC,1,1 -bat_room,169,90,0 duplicate(warp2bat_room) bat18 WARPNPC,1,1 -// Free BG -bat_room,169,220,0 duplicate(warp2bat_room) bat19 WARPNPC,1,1 -bat_room,169,211,0 duplicate(warp2bat_room) bat20 WARPNPC,1,1 -// Free BG -bat_room,197,81,0 duplicate(warp2bat_room) bat21 WARPNPC,1,1 -bat_room,197,90,0 duplicate(warp2bat_room) bat22 WARPNPC,1,1 -// KvM bat_c03 -bat_room,197,220,0 duplicate(warp2bat_room) bat23 WARPNPC,1,1 -bat_room,197,211,0 duplicate(warp2bat_room) bat24 WARPNPC,1,1 -// Free BG -bat_room,225,81,0 duplicate(warp2bat_room) bat25 WARPNPC,1,1 -bat_room,225,90,0 duplicate(warp2bat_room) bat26 WARPNPC,1,1 -// KvM bat_c02 -bat_room,225,220,0 duplicate(warp2bat_room) bat27 WARPNPC,1,1 -bat_room,225,211,0 duplicate(warp2bat_room) bat28 WARPNPC,1,1 -// Flavius bat_b01 -bat_room,253,81,0 duplicate(warp2bat_room) bat29 WARPNPC,1,1 -bat_room,253,90,0 duplicate(warp2bat_room) bat30 WARPNPC,1,1 -// KvM bat_c01 -bat_room,253,220,0 duplicate(warp2bat_room) bat31 WARPNPC,1,1 -bat_room,253,211,0 duplicate(warp2bat_room) bat32 WARPNPC,1,1 - -// Badges Repairman -// ********************************************************************* - -bat_room,138,144,5 script Repairman#bg 4W_M_03,{ - callfunc "repairmain","Repairman"; - end; -} - -// Badges Exchange -// ********************************************************************* - -bat_room,160,150,3 script Erundek 4_M_MANAGER,{ - mes "[Erundek]"; - mes "Welcome, mighty warrior."; - mes "What can I do for you today ?"; - next; - switch( select("Check the Catalog","Exchange Bravery Badges","Exchange Valor Badges","Exchange Heroism Badges","Hmm, nothing I guess.") ) - { - case 1: - mes "[Erundek]"; - mes "We have many items, so please take a look and purchase deliberately."; - close2; - readbook 11010,1; - end; - case 5: - mes "[Erundek]"; - mes "As you wish."; - mes "See you later."; - close; - case 2: // Bravery Badges - mes "[Erundek]"; - mes "So you want to exchange ^0000FFBravery Badges^000000 from the Battle of Tierra Valley."; - mes "What kind of item do you want to exchange?"; - next; - deletearray .@Item_DB[0],127; - set .@Badge, 7828; - - switch( select("Weapons", "Garment", "Footgear", "Armor", "Accessory") ) - { - case 1: setarray .@Item_DB[0],13036,13411,1425,1632,1634,1543,1924,1978,1574,1824,1183,1380,13305,1279,1739,13108,13172; set .@Value, 100; break; - case 2: setarray .@Item_DB[0],2538,2539,2540; set .@Value, 50; break; - case 3: setarray .@Item_DB[0],2435,2436,2437; set .@Value, 50; break; - case 4: setarray .@Item_DB[0],2376,2377,2378,2379,2380,2381,2382; set .@Value, 80; break; - case 5: setarray .@Item_DB[0],2720,2721,2722,2723,2724,2725,2733; set .@Value, 500; break; - } - - break; - case 3: // Valor Badges - mes "[Erundek]"; - mes "So you want to exchange ^FF0000Valor Badges^000000 from the Battle of Flavius."; - mes "What kind of item do you want to exchange?"; - next; - deletearray .@Item_DB[0],127; - set .@Badge, 7829; - - switch( select("Weapons", "Garment", "Footgear", "Armor", "Accessory") ) - { - case 1: setarray .@Item_DB[0],13037,13410,1633,1635,1542,1923,1977,1575,1823,1184,1482,1379,13306,1280,1738,13171,13173,13174; set .@Value, 100; break; - case 2: setarray .@Item_DB[0],2538,2539,2540; set .@Value, 50; break; - case 3: setarray .@Item_DB[0],2435,2436,2437; set .@Value, 50; break; - case 4: setarray .@Item_DB[0],2376,2377,2378,2379,2380,2381,2382; set .@Value, 80; break; - case 5: setarray .@Item_DB[0],2720,2721,2722,2723,2724,2725,2733; set .@Value, 500; break; - } - - break; - case 4: // Heroism Badge - mes "[Erundek]"; - mes "So you want to exchange ^FFA500Heroism Badges^000000 from the Battle of Kriger Von Midgard."; - mes "This shop is not available at the moment."; - close; - } - - mes "[Erundek]"; - mes "What item do you want to exchange?"; - mes "If you are not sure, check the catalog."; - next; - - set .@menu$, ""; - set .@count, getarraysize(.@Item_DB); - for( set .@i, 0; .@i < .@count; set .@i, .@i + 1 ) - set .@menu$, .@menu$ + getitemname(.@Item_DB[.@i]) + ":"; - - set .@Item_ID, .@Item_DB[select(.@menu$) - 1]; - - mes "[Erundek]"; - mes "Would you like to exchange ^FF0000" + .@Value + " " + getitemname(.@Badge) + "^000000 for a ^0000FF" + getitemname(.@Item_ID) + "^000000?"; - next; - mes "Remember, Battleground Reward Items are ^FF0000Character Bound^000000."; - mes "Are you sure you want this item?"; - next; - - if( select("Yes", "No") == 2 ) - { - mes "[Erundek]"; - mes "Do you need more time to check the items?"; - close; - } - - if( countitem(.@Badge) < .@Value ) - { - mes "[Erundek]"; - mes "I'm sorry, but you don't have enough badges to exchange."; - close; - } - - delitem .@Badge,.@Value; - getitem .@Item_ID,1; - mes "[Erundek]"; - mes "Thank you for exchanging."; - close; -} diff --git a/npc/custom/battleground/bg_flavius_01.txt b/npc/custom/battleground/bg_flavius_01.txt deleted file mode 100644 index 73ab603c9..000000000 --- a/npc/custom/battleground/bg_flavius_01.txt +++ /dev/null @@ -1,424 +0,0 @@ -// ============================================================================== -// BattleGround System - Flavius 1 -// ============================================================================== - -// Registration NPC's -// ********************************************************************* - -bat_room,86,227,4 script Registration::Fl1R_Guillaume 4_M_KY_KNT,{ - end; -OnInit: - waitingroom "Battle Station 10 Players",10,"Flavius_BG1::OnGuillaumeJoin",1; - end; -OnEnterBG: - set $@FlaviusBG1_id1, waitingroom2bg("bat_b01",390,10,"Flavius_BG1::OnGuillaumeQuit",""); - end; -} - -bat_room,85,204,0 script Registration::Fl1R_Croix 4_M_CRU_KNT,{ - end; -OnInit: - waitingroom "Battle Station 10 Players",10,"Flavius_BG1::OnCroixJoin",1; - end; -OnEnterBG: - set $@FlaviusBG1_id2, waitingroom2bg("bat_b01",10,290,"Flavius_BG1::OnCroixQuit",""); - end; -} - -// Battleground Engine -// ********************************************************************* - -- script Flavius_BG1 FAKE_NPC,{ - end; - -OnInit: - disablenpc "Guillaume Vintenar#fl1"; - disablenpc "Croix Vintenar#fl1"; - disablenpc "Therapist in battle#fl11"; - disablenpc "Therapist in battle#fl12"; - end; - -OnGuillaumeQuit: -OnCroixQuit: - set BG_Delay_Tick, gettimetick(2) + 1200; - end; - -OnGuillaumeJoin: -OnCroixJoin: - if( $@FlaviusBG1 == 0 ) - donpcevent "Flavius_BG1::OnReadyCheck"; - end; - -OnReadyCheck: - if( $@FlaviusBG1 ) - end; - set .@Guillaume, getwaitingroomstate(0,"Fl1R_Guillaume"); - set .@Croix, getwaitingroomstate(0,"Fl1R_Croix"); - - if( .@Guillaume < 10 || .@Croix < 10 ) - { - mapannounce "bat_room","Battleground -- Flavius [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0x006400; - end; - } - - // BG Variables - set $@FlaviusBG1, 1; - set $@FlaviusBG1_Victory, 0; - set .Guillaume_Score, 0; - set .Guillaume_Loss, 0; - set .Croix_Score, 0; - set .Croix_Loss, 0; - set .Match, 0; - // Prepare NPC - donpcevent "#gfl1_respawn::OnBGStart"; - donpcevent "#cfl1_respawn::OnBGStart"; - enablenpc "Therapist in battle#fl11"; - enablenpc "Therapist in battle#fl12"; - disablenpc "Guillaume Vintenar#fl1"; - disablenpc "Croix Vintenar#fl1"; - // Build and Warp Teams - donpcevent "Fl1R_Guillaume::OnEnterBG"; - donpcevent "Fl1R_Croix::OnEnterBG"; - announce "Battleground -- Flavius [80-99] has started!",0,0x006400; - initnpctimer; - // Start Match!! - -OnRoundStart: - sleep 2000; - if( $@FlaviusBG1 != 1 ) end; - - areapercentheal "bat_b01",382,2,397,17,100,100; - areapercentheal "bat_b01",2,282,17,297,100,100; - bg_warp $@FlaviusBG1_id1,"bat_b01",311,224; - bg_warp $@FlaviusBG1_id2,"bat_b01",87,75; - - sleep 2000; - if( $@FlaviusBG1 != 1 ) end; - - set .Match, .Match + 1; - // Crystal Spawn - set .Guillaume_Crystal, bg_monster($@FlaviusBG1_id1,"bat_b01",328,150,"Crystal Guillaume",1914,"Flavius_BG1::OnGuillaumeBreak"); - setcell "bat_b01",327,151,329,149,cell_basilica,1; - setcell "bat_b01",327,151,329,149,cell_walkable,1; - - set .Croix_Crystal, bg_monster($@FlaviusBG1_id2,"bat_b01",62,150,"Crystal Croix",1915,"Flavius_BG1::OnCroixBreak"); - setcell "bat_b01",62,149,60,151,cell_basilica,1; - setcell "bat_b01",62,149,60,151,cell_walkable,1; - - // Guardian Spawns - bg_monster $@FlaviusBG1_id1,"bat_b01",328,160,"Guillaume Guardian",1949,"Flavius_BG1::OnGuiGuardian"; - bg_monster $@FlaviusBG1_id1,"bat_b01",328,140,"Guillaume Guardian",1950,"Flavius_BG1::OnGuiGuardian"; - set .Guillaume_Guardian, 2; - bg_monster $@FlaviusBG1_id2,"bat_b01",62,160,"Croix Guardian",1949,"Flavius_BG1::OnCroGuardian"; - bg_monster $@FlaviusBG1_id2,"bat_b01",61,140,"Croix Guardian",1950,"Flavius_BG1::OnCroGuardian"; - set .Croix_Guardian, 2; - // Announces - mapannounce "bat_b01","The Battle of Flavius [ " + .Match + " ] Round has begun!!",1,0x006400; - end; - -OnRoundStop: - // Remove Monsters - killmonster "bat_b01","Flavius_BG1::OnGuiGuardian"; - killmonster "bat_b01","Flavius_BG1::OnCroGuardian"; - setcell "bat_b01",327,151,329,149,cell_walkable,0; - setcell "bat_b01",327,151,329,149,cell_basilica,0; - killmonster "bat_b01","Flavius_BG1::OnGuillaumeBreak"; - setcell "bat_b01",62,149,60,151,cell_walkable,0; - setcell "bat_b01",62,149,60,151,cell_basilica,0; - killmonster "bat_b01","Flavius_BG1::OnCroixBreak"; - end; - -OnGuiGuardian: - if( set(.Guillaume_Guardian, .Guillaume_Guardian - 1) <= 0 ) - { - setcell "bat_b01",327,151,329,149,cell_walkable,0; - setcell "bat_b01",327,151,329,149,cell_basilica,0; - mapannounce "bat_b01","The Guillaume Crystal is vulnerable to attack!",1,0x0000FF; - } - end; - -OnCroGuardian: - if( set(.Croix_Guardian, .Croix_Guardian - 1) <= 0 ) - { - setcell "bat_b01",62,149,60,151,cell_walkable,0; - setcell "bat_b01",62,149,60,151,cell_basilica,0; - mapannounce "bat_b01","The Croix Crystal is vulnerable to attack!",1,0xFF0000; - } - end; - -OnGuillaumeBreak: - donpcevent "Flavius_BG1::OnRoundStop"; - set .Guillaume_Loss, .Guillaume_Loss + 1; - if( set(.Croix_Score, .Croix_Score + 1) < 2 ) - { - bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score; - mapannounce "bat_b01","The Guillaume Crystal has been destroyed!",1,0x0000FF; - donpcevent "Flavius_BG1::OnRoundStart"; - } - else - { - bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score; - mapannounce "bat_b01","The Croix army has won the Battle of Flavius!",1,0xFF0000; - set $@FlaviusBG1_Victory, 2; - donpcevent "Flavius_BG1::OnMatchEnd"; - } - end; - -OnCroixBreak: - donpcevent "Flavius_BG1::OnRoundStop"; - set .Croix_Loss, .Croix_Loss + 1; - if( set(.Guillaume_Score, .Guillaume_Score + 1) < 2 ) - { - bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score; - mapannounce "bat_b01","The Croix Crystal has been destroyed!",1,0xFF0000; - donpcevent "Flavius_BG1::OnRoundStart"; - } - else - { - bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score; - mapannounce "bat_b01","The Guillaume army has won the Battle of Flavius!",1,0x0000FF; - set $@FlaviusBG1_Victory, 1; - donpcevent "Flavius_BG1::OnMatchEnd"; - } - end; - -OnTimer2400000: - mapannounce "bat_b01","Battle of Flavius will ends in 5 minutes",1,0x006400; - end; -OnTimer2640000: - mapannounce "bat_b01","Battle of Flavius will ends in 1 minute",1,0x006400; - end; - -OnTimer2700000: - if( .Croix_Score > .Guillaume_Score ) - { - mapannounce "bat_b01","The Croix army has won the Battle of Flavius!",1,0xFF0000; - set $@FlaviusBG1_Victory, 2; - } - else if( .Croix_Score < .Guillaume_Score ) - { - mapannounce "bat_b01","The Guillaume army has won the Battle of Flavius!",1,0x0000FF; - set $@FlaviusBG1_Victory, 1; - } - else - { - mapannounce "bat_b01","The Battle of Flavius is over. The time is out, this is a Tie",1,0x006400; - set $@FlaviusBG1_Victory, 3; - } - -OnMatchEnd: - set $@FlaviusBG1, 2; - stopnpctimer; - donpcevent "#gfl1_respawn::OnBGStop"; - donpcevent "#cfl1_respawn::OnBGStop"; - disablenpc "Therapist in battle#fl11"; - disablenpc "Therapist in battle#fl12"; - enablenpc "Guillaume Vintenar#fl1"; - enablenpc "Croix Vintenar#fl1"; - sleep 2000; - bg_warp $@FlaviusBG1_id1,"bat_b01",390,10; - bg_warp $@FlaviusBG1_id2,"bat_b01",10,290; - sleep 3000; - mapannounce "bat_b01","Battle of Flavius will close in 1 minute!",1,0x006400; - initnpctimer; - end; - -OnTimer30000: - if( $@FlaviusBG1 == 2 ) - mapannounce "bat_b01","Battle of Flavius will close in 30 seconds!",1,0x006400; - end; -OnTimer50000: - if( $@FlaviusBG1 == 2 ) - mapannounce "bat_b01","Battle of Flavius will close in 10 seconds!",1,0x006400; - end; - -OnTimer60000: - if( $@FlaviusBG1 != 2 ) - end; -OnReset: - stopnpctimer; - donpcevent "Flavius_BG1::OnRoundStop"; - set .Guillaume_Score, 0; - set .Guillaume_Crystal, 0; - set .Guillaume_Loss, 0; - set .Croix_Score, 0; - set .Croix_Crystal, 0; - set .Croix_Loss, 0; - set .Match, 0; - set $@FlaviusBG1_Victory, 0; - // NPC's - disablenpc "Guillaume Vintenar#fl1"; - disablenpc "Croix Vintenar#fl1"; - disablenpc "Therapist in battle#fl11"; - disablenpc "Therapist in battle#fl12"; - - if( $@FlaviusBG1_id1 ) { bg_destroy $@FlaviusBG1_id1; set $@FlaviusBG1_id1, 0; } - if( $@FlaviusBG1_id2 ) { bg_destroy $@FlaviusBG1_id2; set $@FlaviusBG1_id2, 0; } - sleep 1000; - mapwarp "bat_b01","bat_room",155,150; - sleep 2000; - maprespawnguildid "bat_b01",0,3; // Just in case someone else - sleep 2000; - bg_updatescore "bat_b01",0,0; - set $@FlaviusBG1, 0; - donpcevent "Flavius_BG1::OnReadyCheck"; - end; -} - -// Battleground rewards -// ********************************************************************* - -bat_b01,390,13,5 script Guillaume Vintenar#fl1 4_M_KY_HEAD,{ - if( $@FlaviusBG1_Victory ) - { - if( $@FlaviusBG1_Victory == Bat_Team ) - { // Victory - mes "[Swandery]"; - mes "Blessed Guillaume!!"; - mes "Let's enjoy our glorious victory!"; - mes "" + strcharinfo(PC_NAME) + ", its a sign reflecting victory"; - close2; - set .@reward, 9; - } else { - mes "[Swandery]"; - mes "You lost, but you're dedicated to this battle."; - mes "This is a reward for your great dedication by Guillaume Marollo!"; - mes "Just take this defeat a lesson, and later you would definitely learn."; - close2; - set .@reward, 3; - } - - setquest 2070; - getitem 7829, .@reward; - bg_leave; - warp "bat_room",155,150; - end; - } - end; -} - -bat_b01,10,293,5 script Croix Vintenar#fl1 4_M_CRU_HEAD,{ - if( $@FlaviusBG1_Victory ) - { - if( $@FlaviusBG1_Victory == Bat_Team ) - { // Victory - mes "[Swandery]"; - mes "Blessed Croax!!"; - mes "Let's enjoy our glorious victory!"; - mes "" + strcharinfo(PC_NAME) + ", its a sign reflecting victory"; - close2; - set .@reward, 9; - } else { - mes "[Swandery]"; - mes "Oh, " + strcharinfo(PC_NAME) + ". Don't be sad."; - mes "Even though we didn't win, we did our best."; - mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next."; - close2; - set .@reward, 3; - } - - setquest 2070; - getitem 7829, .@reward; - bg_leave; - warp "bat_room",155,150; - end; - } - end; -} - -// Battleground Therapist -// ********************************************************************* - -bat_b01,390,13,5 script Therapist in battle#fl12 4_F_SISTER,{ - mes "[Therapist in battle]"; - mes "Just close your eyes, and take a deep breathe."; - mes "You can be free from pain."; - specialeffect(EF_HEAL, AREA, playerattached()); - close; -} - -bat_b01,10,293,5 script Therapist in battle#fl11 4_F_SISTER,{ - mes "[Therapist in battle]"; - mes "Just close your eyes, and take a deep breathe."; - mes "You can be free from pain."; - specialeffect(EF_HEAL, AREA, playerattached()); - close; -} - -// Battleground Respawn -// ********************************************************************* - -bat_b01,390,10,0 script #gfl1_respawn HIDDEN_WARP_NPC,{ - end; - -OnBGStart: - initnpctimer; - end; - -OnBGStop: - stopnpctimer; - end; - -OnTimer24000: - specialeffect(EF_SANCTUARY); - end; - -OnTimer25000: - areapercentheal "bat_b01",382,2,397,17,100,100; - areawarp "bat_b01",382,2,397,17,"bat_b01",311,224; - initnpctimer; - end; -} - -bat_b01,10,290,0 script #cfl1_respawn HIDDEN_WARP_NPC,{ - end; - -OnBGStart: - initnpctimer; - end; - -OnBGStop: - stopnpctimer; - end; - -OnTimer24000: - specialeffect(EF_SANCTUARY); - end; - -OnTimer25000: - areapercentheal "bat_b01",2,282,17,297,100,100; - areawarp "bat_b01",2,282,17,297,"bat_b01",87,75; - initnpctimer; - end; -} - -// Flags -// ********************************************************************* - -bat_b01,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat1 1_FLAG_LION -bat_b01,319,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat2 1_FLAG_LION -bat_b01,304,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat3 1_FLAG_LION -bat_b01,319,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat4 1_FLAG_LION -bat_b01,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat5 1_FLAG_LION -bat_b01,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat6 1_FLAG_LION -bat_b01,335,142,1 duplicate(Guillaume camp#bat) Guillaume camp#bat7 1_FLAG_LION -bat_b01,335,157,1 duplicate(Guillaume camp#bat) Guillaume camp#bat8 1_FLAG_LION -bat_b01,390,16,1 duplicate(Guillaume camp#bat) Guillaume camp#bat9 1_FLAG_LION -bat_b01,292,163,1 duplicate(Guillaume camp#bat) Guillaume camp#bat19 1_FLAG_LION -bat_b01,292,136,1 duplicate(Guillaume camp#bat) Guillaume camp#bat20 1_FLAG_LION -bat_b01,241,185,1 duplicate(Guillaume camp#bat) Guillaume camp#bat21 1_FLAG_LION -bat_b01,247,179,1 duplicate(Guillaume camp#bat) Guillaume camp#bat22 1_FLAG_LION - -bat_b01,96,81,1 duplicate(Croix camp#bat) Croix camp#bat1 1_FLAG_EAGLE -bat_b01,96,68,1 duplicate(Croix camp#bat) Croix camp#bat2 1_FLAG_EAGLE -bat_b01,79,81,1 duplicate(Croix camp#bat) Croix camp#bat3 1_FLAG_EAGLE -bat_b01,79,68,1 duplicate(Croix camp#bat) Croix camp#bat4 1_FLAG_EAGLE -bat_b01,96,81,1 duplicate(Croix camp#bat) Croix camp#bat5 1_FLAG_EAGLE -bat_b01,96,81,1 duplicate(Croix camp#bat) Croix camp#bat6 1_FLAG_EAGLE -bat_b01,59,164,1 duplicate(Croix camp#bat) Croix camp#bat7 1_FLAG_EAGLE -bat_b01,59,137,1 duplicate(Croix camp#bat) Croix camp#bat8 1_FLAG_EAGLE -bat_b01,10,296,1 duplicate(Croix camp#bat) Croix camp#bat9 1_FLAG_EAGLE -bat_b01,110,162,1 duplicate(Croix camp#bat) Croix camp#bat18 1_FLAG_EAGLE -bat_b01,110,137,1 duplicate(Croix camp#bat) Croix camp#bat19 1_FLAG_EAGLE -bat_b01,152,120,1 duplicate(Croix camp#bat) Croix camp#bat20 1_FLAG_EAGLE -bat_b01,158,114,1 duplicate(Croix camp#bat) Croix camp#bat21 1_FLAG_EAGLE diff --git a/npc/custom/battleground/bg_flavius_02.txt b/npc/custom/battleground/bg_flavius_02.txt deleted file mode 100644 index e970a0711..000000000 --- a/npc/custom/battleground/bg_flavius_02.txt +++ /dev/null @@ -1,424 +0,0 @@ -// ============================================================================== -// BattleGround System - Flavius 2 -// ============================================================================== - -// Registration NPC's -// ********************************************************************* - -bat_room,142,227,4 script Registration::Fl2R_Guillaume 4_M_KY_KNT,{ - end; -OnInit: - waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnGuillaumeJoin",1; - end; -OnEnterBG: - set $@FlaviusBG2_id1, waitingroom2bg("bat_b02",390,10,"Flavius_BG2::OnGuillaumeQuit",""); - end; -} - -bat_room,142,204,0 script Registration::Fl2R_Croix 4_M_CRU_KNT,{ - end; -OnInit: - waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnCroixJoin",1; - end; -OnEnterBG: - set $@FlaviusBG2_id2, waitingroom2bg("bat_b02",10,290,"Flavius_BG2::OnCroixQuit",""); - end; -} - -// Battleground Engine -// ********************************************************************* - -- script Flavius_BG2 FAKE_NPC,{ - end; - -OnInit: - disablenpc "Guillaume Vintenar#fl2"; - disablenpc "Croix Vintenar#fl2"; - disablenpc "Therapist in battle#fl21"; - disablenpc "Therapist in battle#fl22"; - end; - -OnGuillaumeQuit: -OnCroixQuit: - set BG_Delay_Tick, gettimetick(2) + 1200; - end; - -OnGuillaumeJoin: -OnCroixJoin: - if( $@FlaviusBG2 == 0 ) - donpcevent "Flavius_BG2::OnReadyCheck"; - end; - -OnReadyCheck: - if( $@FlaviusBG2 ) - end; - set .@Guillaume, getwaitingroomstate(0,"Fl2R_Guillaume"); - set .@Croix, getwaitingroomstate(0,"Fl2R_Croix"); - - if( .@Guillaume < 10 || .@Croix < 10 ) - { - mapannounce "bat_room","Battleground -- Flavius [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0x808000; - end; - } - - // BG Variables - set $@FlaviusBG2, 1; - set $@FlaviusBG2_Victory, 0; - set .Guillaume_Score, 0; - set .Guillaume_Loss, 0; - set .Croix_Score, 0; - set .Croix_Loss, 0; - set .Match, 0; - // Prepare NPC - donpcevent "#gfl2_respawn::OnBGStart"; - donpcevent "#cfl2_respawn::OnBGStart"; - enablenpc "Therapist in battle#fl21"; - enablenpc "Therapist in battle#fl22"; - disablenpc "Guillaume Vintenar#fl2"; - disablenpc "Croix Vintenar#fl2"; - // Build and Warp Teams - donpcevent "Fl2R_Guillaume::OnEnterBG"; - donpcevent "Fl2R_Croix::OnEnterBG"; - announce "Battleground -- Flavius [80-99] has started!",0,0x808000; - initnpctimer; - // Start Match!! - -OnRoundStart: - sleep 2000; - if( $@FlaviusBG2 != 1 ) end; - - areapercentheal "bat_b02",382,2,397,17,100,100; - areapercentheal "bat_b02",2,282,17,297,100,100; - bg_warp $@FlaviusBG2_id1,"bat_b02",311,224; - bg_warp $@FlaviusBG2_id2,"bat_b02",87,75; - - sleep 2000; - if( $@FlaviusBG2 != 1 ) end; - - set .Match, .Match + 1; - // Crystal Spawn - set .Guillaume_Crystal, bg_monster($@FlaviusBG2_id1,"bat_b02",328,150,"Crystal Guillaume",1914,"Flavius_BG2::OnGuillaumeBreak"); - setcell "bat_b02",327,151,329,149,cell_basilica,1; - setcell "bat_b02",327,151,329,149,cell_walkable,1; - - set .Croix_Crystal, bg_monster($@FlaviusBG2_id2,"bat_b02",62,150,"Crystal Croix",1915,"Flavius_BG2::OnCroixBreak"); - setcell "bat_b02",62,149,60,151,cell_basilica,1; - setcell "bat_b02",62,149,60,151,cell_walkable,1; - - // Guardian Spawns - bg_monster $@FlaviusBG2_id1,"bat_b02",328,160,"Guillaume Guardian",1949,"Flavius_BG2::OnGuiGuardian"; - bg_monster $@FlaviusBG2_id1,"bat_b02",328,140,"Guillaume Guardian",1950,"Flavius_BG2::OnGuiGuardian"; - set .Guillaume_Guardian, 2; - bg_monster $@FlaviusBG2_id2,"bat_b02",62,160,"Croix Guardian",1949,"Flavius_BG2::OnCroGuardian"; - bg_monster $@FlaviusBG2_id2,"bat_b02",61,140,"Croix Guardian",1950,"Flavius_BG2::OnCroGuardian"; - set .Croix_Guardian, 2; - // Announces - mapannounce "bat_b02","The Battle of Flavius [ " + .Match + " ] Round has begun!!",1,0x808000; - end; - -OnRoundStop: - // Remove Monsters - killmonster "bat_b02","Flavius_BG2::OnGuiGuardian"; - killmonster "bat_b02","Flavius_BG2::OnCroGuardian"; - setcell "bat_b02",327,151,329,149,cell_walkable,0; - setcell "bat_b02",327,151,329,149,cell_basilica,0; - killmonster "bat_b02","Flavius_BG2::OnGuillaumeBreak"; - setcell "bat_b02",62,149,60,151,cell_walkable,0; - setcell "bat_b02",62,149,60,151,cell_basilica,0; - killmonster "bat_b02","Flavius_BG2::OnCroixBreak"; - end; - -OnGuiGuardian: - if( set(.Guillaume_Guardian, .Guillaume_Guardian - 1) <= 0 ) - { - setcell "bat_b02",327,151,329,149,cell_walkable,0; - setcell "bat_b02",327,151,329,149,cell_basilica,0; - mapannounce "bat_b02","The Guillaume Crystal is vulnerable to attack!",1,0x0000FF; - } - end; - -OnCroGuardian: - if( set(.Croix_Guardian, .Croix_Guardian - 1) <= 0 ) - { - setcell "bat_b02",62,149,60,151,cell_walkable,0; - setcell "bat_b02",62,149,60,151,cell_basilica,0; - mapannounce "bat_b02","The Croix Crystal is vulnerable to attack!",1,0xFF0000; - } - end; - -OnGuillaumeBreak: - donpcevent "Flavius_BG2::OnRoundStop"; - set .Guillaume_Loss, .Guillaume_Loss + 1; - if( set(.Croix_Score, .Croix_Score + 1) < 2 ) - { - bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score; - mapannounce "bat_b02","The Guillaume Crystal has been destroyed!",1,0x0000FF; - donpcevent "Flavius_BG2::OnRoundStart"; - } - else - { - bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score; - mapannounce "bat_b02","The Croix army has won the Battle of Flavius!",1,0xFF0000; - set $@FlaviusBG2_Victory, 2; - donpcevent "Flavius_BG2::OnMatchEnd"; - } - end; - -OnCroixBreak: - donpcevent "Flavius_BG2::OnRoundStop"; - set .Croix_Loss, .Croix_Loss + 1; - if( set(.Guillaume_Score, .Guillaume_Score + 1) < 2 ) - { - bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score; - mapannounce "bat_b02","The Croix Crystal has been destroyed!",1,0xFF0000; - donpcevent "Flavius_BG2::OnRoundStart"; - } - else - { - bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score; - mapannounce "bat_b02","The Guillaume army has won the Battle of Flavius!",1,0x0000FF; - set $@FlaviusBG2_Victory, 1; - donpcevent "Flavius_BG2::OnMatchEnd"; - } - end; - -OnTimer2400000: - mapannounce "bat_b02","Battle of Flavius will ends in 5 minutes",1,0x808000; - end; -OnTimer2640000: - mapannounce "bat_b02","Battle of Flavius will ends in 1 minute",1,0x808000; - end; - -OnTimer2700000: - if( .Croix_Score > .Guillaume_Score ) - { - mapannounce "bat_b02","The Croix army has won the Battle of Flavius!",1,0xFF0000; - set $@FlaviusBG2_Victory, 2; - } - else if( .Croix_Score < .Guillaume_Score ) - { - mapannounce "bat_b02","The Guillaume army has won the Battle of Flavius!",1,0x0000FF; - set $@FlaviusBG2_Victory, 1; - } - else - { - mapannounce "bat_b02","The Battle of Flavius is over. The time is out, this is a Tie",1,0x808000; - set $@FlaviusBG2_Victory, 3; - } - -OnMatchEnd: - set $@FlaviusBG2, 2; - stopnpctimer; - donpcevent "#gfl2_respawn::OnBGStop"; - donpcevent "#cfl2_respawn::OnBGStop"; - disablenpc "Therapist in battle#fl21"; - disablenpc "Therapist in battle#fl22"; - enablenpc "Guillaume Vintenar#fl2"; - enablenpc "Croix Vintenar#fl2"; - sleep 2000; - bg_warp $@FlaviusBG2_id1,"bat_b02",390,10; - bg_warp $@FlaviusBG2_id2,"bat_b02",10,290; - sleep 3000; - mapannounce "bat_b02","Battle of Flavius will close in 1 minute!",1,0x808000; - initnpctimer; - end; - -OnTimer30000: - if( $@FlaviusBG2 == 2 ) - mapannounce "bat_b02","Battle of Flavius will close in 30 seconds!",1,0x808000; - end; -OnTimer50000: - if( $@FlaviusBG2 == 2 ) - mapannounce "bat_b02","Battle of Flavius will close in 10 seconds!",1,0x808000; - end; - -OnTimer60000: - if( $@FlaviusBG2 != 2 ) - end; -OnReset: - stopnpctimer; - donpcevent "Flavius_BG2::OnRoundStop"; - set .Guillaume_Score, 0; - set .Guillaume_Crystal, 0; - set .Guillaume_Loss, 0; - set .Croix_Score, 0; - set .Croix_Crystal, 0; - set .Croix_Loss, 0; - set .Match, 0; - set $@FlaviusBG2_Victory, 0; - // NPC's - disablenpc "Guillaume Vintenar#fl2"; - disablenpc "Croix Vintenar#fl2"; - disablenpc "Therapist in battle#fl21"; - disablenpc "Therapist in battle#fl22"; - - if( $@FlaviusBG2_id1 ) { bg_destroy $@FlaviusBG2_id1; set $@FlaviusBG2_id1, 0; } - if( $@FlaviusBG2_id2 ) { bg_destroy $@FlaviusBG2_id2; set $@FlaviusBG2_id2, 0; } - sleep 1000; - mapwarp "bat_b02","bat_room",155,150; - sleep 2000; - maprespawnguildid "bat_b02",0,3; // Just in case someone else - sleep 2000; - bg_updatescore "bat_b02",0,0; - set $@FlaviusBG2, 0; - donpcevent "Flavius_BG2::OnReadyCheck"; - end; -} - -// Battleground rewards -// ********************************************************************* - -bat_b02,390,13,5 script Guillaume Vintenar#fl2 4_M_KY_HEAD,{ - if( $@FlaviusBG2_Victory ) - { - if( $@FlaviusBG2_Victory == Bat_Team ) - { // Victory - mes "[Swandery]"; - mes "Blessed Guillaume!!"; - mes "Let's enjoy our glorious victory!"; - mes "" + strcharinfo(PC_NAME) + ", its a sign reflecting victory"; - close2; - set .@reward, 9; - } else { - mes "[Swandery]"; - mes "You lost, but you're dedicated to this battle."; - mes "This is a reward for your great dedication by Guillaume Marollo!"; - mes "Just take this defeat a lesson, and later you would definitely learn."; - close2; - set .@reward, 3; - } - - setquest 2070; - getitem 7829, .@reward; - bg_leave; - warp "bat_room",155,150; - end; - } - end; -} - -bat_b02,10,293,5 script Croix Vintenar#fl2 4_M_CRU_HEAD,{ - if( $@FlaviusBG2_Victory ) - { - if( $@FlaviusBG2_Victory == Bat_Team ) - { // Victory - mes "[Swandery]"; - mes "Blessed Croax!!"; - mes "Let's enjoy our glorious victory!"; - mes "" + strcharinfo(PC_NAME) + ", its a sign reflecting victory"; - close2; - set .@reward, 9; - } else { - mes "[Swandery]"; - mes "Oh, " + strcharinfo(PC_NAME) + ". Don't be sad."; - mes "Even though we didn't win, we did our best."; - mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next."; - close2; - set .@reward, 3; - } - - setquest 2070; - getitem 7829, .@reward; - bg_leave; - warp "bat_room",155,150; - end; - } - end; -} - -// Battleground Therapist -// ********************************************************************* - -bat_b02,390,13,5 script Therapist in battle#fl22 4_F_SISTER,{ - mes "[Therapist in battle]"; - mes "Just close your eyes, and take a deep breathe."; - mes "You can be free from pain."; - specialeffect(EF_HEAL, AREA, playerattached()); - close; -} - -bat_b02,10,293,5 script Therapist in battle#fl21 4_F_SISTER,{ - mes "[Therapist in battle]"; - mes "Just close your eyes, and take a deep breathe."; - mes "You can be free from pain."; - specialeffect(EF_HEAL, AREA, playerattached()); - close; -} - -// Battleground Respawn -// ********************************************************************* - -bat_b02,390,10,0 script #gfl2_respawn HIDDEN_WARP_NPC,{ - end; - -OnBGStart: - initnpctimer; - end; - -OnBGStop: - stopnpctimer; - end; - -OnTimer24000: - specialeffect(EF_SANCTUARY); - end; - -OnTimer25000: - areapercentheal "bat_b02",382,2,397,17,100,100; - areawarp "bat_b02",382,2,397,17,"bat_b02",311,224; - initnpctimer; - end; -} - -bat_b02,10,290,0 script #cfl2_respawn HIDDEN_WARP_NPC,{ - end; - -OnBGStart: - initnpctimer; - end; - -OnBGStop: - stopnpctimer; - end; - -OnTimer24000: - specialeffect(EF_SANCTUARY); - end; - -OnTimer25000: - areapercentheal "bat_b02",2,282,17,297,100,100; - areawarp "bat_b02",2,282,17,297,"bat_b02",87,75; - initnpctimer; - end; -} - -// Flags -// ********************************************************************* - -bat_b02,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat32 1_FLAG_LION -bat_b02,319,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat33 1_FLAG_LION -bat_b02,304,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat34 1_FLAG_LION -bat_b02,319,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat35 1_FLAG_LION -bat_b02,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat36 1_FLAG_LION -bat_b02,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat37 1_FLAG_LION -bat_b02,335,142,1 duplicate(Guillaume camp#bat) Guillaume camp#bat38 1_FLAG_LION -bat_b02,335,157,1 duplicate(Guillaume camp#bat) Guillaume camp#bat39 1_FLAG_LION -bat_b02,390,16,1 duplicate(Guillaume camp#bat) Guillaume camp#bat40 1_FLAG_LION -bat_b02,292,163,1 duplicate(Guillaume camp#bat) Guillaume camp#bat41 1_FLAG_LION -bat_b02,292,136,1 duplicate(Guillaume camp#bat) Guillaume camp#bat42 1_FLAG_LION -bat_b02,241,185,1 duplicate(Guillaume camp#bat) Guillaume camp#bat43 1_FLAG_LION -bat_b02,247,179,1 duplicate(Guillaume camp#bat) Guillaume camp#bat44 1_FLAG_LION - -bat_b02,96,81,1 duplicate(Croix camp#bat) Croix camp#bat30 1_FLAG_EAGLE -bat_b02,96,68,1 duplicate(Croix camp#bat) Croix camp#bat31 1_FLAG_EAGLE -bat_b02,79,81,1 duplicate(Croix camp#bat) Croix camp#bat32 1_FLAG_EAGLE -bat_b02,79,68,1 duplicate(Croix camp#bat) Croix camp#bat33 1_FLAG_EAGLE -bat_b02,96,81,1 duplicate(Croix camp#bat) Croix camp#bat34 1_FLAG_EAGLE -bat_b02,96,81,1 duplicate(Croix camp#bat) Croix camp#bat35 1_FLAG_EAGLE -bat_b02,59,164,1 duplicate(Croix camp#bat) Croix camp#bat36 1_FLAG_EAGLE -bat_b02,59,137,1 duplicate(Croix camp#bat) Croix camp#bat37 1_FLAG_EAGLE -bat_b02,10,296,1 duplicate(Croix camp#bat) Croix camp#bat38 1_FLAG_EAGLE -bat_b02,110,162,1 duplicate(Croix camp#bat) Croix camp#bat39 1_FLAG_EAGLE -bat_b02,110,137,1 duplicate(Croix camp#bat) Croix camp#bat40 1_FLAG_EAGLE -bat_b02,152,120,1 duplicate(Croix camp#bat) Croix camp#bat41 1_FLAG_EAGLE -bat_b02,158,114,1 duplicate(Croix camp#bat) Croix camp#bat42 1_FLAG_EAGLE diff --git a/npc/custom/battleground/bg_kvm01.txt b/npc/custom/battleground/bg_kvm01.txt deleted file mode 100644 index a66e202e3..000000000 --- a/npc/custom/battleground/bg_kvm01.txt +++ /dev/null @@ -1,374 +0,0 @@ -// ============================================================================== -// BattleGround System - KvM 80~99 -// ============================================================================== - -// Registration NPC's -// ********************************************************************* - -bat_room,253,227,4 script Registration::KvM01R_Guillaume 4_M_KY_KNT,{ // KvM Guillaume - end; - -OnInit: - waitingroom "Battle Station 5 Players",5,"KvM01_BG::OnGuillaumeJoin",1; - end; - -OnEnterBG: - set $@KvM01BG_id1, waitingroom2bg("bat_c01",53,128,"KvM01_BG::OnGuillaumeQuit","KvM01_BG::OnGuillaumeDie"); - end; -} - -bat_room,253,204,0 script Registration::KvM01R_Croix 4_M_CRU_KNT,{ // KvM Croix - end; - -OnInit: - waitingroom "Battle Station 5 Players",5,"KvM01_BG::OnCroixJoin",1; - end; - -OnEnterBG: - set $@KvM01BG_id2, waitingroom2bg("bat_c01",146,55,"KvM01_BG::OnCroixQuit","KvM01_BG::OnCroixDie"); - end; -} - -// Light Effects -// ********************************************************************* - -bat_c01,54,123,0 script #bat_c01a HIDDEN_NPC,{ - end; - -OnKvM01LightA: specialeffect(EF_BEGINSPELL2); end; -OnKvM01LightB: specialeffect(EF_BEGINSPELL3); end; -OnKvM01LightC: specialeffect(EF_BEGINSPELL4); end; -} - -bat_c01,56,125,0 duplicate(#bat_c01a) #bat_c01b HIDDEN_NPC -bat_c01,58,127,0 duplicate(#bat_c01a) #bat_c01c HIDDEN_NPC -bat_c01,141,56,0 duplicate(#bat_c01a) #bat_c01d HIDDEN_NPC -bat_c01,143,58,0 duplicate(#bat_c01a) #bat_c01e HIDDEN_NPC -bat_c01,145,60,0 duplicate(#bat_c01a) #bat_c01f HIDDEN_NPC - -// Battleground Engine -// ********************************************************************* - -- script KvM01_BG FAKE_NPC,{ - end; - -OnInit: - setwall "bat_c01",54,122,6,7,0,"batc01wall_a"; - setwall "bat_c01",55,122,5,7,0,"batc01wall_b"; - setwall "bat_c01",140,56,6,7,0,"batc01wall_c"; - setwall "bat_c01",140,57,5,7,0,"batc01wall_d"; - disablenpc "TherapistKvM01a"; - disablenpc "TherapistKvM01b"; - disablenpc "VintenarKvM01a"; - disablenpc "VintenarKvM01b"; - end; - -OnGuillaumeJoin: -OnCroixJoin: - donpcevent "KvM01_BG::OnReadyCheck"; - end; - -OnGuillaumeQuit: - set BG_Delay_Tick, gettimetick(2) + 1200; -OnGuillaumeDie: - if( $@KvM01BG == 2 ) - { - set .Guillaume_Count, .Guillaume_Count - 1; - set .Croix_Score, .Croix_Score + 1; - bg_updatescore "bat_c01",.Guillaume_Score,.Croix_Score; - if( .Guillaume_Count < 1 ) donpcevent "KvM01_BG::OnCroixWin"; - } - end; - -OnCroixQuit: - set BG_Delay_Tick, gettimetick(2) + 1200; -OnCroixDie: - if( $@KvM01BG == 2 ) - { - set .Croix_Count, .Croix_Count - 1; - set .Guillaume_Score, .Guillaume_Score + 1; - bg_updatescore "bat_c01",.Guillaume_Score,.Croix_Score; - if( .Croix_Count < 1 ) donpcevent "KvM01_BG::OnGuillaumeWin"; - } - end; - -OnReadyCheck: - if( $@KvM01BG ) - end; - set .@Guillaume, getwaitingroomstate(0,"KvM01R_Guillaume"); - set .@Croix, getwaitingroomstate(0,"KvM01R_Croix"); - - if( .@Guillaume < 5 || .@Croix < 5 ) - { - if( .@Guillaume > 3 && .@Croix > 3 && !agitcheck() && !agitcheck2() && $@KvM_Flood < gettimetick(2) ) - { - announce "Battleground -- Kreiger Von Midgard [80-99] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",0,0x696969; - set $@KvM_Flood, gettimetick(2) + 15; - } - else - mapannounce "bat_room","Battleground -- Kreiger Von Midgard [80-99] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",1,0x696969; - end; - } - - set $@KvM01BG, 1; // Starting - donpcevent "KvM01R_Croix::OnEnterBG"; - donpcevent "KvM01R_Guillaume::OnEnterBG"; - donpcevent "KvM01_BG::OnStart"; - end; - -OnStart: - announce "Battleground -- Kreiger Von Midgard [80-99] has started!",0,0x696969; - enablenpc "TherapistKvM01a"; - enablenpc "TherapistKvM01b"; - disablenpc "VintenarKvM01a"; - disablenpc "VintenarKvM01b"; - set $@KvM01BG_Victory, 0; - sleep 2000; - // Warp Teams - bg_warp $@KvM01BG_id1,"bat_c01",53,128; - bg_warp $@KvM01BG_id2,"bat_c01",146,55; - // ScoreBoard - set .Guillaume_Score, 0; - set .Croix_Score, 0; - initnpctimer; - end; - -OnTimer5000: - areapercentheal "bat_c01",50,123,58,131,100,100; - areapercentheal "bat_c01",141,52,149,60,100,100; - mapannounce "bat_c01","The Battle will start in 25 seconds!!",1,0x696969; - end; - -OnTimer26000: - mapannounce "bat_c01","The Battle will start in 4 seconds!!",1,0x696969; - end; - -OnTimer27000: - donpcevent "::OnKvM01LightA"; - end; - -OnTimer28000: - donpcevent "::OnKvM01LightB"; - end; - -OnTimer29000: - donpcevent "::OnKvM01LightC"; - end; - -OnTimer30000: - // Team Members - set .Guillaume_Count, bg_get_data($@KvM01BG_id1, 0); - set .Croix_Count, bg_get_data($@KvM01BG_id2, 0); - if( .Guillaume_Count < 5 || .Croix_Count < 5 ) - { - set $@KvM01BG_Victory, 3; - set $@KvM01BG, 3; - mapannounce "bat_c01","There are not enough players to start the battle",1,0x696969; - stopnpctimer; - sleep 2000; - donpcevent "KvM01_BG::OnStop"; - end; - } - - set $@KvM01BG, 2; // Playing - areapercentheal "bat_c01",50,123,58,131,100,100; - bg_warp $@KvM01BG_id1,"bat_c01",62,119; - areapercentheal "bat_c01",141,52,149,60,100,100; - bg_warp $@KvM01BG_id2,"bat_c01",137,64; - end; - -OnTimer32000: - mapannounce "bat_c01","The Battle of Kreiger Von Midgard has begun!!",1,0x696969; - end; - -OnTimer300000: - mapannounce "bat_c01","The Battle will ends in 30 seconds!!",1,0x696969; - end; - -OnTimer330000: - if( .Croix_Count > .Guillaume_Count ) - donpcevent "KvM01_BG::OnCroixWin"; - else if( .Croix_Count < .Guillaume_Count ) - donpcevent "KvM01_BG::OnGuillaumeWin"; - else - { // Draw Game - set $@KvM01BG, 3; - set $@KvM01BG_Victory, 3; - - stopnpctimer; - sleep 2000; - mapannounce "bat_c01","The time is out! This is a Tie...",1,0x696969; - donpcevent "KvM01_BG::OnStop"; - } - end; - -OnGuillaumeWin: - set $@KvM01BG, 3; - set $@KvM01BG_Victory, 1; - - stopnpctimer; - sleep 2000; - mapannounce "bat_c01","The Guillaume Army has won the Battle of Kreiger Von Midgard",1,0x0000FF; - donpcevent "KvM01_BG::OnStop"; - end; - -OnCroixWin: - set $@KvM01BG, 3; - set $@KvM01BG_Victory, 2; - - stopnpctimer; - sleep 2000; - mapannounce "bat_c01","The Croix Army has won the Battle of Kreiger Von Midgard",1,0xFF0000; - donpcevent "KvM01_BG::OnStop"; - end; - -OnStop: - disablenpc "TherapistKvM01a"; - disablenpc "TherapistKvM01b"; - enablenpc "VintenarKvM01a"; - enablenpc "VintenarKvM01b"; - // Warp Teams - bg_warp $@KvM01BG_id1,"bat_c01",53,128; - bg_warp $@KvM01BG_id2,"bat_c01",146,55; - donpcevent "KvM01_BG_Out::OnBegin"; - end; - -OnReset: - stopnpctimer; - stopnpctimer "KvM01_BG_Out"; - set .Croix_Count, 0; - set .Guillaume_Count, 0; - set .Croix_Score, 0; - set .Guillaume_Score, 0; - set $@KvM01BG_Victory, 0; - if( $@KvM01BG_id1 ) { bg_destroy $@KvM01BG_id1; set $@KvM01BG_id1, 0; } - if( $@KvM01BG_id2 ) { bg_destroy $@KvM01BG_id2; set $@KvM01BG_id2, 0; } - disablenpc "TherapistKvM01a"; - disablenpc "TherapistKvM01b"; - disablenpc "VintenarKvM01a"; - disablenpc "VintenarKvM01b"; - sleep 1000; - mapwarp "bat_c01","bat_room",155,150; - sleep 2000; - maprespawnguildid "bat_c01",0,3; // Just in case someone else - bg_updatescore "bat_c01",0,0; - sleep 2000; - set $@KvM01BG, 0; - donpcevent "KvM01_BG::OnReadyCheck"; // Maybe a game is ready to start - end; -} - -- script KvM01_BG_Out FAKE_NPC,{ - end; - -OnBegin: - initnpctimer; - end; - -OnTimer3000: - mapannounce "bat_c01","Battle of Kreiger Von Midgard will close in 1 minute!",1,0x696969; - end; -OnTimer30000: - mapannounce "bat_c01","Battle of Kreiger Von Midgard will close in 30 seconds!",1,0x696969; - end; -OnTimer50000: - mapannounce "bat_c01","Battle of Kreiger Von Midgard will close in 10 seconds!",1,0x696969; - end; -OnTimer60000: - donpcevent "KvM01_BG::OnReset"; - end; -} - -// Battleground Therapist -// ********************************************************************* - -bat_c01,51,130,5 script Therapist in battle::TherapistKvM01a 4_F_SISTER,{ - mes "[Therapist in battle]"; - mes "Just close your eyes, and take a deep breathe."; - mes "You can be free from pain."; - specialeffect(EF_HEAL, AREA, playerattached()); - close; -} - -bat_c01,148,53,1 script Therapist in battle::TherapistKvM01b 4_F_SISTER,{ - mes "[Therapist in battle]"; - mes "Just close your eyes, and take a deep breathe."; - mes "You can be free from pain."; - specialeffect(EF_HEAL, AREA, playerattached()); - close; -} - -// Battleground rewards -// ********************************************************************* - -bat_c01,51,130,5 script Guillaume Vintenar::VintenarKvM01a 4_M_KY_HEAD,{ - if( $@KvM01BG_Victory ) - { - if( $@KvM01BG_Victory == 3 ) - { - setquest 6025; - bg_leave; - warp "bat_room",155,150; - end; - } - else if( $@KvM01BG_Victory == Bat_Team ) - { // Victory - set .@reward, 5; - mes "[Swandery]"; - mes "Blessed Guillaume!!"; - mes "Let's enjoy our glorious victory!"; - mes "" + strcharinfo(PC_NAME) + ", its a sign reflecting victory"; - close2; - } else { - set .@reward, 1; - mes "[Swandery]"; - mes "You lost, but you're dedicated to this battle."; - mes "This is a reward for your great dedication by Guillaume Marollo!"; - mes "Just take this defeat a lesson, and later you would definitely learn."; - close2; - } - - setquest 6025; - getitem 7773, .@reward; - bg_leave; - warp "bat_room",155,150; - end; - } - end; -} - -bat_c01,148,53,1 script Croix Vintenar::VintenarKvM01b 4_M_CRU_HEAD,{ - if( $@KvM01BG_Victory ) - { - if( $@KvM01BG_Victory == 3 ) - { - setquest 6025; - bg_leave; - warp "bat_room",155,150; - end; - } - else if( $@KvM01BG_Victory == Bat_Team ) - { // Victory - set .@reward, 5; - mes "[Swandery]"; - mes "Blessed Croax!!"; - mes "Let's enjoy our glorious victory!"; - mes "" + strcharinfo(PC_NAME) + ", its a sign reflecting victory"; - close2; - } else { - set .@reward, 1; - mes "[Swandery]"; - mes "Oh, " + strcharinfo(PC_NAME) + ". Don't be sad."; - mes "Even though we didn't win, we did our best."; - mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next."; - close2; - } - - setquest 6025; - getitem 7773, .@reward; - bg_leave; - warp "bat_room",155,150; - end; - } - end; -} diff --git a/npc/custom/battleground/bg_kvm02.txt b/npc/custom/battleground/bg_kvm02.txt deleted file mode 100644 index f1637069a..000000000 --- a/npc/custom/battleground/bg_kvm02.txt +++ /dev/null @@ -1,374 +0,0 @@ -// ============================================================================== -// BattleGround System - KvM 60~79 -// ============================================================================== - -// Registration NPC's -// ********************************************************************* - -bat_room,225,227,4 script Registration::KvM02R_Guillaume 4_M_KY_KNT,{ // KvM Guillaume - end; - -OnInit: - waitingroom "Battle Station 5 Players",5,"KvM02_BG::OnGuillaumeJoin",1; - end; - -OnEnterBG: - set $@KvM02BG_id1, waitingroom2bg("bat_c02",53,128,"KvM02_BG::OnGuillaumeQuit","KvM02_BG::OnGuillaumeDie"); - end; -} - -bat_room,225,204,0 script Registration::KvM02R_Croix 4_M_CRU_KNT,{ // KvM Croix - end; - -OnInit: - waitingroom "Battle Station 5 Players",5,"KvM02_BG::OnCroixJoin",1; - end; - -OnEnterBG: - set $@KvM02BG_id2, waitingroom2bg("bat_c02",146,55,"KvM02_BG::OnCroixQuit","KvM02_BG::OnCroixDie"); - end; -} - -// Light Effects -// ********************************************************************* - -bat_c02,54,123,0 script #bat_c02a HIDDEN_NPC,{ - end; - -OnKvM02LightA: specialeffect(EF_BEGINSPELL2); end; -OnKvM02LightB: specialeffect(EF_BEGINSPELL3); end; -OnKvM02LightC: specialeffect(EF_BEGINSPELL4); end; -} - -bat_c02,56,125,0 duplicate(#bat_c02a) #bat_c02b HIDDEN_NPC -bat_c02,58,127,0 duplicate(#bat_c02a) #bat_c02c HIDDEN_NPC -bat_c02,141,56,0 duplicate(#bat_c02a) #bat_c02d HIDDEN_NPC -bat_c02,143,58,0 duplicate(#bat_c02a) #bat_c02e HIDDEN_NPC -bat_c02,145,60,0 duplicate(#bat_c02a) #bat_c02f HIDDEN_NPC - -// Battleground Engine -// ********************************************************************* - -- script KvM02_BG FAKE_NPC,{ - end; - -OnInit: - setwall "bat_c02",54,122,6,7,0,"batc02wall_a"; - setwall "bat_c02",55,122,5,7,0,"batc02wall_b"; - setwall "bat_c02",140,56,6,7,0,"batc02wall_c"; - setwall "bat_c02",140,57,5,7,0,"batc02wall_d"; - disablenpc "TherapistKvM02a"; - disablenpc "TherapistKvM02b"; - disablenpc "VintenarKvM02a"; - disablenpc "VintenarKvM02b"; - end; - -OnGuillaumeJoin: -OnCroixJoin: - donpcevent "KvM02_BG::OnReadyCheck"; - end; - -OnGuillaumeQuit: - set BG_Delay_Tick, gettimetick(2) + 1200; -OnGuillaumeDie: - if( $@KvM02BG == 2 ) - { - set .Guillaume_Count, .Guillaume_Count - 1; - set .Croix_Score, .Croix_Score + 1; - bg_updatescore "bat_c02",.Guillaume_Score,.Croix_Score; - if( .Guillaume_Count < 1 ) donpcevent "KvM02_BG::OnCroixWin"; - } - end; - -OnCroixQuit: - set BG_Delay_Tick, gettimetick(2) + 1200; -OnCroixDie: - if( $@KvM02BG == 2 ) - { - set .Croix_Count, .Croix_Count - 1; - set .Guillaume_Score, .Guillaume_Score + 1; - bg_updatescore "bat_c02",.Guillaume_Score,.Croix_Score; - if( .Croix_Count < 1 ) donpcevent "KvM02_BG::OnGuillaumeWin"; - } - end; - -OnReadyCheck: - if( $@KvM02BG ) - end; - set .@Guillaume, getwaitingroomstate(0,"KvM02R_Guillaume"); - set .@Croix, getwaitingroomstate(0,"KvM02R_Croix"); - - if( .@Guillaume < 5 || .@Croix < 5 ) - { - if( .@Guillaume > 3 && .@Croix > 3 && !agitcheck() && !agitcheck2() && $@KvM_Flood < gettimetick(2) ) - { - announce "Battleground -- Kreiger Von Midgard [60-79] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",0,0x808080; - set $@KvM_Flood, gettimetick(2) + 15; - } - else - mapannounce "bat_room","Battleground -- Kreiger Von Midgard [60-79] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",1,0x808080; - end; - } - - set $@KvM02BG, 1; // Starting - donpcevent "KvM02R_Croix::OnEnterBG"; - donpcevent "KvM02R_Guillaume::OnEnterBG"; - donpcevent "KvM02_BG::OnStart"; - end; - -OnStart: - announce "Battleground -- Kreiger Von Midgard [60-79] has started!",0,0x808080; - enablenpc "TherapistKvM02a"; - enablenpc "TherapistKvM02b"; - disablenpc "VintenarKvM02a"; - disablenpc "VintenarKvM02b"; - set $@KvM02BG_Victory, 0; - sleep 2000; - // Warp Teams - bg_warp $@KvM02BG_id1,"bat_c02",53,128; - bg_warp $@KvM02BG_id2,"bat_c02",146,55; - // ScoreBoard - set .Guillaume_Score, 0; - set .Croix_Score, 0; - initnpctimer; - end; - -OnTimer5000: - areapercentheal "bat_c02",50,123,58,131,100,100; - areapercentheal "bat_c02",141,52,149,60,100,100; - mapannounce "bat_c02","The Battle will start in 25 seconds!!",1,0x808080; - end; - -OnTimer26000: - mapannounce "bat_c02","The Battle will start in 4 seconds!!",1,0x808080; - end; - -OnTimer27000: - donpcevent "::OnKvM02LightA"; - end; - -OnTimer28000: - donpcevent "::OnKvM02LightB"; - end; - -OnTimer29000: - donpcevent "::OnKvM02LightC"; - end; - -OnTimer30000: - // Team Members - set .Guillaume_Count, bg_get_data($@KvM02BG_id1, 0); - set .Croix_Count, bg_get_data($@KvM02BG_id2, 0); - if( .Guillaume_Count < 5 || .Croix_Count < 5 ) - { - set $@KvM02BG_Victory, 3; - set $@KvM02BG, 3; - mapannounce "bat_c02","There are not enough players to start the battle",1,0x808080; - stopnpctimer; - sleep 2000; - donpcevent "KvM02_BG::OnStop"; - end; - } - - set $@KvM02BG, 2; // Playing - areapercentheal "bat_c02",50,123,58,131,100,100; - bg_warp $@KvM02BG_id1,"bat_c02",62,119; - areapercentheal "bat_c02",141,52,149,60,100,100; - bg_warp $@KvM02BG_id2,"bat_c02",137,64; - end; - -OnTimer32000: - mapannounce "bat_c02","The Battle of Kreiger Von Midgard has begun!!",1,0x808080; - end; - -OnTimer300000: - mapannounce "bat_c02","The Battle will ends in 30 seconds!!",1,0x808080; - end; - -OnTimer330000: - if( .Croix_Count > .Guillaume_Count ) - donpcevent "KvM02_BG::OnCroixWin"; - else if( .Croix_Count < .Guillaume_Count ) - donpcevent "KvM02_BG::OnGuillaumeWin"; - else - { // Draw Game - set $@KvM02BG, 3; - set $@KvM02BG_Victory, 3; - - stopnpctimer; - sleep 2000; - mapannounce "bat_c02","The time is out! This is a Tie...",1,0x808080; - donpcevent "KvM02_BG::OnStop"; - } - end; - -OnGuillaumeWin: - set $@KvM02BG, 3; - set $@KvM02BG_Victory, 1; - - stopnpctimer; - sleep 2000; - mapannounce "bat_c02","The Guillaume Army has won the Battle of Kreiger Von Midgard",1,0x0000FF; - donpcevent "KvM02_BG::OnStop"; - end; - -OnCroixWin: - set $@KvM02BG, 3; - set $@KvM02BG_Victory, 2; - - stopnpctimer; - sleep 2000; - mapannounce "bat_c02","The Croix Army has won the Battle of Kreiger Von Midgard",1,0xFF0000; - donpcevent "KvM02_BG::OnStop"; - end; - -OnStop: - disablenpc "TherapistKvM02a"; - disablenpc "TherapistKvM02b"; - enablenpc "VintenarKvM02a"; - enablenpc "VintenarKvM02b"; - // Warp Teams - bg_warp $@KvM02BG_id1,"bat_c02",53,128; - bg_warp $@KvM02BG_id2,"bat_c02",146,55; - donpcevent "KvM02_BG_Out::OnBegin"; - end; - -OnReset: - stopnpctimer; - stopnpctimer "KvM02_BG_Out"; - set .Croix_Count, 0; - set .Guillaume_Count, 0; - set .Croix_Score, 0; - set .Guillaume_Score, 0; - set $@KvM02BG_Victory, 0; - if( $@KvM02BG_id1 ) { bg_destroy $@KvM02BG_id1; set $@KvM02BG_id1, 0; } - if( $@KvM02BG_id2 ) { bg_destroy $@KvM02BG_id2; set $@KvM02BG_id2, 0; } - disablenpc "TherapistKvM02a"; - disablenpc "TherapistKvM02b"; - disablenpc "VintenarKvM02a"; - disablenpc "VintenarKvM02b"; - sleep 1000; - mapwarp "bat_c02","bat_room",155,150; - sleep 2000; - maprespawnguildid "bat_c02",0,3; // Just in case someone else - bg_updatescore "bat_c02",0,0; - sleep 2000; - set $@KvM02BG, 0; - donpcevent "KvM02_BG::OnReadyCheck"; // Maybe a game is ready to start - end; -} - -- script KvM02_BG_Out FAKE_NPC,{ - end; - -OnBegin: - initnpctimer; - end; - -OnTimer3000: - mapannounce "bat_c02","Battle of Kreiger Von Midgard will close in 1 minute!",1,0x808080; - end; -OnTimer30000: - mapannounce "bat_c02","Battle of Kreiger Von Midgard will close in 30 seconds!",1,0x808080; - end; -OnTimer50000: - mapannounce "bat_c02","Battle of Kreiger Von Midgard will close in 10 seconds!",1,0x808080; - end; -OnTimer60000: - donpcevent "KvM02_BG::OnReset"; - end; -} - -// Battleground Therapist -// ********************************************************************* - -bat_c02,51,130,5 script Therapist in battle::TherapistKvM02a 4_F_SISTER,{ - mes "[Therapist in battle]"; - mes "Just close your eyes, and take a deep breathe."; - mes "You can be free from pain."; - specialeffect(EF_HEAL, AREA, playerattached()); - close; -} - -bat_c02,148,53,1 script Therapist in battle::TherapistKvM02b 4_F_SISTER,{ - mes "[Therapist in battle]"; - mes "Just close your eyes, and take a deep breathe."; - mes "You can be free from pain."; - specialeffect(EF_HEAL, AREA, playerattached()); - close; -} - -// Battleground rewards -// ********************************************************************* - -bat_c02,51,130,5 script Guillaume Vintenar::VintenarKvM02a 4_M_KY_HEAD,{ - if( $@KvM02BG_Victory ) - { - if( $@KvM02BG_Victory == 3 ) - { - setquest 6025; - bg_leave; - warp "bat_room",155,150; - end; - } - else if( $@KvM02BG_Victory == Bat_Team ) - { // Victory - set .@reward, 3; - mes "[Swandery]"; - mes "Blessed Guillaume!!"; - mes "Let's enjoy our glorious victory!"; - mes "" + strcharinfo(PC_NAME) + ", its a sign reflecting victory"; - close2; - } else { - set .@reward, 1; - mes "[Swandery]"; - mes "You lost, but you're dedicated to this battle."; - mes "This is a reward for your great dedication by Guillaume Marollo!"; - mes "Just take this defeat a lesson, and later you would definitely learn."; - close2; - } - - setquest 6025; - getitem 7773, .@reward; - bg_leave; - warp "bat_room",155,150; - end; - } - end; -} - -bat_c02,148,53,1 script Croix Vintenar::VintenarKvM02b 4_M_CRU_HEAD,{ - if( $@KvM02BG_Victory ) - { - if( $@KvM02BG_Victory == 3 ) - { - setquest 6025; - bg_leave; - warp "bat_room",155,150; - end; - } - else if( $@KvM02BG_Victory == Bat_Team ) - { // Victory - set .@reward, 3; - mes "[Swandery]"; - mes "Blessed Croax!!"; - mes "Let's enjoy our glorious victory!"; - mes "" + strcharinfo(PC_NAME) + ", its a sign reflecting victory"; - close2; - } else { - set .@reward, 1; - mes "[Swandery]"; - mes "Oh, " + strcharinfo(PC_NAME) + ". Don't be sad."; - mes "Even though we didn't win, we did our best."; - mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next."; - close2; - } - - setquest 6025; - getitem 7773, .@reward; - bg_leave; - warp "bat_room",155,150; - end; - } - end; -} diff --git a/npc/custom/battleground/bg_kvm03.txt b/npc/custom/battleground/bg_kvm03.txt deleted file mode 100644 index 612047dcb..000000000 --- a/npc/custom/battleground/bg_kvm03.txt +++ /dev/null @@ -1,374 +0,0 @@ -// ============================================================================== -// BattleGround System - KvM 1~59 -// ============================================================================== - -// Registration NPC's -// ********************************************************************* - -bat_room,197,227,4 script Registration::KvM03R_Guillaume 4_M_KY_KNT,{ // KvM Guillaume - end; - -OnInit: - waitingroom "Battle Station 5 Players",5,"KvM03_BG::OnGuillaumeJoin",1; - end; - -OnEnterBG: - set $@KvM03BG_id1, waitingroom2bg("bat_c03",53,128,"KvM03_BG::OnGuillaumeQuit","KvM03_BG::OnGuillaumeDie"); - end; -} - -bat_room,197,204,0 script Registration::KvM03R_Croix 4_M_CRU_KNT,{ // KvM Croix - end; - -OnInit: - waitingroom "Battle Station 5 Players",5,"KvM03_BG::OnCroixJoin",1; - end; - -OnEnterBG: - set $@KvM03BG_id2, waitingroom2bg("bat_c03",146,55,"KvM03_BG::OnCroixQuit","KvM03_BG::OnCroixDie"); - end; -} - -// Light Effects -// ********************************************************************* - -bat_c03,54,123,0 script #bat_c03a HIDDEN_NPC,{ - end; - -OnKvM03LightA: specialeffect(EF_BEGINSPELL2); end; -OnKvM03LightB: specialeffect(EF_BEGINSPELL3); end; -OnKvM03LightC: specialeffect(EF_BEGINSPELL4); end; -} - -bat_c03,56,125,0 duplicate(#bat_c03a) #bat_c03b HIDDEN_NPC -bat_c03,58,127,0 duplicate(#bat_c03a) #bat_c03c HIDDEN_NPC -bat_c03,141,56,0 duplicate(#bat_c03a) #bat_c03d HIDDEN_NPC -bat_c03,143,58,0 duplicate(#bat_c03a) #bat_c03e HIDDEN_NPC -bat_c03,145,60,0 duplicate(#bat_c03a) #bat_c03f HIDDEN_NPC - -// Battleground Engine -// ********************************************************************* - -- script KvM03_BG FAKE_NPC,{ - end; - -OnInit: - setwall "bat_c03",54,122,6,7,0,"batc03wall_a"; - setwall "bat_c03",55,122,5,7,0,"batc03wall_b"; - setwall "bat_c03",140,56,6,7,0,"batc03wall_c"; - setwall "bat_c03",140,57,5,7,0,"batc03wall_d"; - disablenpc "TherapistKvM03a"; - disablenpc "TherapistKvM03b"; - disablenpc "VintenarKvM03a"; - disablenpc "VintenarKvM03b"; - end; - -OnGuillaumeJoin: -OnCroixJoin: - donpcevent "KvM03_BG::OnReadyCheck"; - end; - -OnGuillaumeQuit: - set BG_Delay_Tick, gettimetick(2) + 1200; -OnGuillaumeDie: - if( $@KvM03BG == 2 ) - { - set .Guillaume_Count, .Guillaume_Count - 1; - set .Croix_Score, .Croix_Score + 1; - bg_updatescore "bat_c03",.Guillaume_Score,.Croix_Score; - if( .Guillaume_Count < 1 ) donpcevent "KvM03_BG::OnCroixWin"; - } - end; - -OnCroixQuit: - set BG_Delay_Tick, gettimetick(2) + 1200; -OnCroixDie: - if( $@KvM03BG == 2 ) - { - set .Croix_Count, .Croix_Count - 1; - set .Guillaume_Score, .Guillaume_Score + 1; - bg_updatescore "bat_c03",.Guillaume_Score,.Croix_Score; - if( .Croix_Count < 1 ) donpcevent "KvM03_BG::OnGuillaumeWin"; - } - end; - -OnReadyCheck: - if( $@KvM03BG ) - end; - set .@Guillaume, getwaitingroomstate(0,"KvM03R_Guillaume"); - set .@Croix, getwaitingroomstate(0,"KvM03R_Croix"); - - if( .@Guillaume < 5 || .@Croix < 5 ) - { - if( .@Guillaume > 3 && .@Croix > 3 && !agitcheck() && !agitcheck2() && $@KvM_Flood < gettimetick(2) ) - { - announce "Battleground -- Kreiger Von Midgard [1-59] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",0,0xC0C0C0; - set $@KvM_Flood, gettimetick(2) + 15; - } - else - mapannounce "bat_room","Battleground -- Kreiger Von Midgard [1-59] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",1,0xC0C0C0; - end; - } - - set $@KvM03BG, 1; // Starting - donpcevent "KvM03R_Croix::OnEnterBG"; - donpcevent "KvM03R_Guillaume::OnEnterBG"; - donpcevent "KvM03_BG::OnStart"; - end; - -OnStart: - announce "Battleground -- Kreiger Von Midgard [1-59] has started!",0,0xC0C0C0; - enablenpc "TherapistKvM03a"; - enablenpc "TherapistKvM03b"; - disablenpc "VintenarKvM03a"; - disablenpc "VintenarKvM03b"; - set $@KvM03BG_Victory, 0; - sleep 2000; - // Warp Teams - bg_warp $@KvM03BG_id1,"bat_c03",53,128; - bg_warp $@KvM03BG_id2,"bat_c03",146,55; - // ScoreBoard - set .Guillaume_Score, 0; - set .Croix_Score, 0; - initnpctimer; - end; - -OnTimer5000: - areapercentheal "bat_c03",50,123,58,131,100,100; - areapercentheal "bat_c03",141,52,149,60,100,100; - mapannounce "bat_c03","The Battle will start in 25 seconds!!",1,0xC0C0C0; - end; - -OnTimer26000: - mapannounce "bat_c03","The Battle will start in 4 seconds!!",1,0xC0C0C0; - end; - -OnTimer27000: - donpcevent "::OnKvM03LightA"; - end; - -OnTimer28000: - donpcevent "::OnKvM03LightB"; - end; - -OnTimer29000: - donpcevent "::OnKvM03LightC"; - end; - -OnTimer30000: - // Team Members - set .Guillaume_Count, bg_get_data($@KvM03BG_id1, 0); - set .Croix_Count, bg_get_data($@KvM03BG_id2, 0); - if( .Guillaume_Count < 5 || .Croix_Count < 5 ) - { - set $@KvM03BG_Victory, 3; - set $@KvM03BG, 3; - mapannounce "bat_c03","There are not enough players to start the battle",1,0xC0C0C0; - stopnpctimer; - sleep 2000; - donpcevent "KvM03_BG::OnStop"; - end; - } - - set $@KvM03BG, 2; // Playing - areapercentheal "bat_c03",50,123,58,131,100,100; - bg_warp $@KvM03BG_id1,"bat_c03",62,119; - areapercentheal "bat_c03",141,52,149,60,100,100; - bg_warp $@KvM03BG_id2,"bat_c03",137,64; - end; - -OnTimer32000: - mapannounce "bat_c03","The Battle of Kreiger Von Midgard has begun!!",1,0xC0C0C0; - end; - -OnTimer300000: - mapannounce "bat_c03","The Battle will ends in 30 seconds!!",1,0xC0C0C0; - end; - -OnTimer330000: - if( .Croix_Count > .Guillaume_Count ) - donpcevent "KvM03_BG::OnCroixWin"; - else if( .Croix_Count < .Guillaume_Count ) - donpcevent "KvM03_BG::OnGuillaumeWin"; - else - { // Draw Game - set $@KvM03BG, 3; - set $@KvM03BG_Victory, 3; - - stopnpctimer; - sleep 2000; - mapannounce "bat_c03","The time is out! This is a Tie...",1,0xC0C0C0; - donpcevent "KvM03_BG::OnStop"; - } - end; - -OnGuillaumeWin: - set $@KvM03BG, 3; - set $@KvM03BG_Victory, 1; - - stopnpctimer; - sleep 2000; - mapannounce "bat_c03","The Guillaume Army has won the Battle of Kreiger Von Midgard",1,0x0000FF; - donpcevent "KvM03_BG::OnStop"; - end; - -OnCroixWin: - set $@KvM03BG, 3; - set $@KvM03BG_Victory, 2; - - stopnpctimer; - sleep 2000; - mapannounce "bat_c03","The Croix Army has won the Battle of Kreiger Von Midgard",1,0xFF0000; - donpcevent "KvM03_BG::OnStop"; - end; - -OnStop: - disablenpc "TherapistKvM03a"; - disablenpc "TherapistKvM03b"; - enablenpc "VintenarKvM03a"; - enablenpc "VintenarKvM03b"; - // Warp Teams - bg_warp $@KvM03BG_id1,"bat_c03",53,128; - bg_warp $@KvM03BG_id2,"bat_c03",146,55; - donpcevent "KvM03_BG_Out::OnBegin"; - end; - -OnReset: - stopnpctimer; - stopnpctimer "KvM03_BG_Out"; - set .Croix_Count, 0; - set .Guillaume_Count, 0; - set .Croix_Score, 0; - set .Guillaume_Score, 0; - set $@KvM03BG_Victory, 0; - if( $@KvM03BG_id1 ) { bg_destroy $@KvM03BG_id1; set $@KvM03BG_id1, 0; } - if( $@KvM03BG_id2 ) { bg_destroy $@KvM03BG_id2; set $@KvM03BG_id2, 0; } - disablenpc "TherapistKvM03a"; - disablenpc "TherapistKvM03b"; - disablenpc "VintenarKvM03a"; - disablenpc "VintenarKvM03b"; - sleep 1000; - mapwarp "bat_c03","bat_room",155,150; - sleep 2000; - maprespawnguildid "bat_c03",0,3; // Just in case someone else - bg_updatescore "bat_c03",0,0; - sleep 2000; - set $@KvM03BG, 0; - donpcevent "KvM03_BG::OnReadyCheck"; // Maybe a game is ready to start - end; -} - -- script KvM03_BG_Out FAKE_NPC,{ - end; - -OnBegin: - initnpctimer; - end; - -OnTimer3000: - mapannounce "bat_c03","Battle of Kreiger Von Midgard will close in 1 minute!",1,0xC0C0C0; - end; -OnTimer30000: - mapannounce "bat_c03","Battle of Kreiger Von Midgard will close in 30 seconds!",1,0xC0C0C0; - end; -OnTimer50000: - mapannounce "bat_c03","Battle of Kreiger Von Midgard will close in 10 seconds!",1,0xC0C0C0; - end; -OnTimer60000: - donpcevent "KvM03_BG::OnReset"; - end; -} - -// Battleground Therapist -// ********************************************************************* - -bat_c03,51,130,5 script Therapist in battle::TherapistKvM03a 4_F_SISTER,{ - mes "[Therapist in battle]"; - mes "Just close your eyes, and take a deep breathe."; - mes "You can be free from pain."; - specialeffect(EF_HEAL, AREA, playerattached()); - close; -} - -bat_c03,148,53,1 script Therapist in battle::TherapistKvM03b 4_F_SISTER,{ - mes "[Therapist in battle]"; - mes "Just close your eyes, and take a deep breathe."; - mes "You can be free from pain."; - specialeffect(EF_HEAL, AREA, playerattached()); - close; -} - -// Battleground rewards -// ********************************************************************* - -bat_c03,51,130,5 script Guillaume Vintenar::VintenarKvM03a 4_M_KY_HEAD,{ - if( $@KvM03BG_Victory ) - { - if( $@KvM03BG_Victory == 3 ) - { - setquest 6025; - bg_leave; - warp "bat_room",155,150; - end; - } - else if( $@KvM03BG_Victory == Bat_Team ) - { // Victory - set .@reward, 1; - mes "[Swandery]"; - mes "Blessed Guillaume!!"; - mes "Let's enjoy our glorious victory!"; - mes "" + strcharinfo(PC_NAME) + ", its a sign reflecting victory"; - close2; - } else { - set .@reward, 0; - mes "[Swandery]"; - mes "You lost, but you're dedicated to this battle."; - mes "This is a reward for your great dedication by Guillaume Marollo!"; - mes "Just take this defeat a lesson, and later you would definitely learn."; - close2; - } - - setquest 6025; - getitem 7773, .@reward; - bg_leave; - warp "bat_room",155,150; - end; - } - end; -} - -bat_c03,148,53,1 script Croix Vintenar::VintenarKvM03b 4_M_CRU_HEAD,{ - if( $@KvM03BG_Victory ) - { - if( $@KvM03BG_Victory == 3 ) - { - setquest 6025; - bg_leave; - warp "bat_room",155,150; - end; - } - else if( $@KvM03BG_Victory == Bat_Team ) - { // Victory - set .@reward, 1; - mes "[Swandery]"; - mes "Blessed Croax!!"; - mes "Let's enjoy our glorious victory!"; - mes "" + strcharinfo(PC_NAME) + ", its a sign reflecting victory"; - close2; - } else { - set .@reward, 0; - mes "[Swandery]"; - mes "Oh, " + strcharinfo(PC_NAME) + ". Don't be sad."; - mes "Even though we didn't win, we did our best."; - mes "Please don't forget this battle. We can win the next."; - close2; - } - - setquest 6025; - getitem 7773, .@reward; - bg_leave; - warp "bat_room",155,150; - end; - } - end; -} diff --git a/npc/custom/battleground/bg_tierra_01.txt b/npc/custom/battleground/bg_tierra_01.txt deleted file mode 100644 index 2640723b3..000000000 --- a/npc/custom/battleground/bg_tierra_01.txt +++ /dev/null @@ -1,471 +0,0 @@ -// ============================================================================== -// BattleGround System - Tierra Valley 1 -// ============================================================================== - -// Registration NPC's -// ********************************************************************* - -bat_room,58,227,4 script Registration::TV1R_Guillaume 4_M_KY_KNT,{ - end; -OnInit: - waitingroom "Battle Station 10 Players",10,"Tierra_BG1::OnGuillaumeJoin",1; - end; -OnEnterBG: - set $@TierraBG1_id1, waitingroom2bg("bat_a01",50,374,"Tierra_BG1::OnGuillaumeQuit",""); - end; -} - -bat_room,58,204,0 script Registration::TV1R_Croix 4_M_CRU_KNT,{ - end; -OnInit: - waitingroom "Battle Station 10 Players",10,"Tierra_BG1::OnCroixJoin",1; - end; -OnEnterBG: - set $@TierraBG1_id2, waitingroom2bg("bat_a01",42,16,"Tierra_BG1::OnCroixQuit",""); - end; -} - -// Battleground Engine -// ********************************************************************* - -- script Tierra_BG1 FAKE_NPC,{ - end; - -OnInit: - disablenpc "Croix Vintenar#tv1"; - disablenpc "Guillaume Vintenar#tv1"; - disablenpc "Therapist in battle#tv11"; - disablenpc "Therapist in battle#tv12"; - end; - -OnGuillaumeQuit: -OnCroixQuit: - set BG_Delay_Tick, gettimetick(2) + 1200; - end; - -OnGuillaumeJoin: -OnCroixJoin: - if( $@TierraBG1 == 0 ) - donpcevent "Tierra_BG1::OnReadyCheck"; - end; - -OnReadyCheck: - if( $@TierraBG1 ) - end; - set .@Guillaume, getwaitingroomstate(0,"TV1R_Guillaume"); - set .@Croix, getwaitingroomstate(0,"TV1R_Croix"); - - if( .@Guillaume < 10 || .@Croix < 10 ) - { - mapannounce "bat_room","Battleground -- Tierra Valley [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0xFFA500; - end; - } - - set $@TierraBG1, 1; - donpcevent "TV1R_Croix::OnEnterBG"; - donpcevent "TV1R_Guillaume::OnEnterBG"; - donpcevent "Guillaume_TV1B::OnBuild"; - donpcevent "Croix_TV1B::OnBuild"; - bg_monster $@TierraBG1_id1,"bat_a01",176,345,"Food Depot",1909,"Tierra_BG1::OnGuillaumeBreak"; - bg_monster $@TierraBG1_id2,"bat_a01",167,50,"Food Storage",1910,"Tierra_BG1::OnCroixBreak"; - bg_monster 0,"bat_a01",273,204,"Neutrality Flag",1911,"Tierra_BG1::OnNeutralBreak"; - - set .Neutral_Base, 0; - set $@TierraBG1_Victory, 0; - - set .Guardian_1, 0; - set .Guardian_2, 0; - set .Guardian_3, 0; - - enablenpc "Therapist in battle#tv11"; - enablenpc "Therapist in battle#tv12"; - disablenpc "Croix Vintenar#tv1"; - disablenpc "Guillaume Vintenar#tv1"; - // Respawner - donpcevent "#gtv1_respawn::OnBGStart"; - donpcevent "#ctv1_respawn::OnBGStart"; - donpcevent "#ntv1_respawn::OnBGStart"; - // Warp Teams - announce "Battleground -- Tierra Valley [80-99] has started!",0,0xFFA500; - bg_warp $@TierraBG1_id1,"bat_a01",353,344; - bg_warp $@TierraBG1_id2,"bat_a01",353,52; - // Final Messages - sleep 6000; - mapannounce "bat_a01","Guillaume Vintenar Axl Rose : Let's attack to burn down Croix's food storage",1,0x0000FF; - sleep 2000; - mapannounce "bat_a01","Croix Vintenar Swandery : Master of Valhalla! Let us be gifted with unfailing faith and courage",1,0xFF0000; - - initnpctimer; - end; - -OnNeutralBreak: - if( getcharid(CHAR_ID_BG) == $@TierraBG1_id1 ) - { - mapannounce "bat_a01","Guillaume obtained a neurality banner, so they have an advantage.",1,0x0000FF; - bg_team_setxy $@TierraBG1_id2,42,16; - areawarp "bat_a01",52,208,61,217,"bat_a01",42,16; - } - else if( getcharid(CHAR_ID_BG) == $@TierraBG1_id2 ) - { - mapannounce "bat_a01","Croix obtained a neutrality banner, so they have an advantage.",1,0xFF0000; - bg_team_setxy $@TierraBG1_id1,50,374; - areawarp "bat_a01",52,208,61,217,"bat_a01",50,374; - } - else end; - - set .Neutral_Base, getcharid(CHAR_ID_BG); - bg_team_setxy .Neutral_Base,56,212; - - if( .Guardian_1 == 0 ) - set .Guardian_1, bg_monster(.Neutral_Base,"bat_a01",280,233,"Guardian",1949,"Tierra_BG1::OnGuardian1"); - else - bg_monster_set_team .Guardian_1, .Neutral_Base; - - if( .Guardian_2 == 0 ) - set .Guardian_2, bg_monster(.Neutral_Base,"bat_a01",287,203,"Guardian",1950,"Tierra_BG1::OnGuardian2"); - else - bg_monster_set_team .Guardian_2, .Neutral_Base; - - if( .Guardian_3 == 0 ) - set .Guardian_3, bg_monster(.Neutral_Base,"bat_a01",268,204,"Guardian",1949,"Tierra_BG1::OnGuardian3"); - else - bg_monster_set_team .Guardian_3, .Neutral_Base; - - sleep 10000; - if( $@TierraBG1 != 1 ) end; - - if( .Neutral_Base == $@TierraBG1_id1 ) - bg_monster .Neutral_Base,"bat_a01",273,204,"Guillaume Flag",1912,"Tierra_BG1::OnNeutralBreak"; - else if( .Neutral_Base == $@TierraBG1_id2 ) - bg_monster .Neutral_Base,"bat_a01",273,204,"Croix Flag",1913,"Tierra_BG1::OnNeutralBreak"; - end; - -OnGuardian1: set .Guardian_1, 0; end; -OnGuardian2: set .Guardian_2, 0; end; -OnGuardian3: set .Guardian_3, 0; end; - -OnGuillaumeBreak: - set $@TierraBG1_Victory, 2; - mapannounce "bat_a01","Croix Vintenar Swandery: We destroyed Guillaume's food storehouse. We won that! Wow!",1,0xFF0000; - donpcevent "Tierra_BG1::OnStop"; - end; - -OnCroixBreak: - set $@TierraBG1_Victory, 1; - mapannounce "bat_a01","Guillaume Vintenar Axl Rose: We destroyed Croix's food storehouse. We won that! Wow!",1,0x0000FF; - donpcevent "Tierra_BG1::OnStop"; - end; - -OnTimer2400000: - mapannounce "bat_a01","Battle of Tierra Gorge will ends in 5 minutes",1,0xFFA500; - end; -OnTimer2640000: - mapannounce "bat_a01","Battle of Tierra Gorge will ends in 1 minute",1,0xFFA500; - end; - -OnTimer2700000: - set $@TierraBG1_Victory, 3; // Draw Game - mapannounce "bat_a01","Battle of Tierra Gorge is over. The time is out, this is a Tie",1,0xFFA500; - donpcevent "Tierra_BG1::OnStop"; - end; - -OnStop: - set $@TierraBG1, 2; - disablenpc "Therapist in battle#tv11"; - disablenpc "Therapist in battle#tv12"; - donpcevent "#gtv1_respawn::OnBGStop"; - donpcevent "#ctv1_respawn::OnBGStop"; - donpcevent "#ntv1_respawn::OnBGStop"; - enablenpc "Croix Vintenar#tv1"; - enablenpc "Guillaume Vintenar#tv1"; - killmonster "bat_a01","Tierra_BG1::OnGuillaumeBreak"; - killmonster "bat_a01","Tierra_BG1::OnCroixBreak"; - killmonster "bat_a01","Tierra_BG1::OnNeutralBreak"; - killmonster "bat_a01","Tierra_BG1::OnGuardian1"; - killmonster "bat_a01","Tierra_BG1::OnGuardian2"; - killmonster "bat_a01","Tierra_BG1::OnGuardian3"; - stopnpctimer; - sleep 3000; - bg_warp $@TierraBG1_id1,"bat_a01",50,374; - bg_warp $@TierraBG1_id2,"bat_a01",42,16; - sleep 3000; - mapannounce "bat_a01","Battle of Tierra Gorge will close in 1 minute!",1,0xFFA500; - initnpctimer; - end; - -OnTimer30000: - if( $@TierraBG1 == 2 ) - mapannounce "bat_a01","Battle of Tierra Valley will close in 30 seconds!",1,0xFFA500; - end; -OnTimer50000: - if( $@TierraBG1 == 2 ) - mapannounce "bat_a01","Battle of Tierra Valley will close in 10 seconds!",1,0xFFA500; - end; - -OnTimer60000: - if( $@TierraBG1 != 2 ) - end; -OnReset: - stopnpctimer; - set .Neutral_Base, 0; - disablenpc "Croix Vintenar#tv1"; - disablenpc "Guillaume Vintenar#tv1"; - disablenpc "Therapist in battle#tv11"; - disablenpc "Therapist in battle#tv12"; - donpcevent "#gtv1_respawn::OnBGStop"; - donpcevent "#ctv1_respawn::OnBGStop"; - donpcevent "#ntv1_respawn::OnBGStop"; - - killmonster "bat_a01","Tierra_BG1::OnGuillaumeBreak"; - killmonster "bat_a01","Tierra_BG1::OnCroixBreak"; - killmonster "bat_a01","Tierra_BG1::OnNeutralBreak"; - killmonster "bat_a01","Tierra_BG1::OnGuardian1"; - killmonster "bat_a01","Tierra_BG1::OnGuardian2"; - killmonster "bat_a01","Tierra_BG1::OnGuardian3"; - donpcevent "Guillaume_TV1B::OnDestroy"; - donpcevent "Croix_TV1B::OnDestroy"; - - 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; } - sleep 1000; - mapwarp "bat_a01","bat_room",155,150; - sleep 2000; - maprespawnguildid "bat_a01",0,3; // Just in case someone else - sleep 2000; - set $@TierraBG1, 0; - donpcevent "Tierra_BG1::OnReadyCheck"; // Maybe a game is ready to start - end; -} - -// Other Flags -// ********************************************************************* - -bat_a01,148,85,1 duplicate(Croix camp#bat) Croix camp#bat10 1_FLAG_EAGLE -bat_a01,155,85,1 duplicate(Croix camp#bat) Croix camp#bat11 1_FLAG_EAGLE -bat_a01,357,75,1 duplicate(Croix camp#bat) Croix camp#bat12 1_FLAG_EAGLE -bat_a01,348,74,1 duplicate(Croix camp#bat) Croix camp#bat13 1_FLAG_EAGLE -bat_a01,199,49,1 duplicate(Croix camp#bat) Croix camp#bat14 1_FLAG_EAGLE -bat_a01,168,16,1 duplicate(Croix camp#bat) Croix camp#bat15 1_FLAG_EAGLE -bat_a01,138,12,1 duplicate(Croix camp#bat) Croix camp#bat16 1_FLAG_EAGLE -bat_a01,108,35,1 duplicate(Croix camp#bat) Croix camp#bat17 1_FLAG_EAGLE -bat_a01,164,308,1 duplicate(Guillaume camp#bat) Guillaume camp#bat10 1_FLAG_LION -bat_a01,157,308,1 duplicate(Guillaume camp#bat) Guillaume camp#bat11 1_FLAG_LION -bat_a01,359,327,1 duplicate(Guillaume camp#bat) Guillaume camp#bat12 1_FLAG_LION -bat_a01,350,326,1 duplicate(Guillaume camp#bat) Guillaume camp#bat13 1_FLAG_LION -bat_a01,209,344,1 duplicate(Guillaume camp#bat) Guillaume camp#bat14 1_FLAG_LION -bat_a01,173,380,1 duplicate(Guillaume camp#bat) Guillaume camp#bat15 1_FLAG_LION -bat_a01,150,380,1 duplicate(Guillaume camp#bat) Guillaume camp#bat16 1_FLAG_LION -bat_a01,118,357,1 duplicate(Guillaume camp#bat) Guillaume camp#bat17 1_FLAG_LION -bat_a01,119,336,1 duplicate(Guillaume camp#bat) Guillaume camp#bat18 1_FLAG_LION - -// Barricades -// ********************************************************************* - -- script Guillaume_TV1B FAKE_NPC,{ - end; - -OnBuild: - for( set .@i, 0; .@i < 16; set .@i, .@i + 1 ) - bg_monster 0,"bat_a01",170+.@i,130,"Barricade",1906,"Guillaume_TV1B::OnWall"; - - setwall "bat_a01",170,130,16,6,1,"bat_a01_g1"; - set .MyMobCount,16; - end; - -OnDestroy: - killmonster "bat_a01","Guillaume_TV1B::OnWall"; - delwall "bat_a01_g1"; - set .MyMobCount,0; - end; - -OnWall: - if( set(.MyMobCount,.MyMobCount - 1) < 1 ) - { - delwall "bat_a01_g1"; - mapannounce "bat_a01","South Gate : The Gate has been Destroy!!",1,0xFFA500; - } - end; -} - -- script Croix_TV1B FAKE_NPC,{ - end; - -OnBuild: - for( set .@i, 0; .@i < 16; set .@i, .@i + 1 ) - bg_monster 0,"bat_a01",186+.@i,266,"Barricade",1906,"Croix_TV1B::OnWall"; - - setwall "bat_a01",186,266,16,6,1,"bat_a01_c1"; - set .MyMobCount,16; - end; - -OnDestroy: - killmonster "bat_a01","Croix_TV1B::OnWall"; - delwall "bat_a01_c1"; - set .MyMobCount,0; - end; - -OnWall: - if( set(.MyMobCount,.MyMobCount - 1) < 1 ) - { - delwall "bat_a01_c1"; - mapannounce "bat_a01","North Gate : A Gate has been Destroy!!",1,0xFFA500; - } - end; -} - -// Battleground rewards -// ********************************************************************* - -bat_a01,45,19,3 script Croix Vintenar#tv1 4_M_CRU_HEAD,{ - if( $@TierraBG1_Victory ) - { - if( $@TierraBG1_Victory == Bat_Team ) - { // Victory - set .@reward, 3; - mes "[Swandery]"; - mes "Blessed Croax!!"; - mes "Let's enjoy our glorious victory!"; - mes "" + strcharinfo(PC_NAME) + ", its a sign reflecting victory"; - close2; - } else { - set .@reward, 1; - mes "[Swandery]"; - mes "Oh, " + strcharinfo(PC_NAME) + ". Don't be sad."; - mes "Even though we didn't win, we did our best."; - mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next."; - close2; - } - - setquest 2069; - getitem 7828, .@reward; - bg_leave; - warp "bat_room",155,150; - end; - } - end; -} - -bat_a01,53,377,3 script Guillaume Vintenar#tv1 4_M_KY_HEAD,{ - if( $@TierraBG1_Victory ) - { - if( $@TierraBG1_Victory == Bat_Team ) - { // Victory - set .@reward, 3; - mes "[Swandery]"; - mes "Blessed Guillaume!!"; - mes "Let's enjoy our glorious victory!"; - mes "" + strcharinfo(PC_NAME) + ", its a sign reflecting victory"; - close2; - } else { - set .@reward, 1; - mes "[Swandery]"; - mes "You lost, but you're dedicated to this battle."; - mes "This is a reward for your great dedication by Guillaume Marollo!"; - mes "Just take this defeat a lesson, and later you would definitely learn."; - close2; - } - - setquest 2069; - getitem 7828, .@reward; - bg_leave; - warp "bat_room",155,150; - end; - } - end; -} - -// Battleground Therapist -// ********************************************************************* - -bat_a01,60,216,3 script Ghost#tv13 4_GHOSTRING,{ - mes "[Ghost in valley]"; - mes "Boo...Boo..."; - specialeffect(EF_HEAL, AREA, playerattached()); - close; -} - -bat_a01,53,377,3 script Therapist in battle#tv12 4_F_SISTER,{ - mes "[Therapist in battle]"; - mes "Just close your eyes, and take a deep breathe."; - mes "You can be free from pain."; - specialeffect(EF_HEAL, AREA, playerattached()); - close; -} - -bat_a01,45,18,3 script Therapist in battle#tv11 4_F_SISTER,{ - mes "[Therapist in battle]"; - mes "Just close your eyes, and take a deep breathe."; - mes "You can be free from pain."; - specialeffect(EF_HEAL, AREA, playerattached()); - close; -} - -// Battleground Respawn -// ********************************************************************* - -bat_a01,57,213,0 script #ntv1_respawn HIDDEN_WARP_NPC,{ - end; - -OnBGStart: - initnpctimer; - end; - -OnBGStop: - stopnpctimer; - end; - -OnTimer19000: - specialeffect(EF_SANCTUARY); - end; - -OnTimer20000: - areapercentheal "bat_a01",52,208,61,217,100,100; - areawarp "bat_a01",52,208,61,217,"bat_a01",301,208; - initnpctimer; - end; -} - -bat_a01,50,374,0 script #gtv1_respawn HIDDEN_WARP_NPC,{ - end; - -OnBGStart: - initnpctimer; - end; - -OnBGStop: - stopnpctimer; - end; - -OnTimer24000: - specialeffect(EF_SANCTUARY); - end; - -OnTimer25000: - areapercentheal "bat_a01",46,370,54,378,100,100; - areawarp "bat_a01",46,370,54,378,"bat_a01",354,340; - initnpctimer; - end; -} - -bat_a01,42,16,0 script #ctv1_respawn HIDDEN_WARP_NPC,{ - end; - -OnBGStart: - initnpctimer; - end; - -OnBGStop: - stopnpctimer; - end; - -OnTimer24000: - specialeffect(EF_SANCTUARY); - end; - -OnTimer25000: - areapercentheal "bat_a01",38,12,47,21,100,100; - areawarp "bat_a01",38,12,47,21,"bat_a01",354,57; - initnpctimer; - end; -} diff --git a/npc/custom/battleground/bg_tierra_02.txt b/npc/custom/battleground/bg_tierra_02.txt deleted file mode 100644 index 98b604fd7..000000000 --- a/npc/custom/battleground/bg_tierra_02.txt +++ /dev/null @@ -1,471 +0,0 @@ -// ============================================================================== -// BattleGround System - Tierra Valley 2 -// ============================================================================== - -// Registration NPC's -// ********************************************************************* - -bat_room,114,227,4 script Registration::TV2R_Guillaume 4_M_KY_KNT,{ - end; -OnInit: - waitingroom "Battle Station 10 Players",10,"Tierra_BG2::OnGuillaumeJoin",1; - end; -OnEnterBG: - set $@TierraBG2_id1, waitingroom2bg("bat_a02",50,374,"Tierra_BG2::OnGuillaumeQuit",""); - end; -} - -bat_room,114,204,0 script Registration::TV2R_Croix 4_M_CRU_KNT,{ - end; -OnInit: - waitingroom "Battle Station 10 Players",10,"Tierra_BG2::OnCroixJoin",1; - end; -OnEnterBG: - set $@TierraBG2_id2, waitingroom2bg("bat_a02",42,16,"Tierra_BG2::OnCroixQuit",""); - end; -} - -// Battleground Engine -// ********************************************************************* - -- script Tierra_BG2 FAKE_NPC,{ - end; - -OnInit: - disablenpc "Croix Vintenar#tv2"; - disablenpc "Guillaume Vintenar#tv2"; - disablenpc "Therapist in battle#tv21"; - disablenpc "Therapist in battle#tv22"; - end; - -OnGuillaumeQuit: -OnCroixQuit: - set BG_Delay_Tick, gettimetick(2) + 1200; - end; - -OnGuillaumeJoin: -OnCroixJoin: - if( $@TierraBG2 == 0 ) - donpcevent "Tierra_BG2::OnReadyCheck"; - end; - -OnReadyCheck: - if( $@TierraBG2 ) - end; - set .@Guillaume, getwaitingroomstate(0,"TV2R_Guillaume"); - set .@Croix, getwaitingroomstate(0,"TV2R_Croix"); - - if( .@Guillaume < 10 || .@Croix < 10 ) - { - mapannounce "bat_room","Battleground -- Tierra Valley [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0xF4A460; - end; - } - - set $@TierraBG2, 1; - donpcevent "TV2R_Croix::OnEnterBG"; - donpcevent "TV2R_Guillaume::OnEnterBG"; - donpcevent "Guillaume_TV2B::OnBuild"; - donpcevent "Croix_TV2B::OnBuild"; - bg_monster $@TierraBG2_id1,"bat_a02",176,345,"Food Depot",1909,"Tierra_BG2::OnGuillaumeBreak"; - bg_monster $@TierraBG2_id2,"bat_a02",167,50,"Food Storage",1910,"Tierra_BG2::OnCroixBreak"; - bg_monster 0,"bat_a02",273,204,"Neutrality Flag",1911,"Tierra_BG2::OnNeutralBreak"; - - set .Neutral_Base, 0; - set $@TierraBG2_Victory, 0; - - set .Guardian_1, 0; - set .Guardian_2, 0; - set .Guardian_3, 0; - - enablenpc "Therapist in battle#tv21"; - enablenpc "Therapist in battle#tv22"; - disablenpc "Croix Vintenar#tv2"; - disablenpc "Guillaume Vintenar#tv2"; - // Respawner - donpcevent "#gtv2_respawn::OnBGStart"; - donpcevent "#ctv2_respawn::OnBGStart"; - donpcevent "#ntv2_respawn::OnBGStart"; - // Warp Teams - announce "Battleground -- Tierra Valley [80-99] has started!",0,0xF4A460; - bg_warp $@TierraBG2_id1,"bat_a02",353,344; - bg_warp $@TierraBG2_id2,"bat_a02",353,52; - // Final Messages - sleep 6000; - mapannounce "bat_a02","Guillaume Vintenar Axl Rose : Let's attack to burn down Croix's food storage",1,0x0000FF; - sleep 2000; - mapannounce "bat_a02","Croix Vintenar Swandery : Master of Valhalla! Let us be gifted with unfailing faith and courage",1,0xFF0000; - - initnpctimer; - end; - -OnNeutralBreak: - if( getcharid(CHAR_ID_BG) == $@TierraBG2_id1 ) - { - mapannounce "bat_a02","Guillaume obtained a neurality banner, so they have an advantage.",1,0x0000FF; - bg_team_setxy $@TierraBG2_id2,42,16; - areawarp "bat_a02",52,208,61,217,"bat_a02",42,16; - } - else if( getcharid(CHAR_ID_BG) == $@TierraBG2_id2 ) - { - mapannounce "bat_a02","Croix obtained a neutrality banner, so they have an advantage.",1,0xFF0000; - bg_team_setxy $@TierraBG2_id1,50,374; - areawarp "bat_a02",52,208,61,217,"bat_a02",50,374; - } - else end; - - set .Neutral_Base, getcharid(CHAR_ID_BG); - bg_team_setxy .Neutral_Base,56,212; - - if( .Guardian_1 == 0 ) - set .Guardian_1, bg_monster(.Neutral_Base,"bat_a02",280,233,"Guardian",1949,"Tierra_BG2::OnGuardian1"); - else - bg_monster_set_team .Guardian_1, .Neutral_Base; - - if( .Guardian_2 == 0 ) - set .Guardian_2, bg_monster(.Neutral_Base,"bat_a02",287,203,"Guardian",1950,"Tierra_BG2::OnGuardian2"); - else - bg_monster_set_team .Guardian_2, .Neutral_Base; - - if( .Guardian_3 == 0 ) - set .Guardian_3, bg_monster(.Neutral_Base,"bat_a02",268,204,"Guardian",1949,"Tierra_BG2::OnGuardian3"); - else - bg_monster_set_team .Guardian_3, .Neutral_Base; - - sleep 10000; - if( $@TierraBG2 != 1 ) end; - - if( .Neutral_Base == $@TierraBG2_id1 ) - bg_monster .Neutral_Base,"bat_a02",273,204,"Guillaume Flag",1912,"Tierra_BG2::OnNeutralBreak"; - else if( .Neutral_Base == $@TierraBG2_id2 ) - bg_monster .Neutral_Base,"bat_a02",273,204,"Croix Flag",1913,"Tierra_BG2::OnNeutralBreak"; - end; - -OnGuardian1: set .Guardian_1, 0; end; -OnGuardian2: set .Guardian_2, 0; end; -OnGuardian3: set .Guardian_3, 0; end; - -OnGuillaumeBreak: - set $@TierraBG2_Victory, 2; - mapannounce "bat_a02","Croix Vintenar Swandery: We destroyed Guillaume's food storehouse. We won that! Wow!",1,0xFF0000; - donpcevent "Tierra_BG2::OnStop"; - end; - -OnCroixBreak: - set $@TierraBG2_Victory, 1; - mapannounce "bat_a02","Guillaume Vintenar Axl Rose: We destroyed Croix's food storehouse. We won that! Wow!",1,0x0000FF; - donpcevent "Tierra_BG2::OnStop"; - end; - -OnTimer2400000: - mapannounce "bat_a02","Battle of Tierra Gorge will ends in 5 minutes",1,0xF4A460; - end; -OnTimer2640000: - mapannounce "bat_a02","Battle of Tierra Gorge will ends in 1 minute",1,0xF4A460; - end; - -OnTimer2700000: - set $@TierraBG2_Victory, 3; // Draw Game - mapannounce "bat_a02","Battle of Tierra Gorge is over. The time is out, this is a Tie",1,0xF4A460; - donpcevent "Tierra_BG2::OnStop"; - end; - -OnStop: - set $@TierraBG2, 2; - disablenpc "Therapist in battle#tv21"; - disablenpc "Therapist in battle#tv22"; - donpcevent "#gtv2_respawn::OnBGStop"; - donpcevent "#ctv2_respawn::OnBGStop"; - donpcevent "#ntv2_respawn::OnBGStop"; - enablenpc "Croix Vintenar#tv2"; - enablenpc "Guillaume Vintenar#tv2"; - killmonster "bat_a02","Tierra_BG2::OnGuillaumeBreak"; - killmonster "bat_a02","Tierra_BG2::OnCroixBreak"; - killmonster "bat_a02","Tierra_BG2::OnNeutralBreak"; - killmonster "bat_a02","Tierra_BG2::OnGuardian1"; - killmonster "bat_a02","Tierra_BG2::OnGuardian2"; - killmonster "bat_a02","Tierra_BG2::OnGuardian3"; - stopnpctimer; - sleep 3000; - bg_warp $@TierraBG2_id1,"bat_a02",50,374; - bg_warp $@TierraBG2_id2,"bat_a02",42,16; - sleep 3000; - mapannounce "bat_a02","Battle of Tierra Gorge will close in 1 minute!",1,0xF4A460; - initnpctimer; - end; - -OnTimer30000: - if( $@TierraBG2 == 2 ) - mapannounce "bat_a02","Battle of Tierra Valley will close in 30 seconds!",1,0xF4A460; - end; -OnTimer50000: - if( $@TierraBG2 == 2 ) - mapannounce "bat_a02","Battle of Tierra Valley will close in 10 seconds!",1,0xF4A460; - end; - -OnTimer60000: - if( $@TierraBG2 != 2 ) - end; -OnReset: - stopnpctimer; - set .Neutral_Base, 0; - disablenpc "Croix Vintenar#tv2"; - disablenpc "Guillaume Vintenar#tv2"; - disablenpc "Therapist in battle#tv21"; - disablenpc "Therapist in battle#tv22"; - donpcevent "#gtv2_respawn::OnBGStop"; - donpcevent "#gtv2_respawn::OnBGStop"; - donpcevent "#ctv2_respawn::OnBGStop"; - - killmonster "bat_a02","Tierra_BG2::OnGuillaumeBreak"; - killmonster "bat_a02","Tierra_BG2::OnCroixBreak"; - killmonster "bat_a02","Tierra_BG2::OnNeutralBreak"; - killmonster "bat_a02","Tierra_BG2::OnGuardian1"; - killmonster "bat_a02","Tierra_BG2::OnGuardian2"; - killmonster "bat_a02","Tierra_BG2::OnGuardian3"; - donpcevent "Guillaume_TV2B::OnDestroy"; - donpcevent "Croix_TV2B::OnDestroy"; - - 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; } - sleep 1000; - mapwarp "bat_a02","bat_room",155,150; - sleep 2000; - maprespawnguildid "bat_a02",0,3; // Just in case someone else - sleep 2000; - set $@TierraBG2, 0; - donpcevent "Tierra_BG2::OnReadyCheck"; // Maybe a game is ready to start - end; -} - -// Other Flags -// ********************************************************************* - -bat_a02,148,85,1 duplicate(Croix camp#bat) Croix camp#bat22 1_FLAG_EAGLE -bat_a02,155,85,1 duplicate(Croix camp#bat) Croix camp#bat23 1_FLAG_EAGLE -bat_a02,357,75,1 duplicate(Croix camp#bat) Croix camp#bat24 1_FLAG_EAGLE -bat_a02,348,74,1 duplicate(Croix camp#bat) Croix camp#bat25 1_FLAG_EAGLE -bat_a02,199,49,1 duplicate(Croix camp#bat) Croix camp#bat26 1_FLAG_EAGLE -bat_a02,168,16,1 duplicate(Croix camp#bat) Croix camp#bat27 1_FLAG_EAGLE -bat_a02,138,12,1 duplicate(Croix camp#bat) Croix camp#bat28 1_FLAG_EAGLE -bat_a02,108,35,1 duplicate(Croix camp#bat) Croix camp#bat29 1_FLAG_EAGLE -bat_a02,164,308,1 duplicate(Guillaume camp#bat) Guillaume camp#bat23 1_FLAG_LION -bat_a02,157,308,1 duplicate(Guillaume camp#bat) Guillaume camp#bat24 1_FLAG_LION -bat_a02,359,327,1 duplicate(Guillaume camp#bat) Guillaume camp#bat25 1_FLAG_LION -bat_a02,350,326,1 duplicate(Guillaume camp#bat) Guillaume camp#bat26 1_FLAG_LION -bat_a02,209,344,1 duplicate(Guillaume camp#bat) Guillaume camp#bat27 1_FLAG_LION -bat_a02,173,380,1 duplicate(Guillaume camp#bat) Guillaume camp#bat28 1_FLAG_LION -bat_a02,150,380,1 duplicate(Guillaume camp#bat) Guillaume camp#bat29 1_FLAG_LION -bat_a02,118,357,1 duplicate(Guillaume camp#bat) Guillaume camp#bat30 1_FLAG_LION -bat_a02,119,336,1 duplicate(Guillaume camp#bat) Guillaume camp#bat31 1_FLAG_LION - -// Barricades -// ********************************************************************* - -- script Guillaume_TV2B FAKE_NPC,{ - end; - -OnBuild: - for( set .@i, 0; .@i < 16; set .@i, .@i + 1 ) - bg_monster 0,"bat_a02",170+.@i,130,"Barricade",1906,"Guillaume_TV2B::OnWall"; - - setwall "bat_a02",170,130,16,6,1,"bat_a02_g1"; - set .MyMobCount,16; - end; - -OnDestroy: - killmonster "bat_a02","Guillaume_TV2B::OnWall"; - delwall "bat_a02_g1"; - set .MyMobCount,0; - end; - -OnWall: - if( set(.MyMobCount,.MyMobCount - 1) < 1 ) - { - delwall "bat_a02_g1"; - mapannounce "bat_a02","South Gate : The Gate has been Destroy!!",1,0xF4A460; - } - end; -} - -- script Croix_TV2B FAKE_NPC,{ - end; - -OnBuild: - for( set .@i, 0; .@i < 16; set .@i, .@i + 1 ) - bg_monster 0,"bat_a02",186+.@i,266,"Barricade",1906,"Croix_TV2B::OnWall"; - - setwall "bat_a02",186,266,16,6,1,"bat_a02_c1"; - set .MyMobCount,16; - end; - -OnDestroy: - killmonster "bat_a02","Croix_TV2B::OnWall"; - delwall "bat_a02_c1"; - set .MyMobCount,0; - end; - -OnWall: - if( set(.MyMobCount,.MyMobCount - 1) < 1 ) - { - delwall "bat_a02_c1"; - mapannounce "bat_a02","North Gate : A Gate has been Destroy!!",1,0xF4A460; - } - end; -} - -// Battleground rewards -// ********************************************************************* - -bat_a02,45,19,3 script Croix Vintenar#tv2 4_M_CRU_HEAD,{ - if( $@TierraBG2_Victory ) - { - if( $@TierraBG2_Victory == Bat_Team ) - { // Victory - set .@reward, 3; - mes "[Swandery]"; - mes "Blessed Croax!!"; - mes "Let's enjoy our glorious victory!"; - mes "" + strcharinfo(PC_NAME) + ", its a sign reflecting victory"; - close2; - } else { - set .@reward, 1; - mes "[Swandery]"; - mes "Oh, " + strcharinfo(PC_NAME) + ". Don't be sad."; - mes "Even though we didn't win, we did our best."; - mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next."; - close2; - } - - setquest 2069; - getitem 7828, .@reward; - bg_leave; - warp "bat_room",155,150; - end; - } - end; -} - -bat_a02,53,377,3 script Guillaume Vintenar#tv2 4_M_KY_HEAD,{ - if( $@TierraBG2_Victory ) - { - if( $@TierraBG2_Victory == Bat_Team ) - { // Victory - set .@reward, 3; - mes "[Swandery]"; - mes "Blessed Guillaume!!"; - mes "Let's enjoy our glorious victory!"; - mes "" + strcharinfo(PC_NAME) + ", its a sign reflecting victory"; - close2; - } else { - set .@reward, 1; - mes "[Swandery]"; - mes "You lost, but you're dedicated to this battle."; - mes "This is a reward for your great dedication by Guillaume Marollo!"; - mes "Just take this defeat a lesson, and later you would definitely learn."; - close2; - } - - setquest 2069; - getitem 7828, .@reward; - bg_leave; - warp "bat_room",155,150; - end; - } - end; -} - -// Battleground Therapist -// ********************************************************************* - -bat_a02,60,216,3 script Ghost#tv23 4_GHOSTRING,{ - mes "[Ghost in valley]"; - mes "Boo...Boo..."; - specialeffect(EF_HEAL, AREA, playerattached()); - close; -} - -bat_a02,53,377,3 script Therapist in battle#tv22 4_F_SISTER,{ - mes "[Therapist in battle]"; - mes "Just close your eyes, and take a deep breathe."; - mes "You can be free from pain."; - specialeffect(EF_HEAL, AREA, playerattached()); - close; -} - -bat_a02,45,18,3 script Therapist in battle#tv21 4_F_SISTER,{ - mes "[Therapist in battle]"; - mes "Just close your eyes, and take a deep breathe."; - mes "You can be free from pain."; - specialeffect(EF_HEAL, AREA, playerattached()); - close; -} - -// Battleground Respawn -// ********************************************************************* - -bat_a02,57,213,0 script #ntv2_respawn HIDDEN_WARP_NPC,{ - end; - -OnBGStart: - initnpctimer; - end; - -OnBGStop: - stopnpctimer; - end; - -OnTimer19000: - specialeffect(EF_SANCTUARY); - end; - -OnTimer20000: - areapercentheal "bat_a02",52,208,61,217,100,100; - areawarp "bat_a02",52,208,61,217,"bat_a02",301,208; - initnpctimer; - end; -} - -bat_a02,50,374,0 script #gtv2_respawn HIDDEN_WARP_NPC,{ - end; - -OnBGStart: - initnpctimer; - end; - -OnBGStop: - stopnpctimer; - end; - -OnTimer24000: - specialeffect(EF_SANCTUARY); - end; - -OnTimer25000: - areapercentheal "bat_a02",46,370,54,378,100,100; - areawarp "bat_a02",46,370,54,378,"bat_a02",354,340; - initnpctimer; - end; -} - -bat_a02,42,16,0 script #ctv2_respawn HIDDEN_WARP_NPC,{ - end; - -OnBGStart: - initnpctimer; - end; - -OnBGStop: - stopnpctimer; - end; - -OnTimer24000: - specialeffect(EF_SANCTUARY); - end; - -OnTimer25000: - areapercentheal "bat_a02",38,12,47,21,100,100; - areawarp "bat_a02",38,12,47,21,"bat_a02",354,57; - initnpctimer; - end; -} diff --git a/npc/custom/bgqueue/flavius.txt b/npc/custom/bgqueue/flavius.txt deleted file mode 100644 index 21c79f48f..000000000 --- a/npc/custom/bgqueue/flavius.txt +++ /dev/null @@ -1,778 +0,0 @@ -//===== Hercules Script ====================================== -// BattleGround System - Flavius -//===== By: ================================================== -//= L0ne_W0lf -//===== Current Version: ===================================== -//= 1.5b -//===== Description: ========================================= -//= [AEGIS Conversion] -//= Flavius Battleground. -//= - Winning Team: 9 badges -//= - Losing Team: 3 badge -//===== Additional Comments: ================================= -//= 1.0 First Version. -//= 1.1 Fixed pink crystal spawning as blue. [L0ne_W0lf] -//= 1.2 Updated 'waitingroom' to support required zeny/lvl. [Kisuka] -//= 1.3 Removed MaxLvl check in waitingrooms. Replaced setwall with setcell. -//= 1.4 Attempt at implementing BG Queue [Ind/Hercules] -//= 1.5 Attempt at implementing BG Queue team-algorithm [jaBote] -//= 1.5b Adjustments to the team-splitting algorithm [Haruna] -//============================================================ - -//Tacham, while the script is under testings the original will remain, meaning if you wanna test this you need to disable the other, or they'll conflict. -bat_b01,15,15,3 script start#bat_b01 CLEAR_NPC,{ -OnInit: - mapwarp "bat_b01","bat_room",154,150; - end; - -//$@bg_queue_id is cleared after this event ends -OnPlayerListReady: - set $@FlaviusBG1_id1, bg_create_team("bat_b01",10,290); - set $@FlaviusBG1_id2, bg_create_team("bat_b01",390,10); - - set $@Croix_QueueBG1, queue(); - set $@Guill_QueueBG1, queue(); - - queueopt($@Guill_QueueBG1, QUEUEOPT_LOGOUT, "start#bat_b01::OnGuillaumeQuit"); - queueopt($@Croix_QueueBG1, QUEUEOPT_LOGOUT, "start#bat_b01::OnCroixQuit"); - - set .@i, 0; - - copyarray .@bg_member[0],$@bg_member[0],$@bg_member_size; - copyarray .@bg_member_group[0],$@bg_member_group[0],$@bg_member_size; - copyarray .@bg_member_type[0],$@bg_member_type[0],$@bg_member_size; - - freeloop(1); - // Counting all participants and determining sizes, condensing .@bg_member_group - set .@nogroupcount, 0; - for (set .@i, 0; .@i < getarraysize(.@bg_member); set .@i, .@i + 1) { - if (.@bg_member_group[.@i] == 0) { // Just count them - set .@nogroupcount, .@nogroupcount + 1; - continue; - } - // check if .@bg_member_group and .@bg_member_type already exists on these groups. - for (set .@j, 0; .@j < getarraysize(.@bg_groups); set .@j, .@j + 1) { // <= since it has to start working even if the array is still blank - if ( (.@bg_member_group[.@i] == .@bg_groups[.@j]) && (.@bg_member_type[.@i] == .@bg_types[.@j]) ) { - set .@bg_count[.@j], .@bg_count[.@j] + 1; - break; - } - // Else keep running the loop until we find there's a group already made or make a new one - } - if (.@j == (getarraysize(.@bg_groups)) ) { // It isn't there, insert a new entry at j - set .@bg_groups[.@j], .@bg_member_group[.@i]; - set .@bg_types[.@j], .@bg_member_type[.@i]; - set .@bg_count[.@j], 1; - } - } - - // Now, sorting the group arrays from amount of population descending! Bubble sort powers, I call upon thee! - // Type doesn't matter here for precedence checks, but also needs to be sorted the same way along with groups - for (set .@i, 0; .@i < getarraysize(.@bg_groups); set .@i, .@i + 1) { - for (set .@j, 0; .@j < (getarraysize(.@bg_groups) - .@i); set .@j, .@j + 1) { - if (.@bg_count[.@j] < .@bg_count[.@j+1]){ - set .@temp1, .@bg_groups[.@j]; - set .@temp2, .@bg_types[.@j]; - set .@temp3, .@bg_count[.@j]; - set .@bg_groups[.@j], .@bg_groups[.@j+1]; - set .@bg_types[.@j], .@bg_types[.@j+1]; - set .@bg_count[.@j], .@bg_count[.@j+1]; - set .@bg_groups[.@j+1], .@temp1; - set .@bg_types[.@j+1], .@temp2; - set .@bg_count[.@j+1], .@temp3; - } - } - } - - // Add the groups to the queues! :D - for (set .@i, 0; .@i < getarraysize(.@bg_groups); set .@i, .@i + 1){ - if (queuesize($@Croix_QueueBG1) <= queuesize($@Guill_QueueBG1)){ // Catch'em all and add to the queue! - for (set .@j, 0; .@j < getarraysize(.@bg_member); set .@j, .@j + 1) { - if ( (.@bg_groups[.@i] == .@bg_member_group[.@j]) && (.@bg_types[.@i] == .@bg_member_type[.@j]) ) { - bg_join_team($@FlaviusBG1_id1,.@bg_member[.@j]); - queueadd($@Croix_QueueBG1, .@bg_member[.@j]); - } - } - } - else { - for (set .@j, 0; .@j < getarraysize(.@bg_member); set .@j, .@j + 1) { - if ( (.@bg_groups[.@i] == .@bg_member_group[.@j]) && (.@bg_types[.@i] == .@bg_member_type[.@j]) ) { - bg_join_team($@FlaviusBG1_id2,.@bg_member[.@j]); - queueadd($@Guill_QueueBG1, .@bg_member[.@j]); - } - } - } - } - // Don't forget the people that go on their own! - for (set .@i, 0; .@i <= getarraysize(.@bg_member); set .@i, .@i+1) { - if (.@bg_member_group[.@i] == 0) { // Get alone people only - if (queuesize($@Croix_QueueBG1) <= queuesize($@Guill_QueueBG1)) { - bg_join_team($@FlaviusBG1_id1,.@bg_member[.@i]); - queueadd($@Croix_QueueBG1, .@bg_member[.@i]); - } - else { - bg_join_team($@FlaviusBG1_id2,.@bg_member[.@i]); - queueadd($@Guill_QueueBG1, .@bg_member[.@i]); - } - } - } - freeloop(0); - - set $@FlaviusBG1, 1; - set $@FlaviusBG1_Victory, 0; - set $@Croix_ScoreBG1, 0; - set $@Guill_ScoreBG1, 0; - - bg_updatescore "bat_b01",$@Guill_ScoreBG1,$@Croix_ScoreBG1; - - donpcevent "OBJ#bat_b01_a::OnKill"; - donpcevent "OBJ#bat_b01_a::OnEnable"; - donpcevent "OBJ#bat_b01_b::OnKill"; - donpcevent "OBJ#bat_b01_b::OnEnable"; - donpcevent "guardian#bat_b01_a::OnKill"; - donpcevent "guardian#bat_b01_b::OnKill"; - donpcevent "guardian#bat_b01_a::OnEnable"; - donpcevent "guardian#bat_b01_b::OnEnable"; - donpcevent "cell#bat_b01_a::OnRed"; - donpcevent "cell#bat_b01_b::OnRed"; - donpcevent "time#bat_b01::OnEnable"; - disablenpc "Guillaume Vintenar#b01_a"; - disablenpc "Croix Vintenar#b01_b"; - disablenpc "Vintenar#bat_b01_aover"; - disablenpc "Vintenar#bat_b01_bover"; - bg_warp $@FlaviusBG1_id1,"bat_b01",87,75; - bg_warp $@FlaviusBG1_id2,"bat_b01",311,224; - - /* after warp */ - queueopt($@Guill_QueueBG1, QUEUEOPT_MAPCHANGE, "start#bat_b01::OnGuillaumeQuit"); - queueopt($@Croix_QueueBG1, QUEUEOPT_MAPCHANGE, "start#bat_b01::OnCroixQuit"); - - donpcevent "countdown#bat_b01::OnEnable"; - end; - -OnReset: - donpcevent "OBJ#bat_b01_a::OnKill"; - donpcevent "OBJ#bat_b01_a::OnEnable"; - donpcevent "OBJ#bat_b01_b::OnKill"; - donpcevent "OBJ#bat_b01_b::OnEnable"; - donpcevent "guardian#bat_b01_a::OnKill"; - donpcevent "guardian#bat_b01_b::OnKill"; - donpcevent "guardian#bat_b01_a::OnEnable"; - donpcevent "guardian#bat_b01_b::OnEnable"; - donpcevent "cell#bat_b01_a::OnRed"; - donpcevent "cell#bat_b01_b::OnRed"; - donpcevent "time#bat_b01::OnEnable"; - disablenpc "Guillaume Vintenar#b01_a"; - disablenpc "Croix Vintenar#b01_b"; - disablenpc "Vintenar#bat_b01_aover"; - disablenpc "Vintenar#bat_b01_bover"; - bg_warp $@FlaviusBG1_id1,"bat_b01",87,75; - bg_warp $@FlaviusBG1_id2,"bat_b01",311,224; - end; - -OnCroixQuit: - queueremove($@Croix_QueueBG1,getcharid(CHAR_ID_ACCOUNT)); - callsub L_OnPlayerQuit; - end; - -OnGuillaumeQuit: - queueremove($@Guill_QueueBG1,getcharid(CHAR_ID_ACCOUNT)); - callsub L_OnPlayerQuit; - end; - -L_OnPlayerQuit: - bg_leave; - setd $@bg_delay_var$,gettimetick(2); - if( queuesize($@Guill_QueueBG1) == 0 || queuesize($@Croix_QueueBG1) == 0 ) /* todo check score and decide a winner if anyone left */ - callsub OnMatchOver; - end; - -OnMatchOver: - if( $@FlaviusBG1_id1 || $@FlaviusBG1_id2 ) { - queuedel($@Croix_QueueBG1); - queuedel($@Guill_QueueBG1); - bg_match_over("Flavius"); - } - if( $@FlaviusBG1_id1 ) { bg_destroy $@FlaviusBG1_id1; set $@FlaviusBG1_id1, 0; } - if( $@FlaviusBG1_id2 ) { bg_destroy $@FlaviusBG1_id2; set $@FlaviusBG1_id2, 0; } - end; -} - -bat_b01,1,1,3 script OBJ#bat_b01_a CLEAR_NPC,{ -OnEnable: - bg_monster $@FlaviusBG1_id1,"bat_b01",61,150,"Pink Crystal",1915,"OBJ#bat_b01_a::OnMyMobDead"; - end; - -OnKill: - killmonster "bat_b01","OBJ#bat_b01_a::OnMyMobDead"; - end; - -OnMyMobDead: - if (mobcount("bat_b01","OBJ#bat_b01_a::OnMyMobDead") < 1) { - mapannounce "bat_b01", "Guillaume's Crystal has been destroyed.",bc_map,"0xFFCE00"; - if ($@Croix_ScoreBG1 > 0) { - set $@FlaviusBG1_Victory,2; - set $@Croix_ScoreBG1,$@Croix_ScoreBG1+1; - enablenpc "Guillaume Vintenar#b01_a"; - enablenpc "Croix Vintenar#b01_b"; - donpcevent "time#bat_b01::OnStop"; - donpcevent "start#bat_b01::OnMatchOver"; - } - else { - set $@Croix_ScoreBG1,1; - donpcevent "time#bat_b01::OnEnable"; - donpcevent "start#bat_b01::OnReset"; - } - bg_updatescore "bat_b01",$@Guill_ScoreBG1,$@Croix_ScoreBG1; - bg_warp $@FlaviusBG1_id1,"bat_b01",10,290; - bg_warp $@FlaviusBG1_id2,"bat_b01",390,10; - } - end; -} -bat_b01,1,2,3 script OBJ#bat_b01_b CLEAR_NPC,{ -OnEnable: - bg_monster $@FlaviusBG1_id2,"bat_b01",328,150,"Blue Crystal",1914,"OBJ#bat_b01_b::OnMyMobDead"; - end; - -OnKill: - killmonster "bat_b01","OBJ#bat_b01_b::OnMyMobDead"; - end; - -OnMyMobDead: - if (mobcount("bat_b01","OBJ#bat_b01_b::OnMyMobDead") < 1) { - mapannounce "bat_b01", "Croix's Crystal has been destroyed.",bc_map,"0xFFCE00"; - if ($@Guill_ScoreBG1 > 0) { - set $@FlaviusBG1_Victory,1; - set $@Guill_ScoreBG1,$@Guill_ScoreBG1+1; - enablenpc "Guillaume Vintenar#b01_a"; - enablenpc "Croix Vintenar#b01_b"; - donpcevent "time#bat_b01::OnStop"; - donpcevent "start#bat_b01::OnMatchOver"; - } - else { - set $@Guill_ScoreBG1,1; - donpcevent "time#bat_b01::OnEnable"; - donpcevent "start#bat_b01::OnReset"; - } - bg_updatescore "bat_b01",$@Guill_ScoreBG1,$@Croix_ScoreBG1; - bg_warp $@FlaviusBG1_id1,"bat_b01",10,290; - bg_warp $@FlaviusBG1_id2,"bat_b01",390,10; - } - end; -} - -bat_b01,1,3,3 script guardian#bat_b01_a CLEAR_NPC,{ -OnEnable: - bg_monster $@FlaviusBG1_id1,"bat_b01",108,159,"Guillaume Camp Guardian",1949,"guardian#bat_b01_a::OnMyMobDead"; - bg_monster $@FlaviusBG1_id1,"bat_b01",108,141,"Guillaume Camp Guardian",1949,"guardian#bat_b01_a::OnMyMobDead"; - end; - -OnKill: - killmonster "bat_b01","guardian#bat_b01_a::OnMyMobDead"; - end; - -OnMyMobDead: - if (mobcount("bat_b01","guardian#bat_b01_a::OnMyMobDead") < 1) { - donpcevent "cell#bat_b01_a::OnGreen"; - mapannounce "bat_b01", "The Guardian protecting Guillaume's Crystal has been slain.",bc_map,"0xFFCE00"; - } - end; -} - -bat_b01,1,3,3 script guardian#bat_b01_b CLEAR_NPC,{ -OnEnable: - bg_monster $@FlaviusBG1_id2,"bat_b01",307,160,"Croix Camp Guardian",1949,"guardian#bat_b01_b::OnMyMobDead"; - bg_monster $@FlaviusBG1_id2,"bat_b01",307,138,"Croix Camp Guardian",1949,"guardian#bat_b01_b::OnMyMobDead"; - end; - -OnKill: - killmonster "bat_b01","guardian#bat_b01_b::OnMyMobDead"; - end; - -OnMyMobDead: - if (mobcount("bat_b01","guardian#bat_b01_b::OnMyMobDead") < 1) { - donpcevent "cell#bat_b01_b::OnGreen"; - mapannounce "bat_b01", "The Guardian protecting Croix's Crystal has been slain.",bc_map,"0xFFCE00"; - } - end; -} - -bat_b01,1,4,3 script cell#bat_b01_a CLEAR_NPC,{ -OnRed: - setcell "bat_b01",62,149,60,151,cell_basilica,1; - setcell "bat_b01",62,149,60,151,cell_walkable,0; - end; - -OnGreen: - setcell "bat_b01",62,149,60,151,cell_basilica,0; - setcell "bat_b01",62,149,60,151,cell_walkable,1; - end; -} - -bat_b01,1,5,3 script cell#bat_b01_b CLEAR_NPC,{ -OnRed: - setcell "bat_b01",327,151,329,149,cell_basilica,1; - setcell "bat_b01",327,151,329,149,cell_walkable,0; - end; - -OnGreen: - setcell "bat_b01",327,151,329,149,cell_basilica,0; - setcell "bat_b01",327,151,329,149,cell_walkable,1; - end; -} - -bat_b01,1,6,1 script time#bat_b01 CLEAR_NPC,{ -OnEnable: - donpcevent "Battle Therapist#b01_a::OnEnable"; - donpcevent "Battle Therapist#b01_b::OnEnable"; - end; - -OnStop: - donpcevent "Battle Therapist#b01_a::OnStop"; - donpcevent "Battle Therapist#b01_b::OnStop"; - end; -} - -bat_b01,10,294,3 script Battle Therapist#b01_a 4_F_SISTER,{ - specialeffect(EF_HEAL, AREA, playerattached()); - mes "[Battle Therapist]"; - mes "Just close your eyes,"; - mes "and take a deep breath."; - mes "You can be free from pain."; - close; - -OnTimer25000: - specialeffect EF_SANCTUARY; - enablenpc "bat_b01_rp1_a_warp"; - end; - -OnTimer26000: - disablenpc "bat_b01_rp1_a_warp"; - end; - -OnTimer26500: - stopnpctimer; - donpcevent "Battle Therapist#b01_a::OnEnable"; - end; - -OnEnable: - initnpctimer; - enablenpc "Battle Therapist#b01_a"; - end; - -OnStop: - disablenpc "bat_b01_rp1_a_warp"; - disablenpc "Battle Therapist#b01_a"; - stopnpctimer; - end; -} - -bat_b01,10,290,0 script bat_b01_rp1_a_warp WARPNPC,10,10,{ -OnInit: - disablenpc "bat_b01_rp1_a_warp"; - end; - -OnTouch: - percentheal 100,100; - warp "bat_b01",87,73; - end; -} - -bat_b01,389,14,3 script Battle Therapist#b01_b 4_F_SISTER,{ - specialeffect(EF_HEAL, AREA, playerattached()); - mes "[Battle Therapist]"; - mes "Just close your eyes,"; - mes "and take a deep breath."; - mes "You can be free from pain."; - close; - -OnTimer25000: - specialeffect EF_SANCTUARY; - enablenpc "bat_b01_rp1_b_warp"; - end; - -OnTimer26000: - disablenpc "bat_b01_rp1_b_warp"; - end; - -OnTimer26500: - stopnpctimer; - donpcevent "Battle Therapist#b01_b::OnEnable"; - end; - -OnEnable: - initnpctimer; - enablenpc "Battle Therapist#b01_b"; - end; - -OnStop: - disablenpc "bat_b01_rp1_b_warp"; - disablenpc "Battle Therapist#b01_b"; - stopnpctimer; - end; -} - -bat_b01,389,10,0 script bat_b01_rp1_b_warp WARPNPC,9,9,{ -OnInit: - disablenpc "bat_b01_rp1_a_warp"; - end; - -OnTouch: - percentheal 100,100; - warp "bat_b01",312,225; - end; -} - -bat_b01,87,76,0 script A_CODE#bat_b01 FAKE_NPC,5,5,{ -OnTouch: - if (!questprogress(2070)) - setquest 2070; - end; -} - -bat_b01,312,224,0 script B_CODE#bat_b01 FAKE_NPC,5,5,{ -OnTouch: - if (!questprogress(2070)) - setquest 2070; - end; -} - -bat_b01,10,294,3 script Guillaume Vintenar#b01_a 4_M_RASWORD,{ - if ($@FlaviusBG1_id1 == getcharid(CHAR_ID_BG)) { - if ($@FlaviusBG1_Victory == 1) { - set .@your_medal,countitem(BF_Badge2); - set .@medal_gap,500 - .@your_medal; - if (.@medal_gap > 8) { - mes "[Axl Rose]"; - mes "Blessed Guillaume!"; - mes "Let's enjoy our glorious victory!"; - mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory."; - close2; - getitem BF_Badge2,9; - } - else { - mes "[Axl Rose]"; - mes "Blessed Guillaume!"; - mes "Let's enjoy our glorious victory!"; - mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory."; - close2; - getitem BF_Badge2,.@medal_gap; - } - } - else { - set .@your_medal,countitem(BF_Badge2); - set .@medal_gap,500 - .@your_medal; - if (.@medal_gap > 2) { - mes "[Axl Rose]"; - mes "You lost, but you're dedicated to this battle."; - mes "This is a reward for your great dedication by Guillaume Marollo!"; - mes "Just take this defeat as a lesson, next time you will definitely win."; - close2; - getitem BF_Badge2,3; - } - else { - mes "[Axl Rose]"; - mes "You lost, but you're dedicated to this battle."; - mes "This is a reward for your great dedication by Guillaume Marollo!"; - mes "Just take this defeat as a lesson, next time you will definitely win."; - close2; - getitem BF_Badge2,.@medal_gap; - } - } - } - bg_leave; - warp "bat_room",154,150; - end; - -OnInit: - disablenpc "Guillaume Vintenar#b01_a"; - end; -} - -bat_b01,389,14,3 script Croix Vintenar#b01_b 4_M_RASWORD,{ - if ($@FlaviusBG1_id2 == getcharid(CHAR_ID_BG)) { - if ($@FlaviusBG1_Victory == 2) { - set .@your_medal,countitem(BF_Badge2); - set .@medal_gap,500 - .@your_medal; - if (.@medal_gap > 8) { - mes "[Swandery]"; - mes "Blessed Croix!"; - mes "Let's enjoy our glorious victory!"; - mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory."; - close2; - getitem BF_Badge2,9; - } - else { - mes "[Swandery]"; - mes "Blessed Croix!"; - mes "Let's enjoy our glorious victory!"; - mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory."; - close2; - getitem BF_Badge2,.@medal_gap; - } - } - else { - set .@your_medal,countitem(BF_Badge2); - set .@medal_gap,500 - .@your_medal; - if (.@medal_gap > 2) { - mes "[Swandery]"; - mes "Oh, "+strcharinfo(PC_NAME)+". Don't be sad."; - mes "Even though we didn't win, we did our best."; - mes "This is a Royal gift from Croix, and please don't forget this battle. We will win the next one."; - close2; - getitem BF_Badge2,3; - } - else { - mes "[Swandery]"; - mes "Oh, "+strcharinfo(PC_NAME)+". Don't be sad."; - mes "Even though we didn't win, we did our best."; - mes "This is a Royal gift from Croix, and please don't forget this battle. We will win the next one."; - close2; - getitem BF_Badge2,.@medal_gap; - } - } - } - bg_leave; - warp "bat_room",154,150; - end; - -OnInit: - disablenpc "Croix Vintenar#b01_b"; - end; -} - -bat_b01,1,5,3 script countdown#bat_b01 CLEAR_NPC,{ -OnInit: - stopnpctimer; - end; - -OnEnable: - stopnpctimer; - initnpctimer; - end; - -OnStop: - stopnpctimer; - end; - -OnTimer7000: - mapannounce "bat_b01", "Guillaume Vintenar Axl Rose : Let's attack to destroy that Crystal!",bc_map,"0xFF9900"; - end; - -OnTimer8000: - mapannounce "bat_b01", "Croix Vintenar Swandery : Even though Guillaume is struggling to win against us, the victory is ours. Let's show them our power.",bc_map,"0xFF99CC"; - end; - -OnTimer1800000: - mapannounce "bat_b01", "Marollo VII : Guillaume Marollo, Croix Marollo! And their followers!",bc_map,"0x99CC00"; - end; - -OnTimer1803000: - mapannounce "bat_b01", "Marollo VII : Both camps are competitive, so it's hard to judge which team is superior.",bc_map,"0x99CC00"; - end; - -OnTimer1808000: - mapannounce "bat_b01", "Marollo VII : This battle of Flavian is such a waste of time. I will decide victory and defeat by your progress.",bc_map,"0x99CC00"; - end; - -OnTimer1822000: - mapannounce "bat_b01", "Marollo VII : If you can't accept the results, try again in another valley battle!",bc_map,"0x99CC00"; - end; - -OnTimer1825000: - mapannounce "bat_b01", "Axl Rose, Swandery : Yes, sir.",bc_map,"0x99CC00"; - end; - -OnTimer1830000: - donpcevent "time#bat_b01::OnStop"; - bg_warp $@FlaviusBG1_id1,"bat_b01",10,290; - bg_warp $@FlaviusBG1_id2,"bat_b01",390,10; - enablenpc "Vintenar#bat_b01_aover"; - enablenpc "Vintenar#bat_b01_bover"; - end; - -OnTimer1900000: - mapwarp "bat_b01","bat_room",154,150; - donpcevent "countdown#bat_b01::OnStop"; - donpcevent "start#bat_b01::OnMatchOver"; - end; -} - -bat_b01,81,83,3 script Guillaume Camp#flag21 1_FLAG_LION,{ end; } -bat_b01,94,83,3 script Guillaume Camp#flag22 1_FLAG_LION,{ end; } -bat_b01,81,66,3 script Guillaume Camp#flag23 1_FLAG_LION,{ end; } -bat_b01,94,66,3 script Guillaume Camp#flag24 1_FLAG_LION,{ end; } -bat_b01,139,142,3 script Guillaume Camp#flag25 1_FLAG_LION,{ end; } -bat_b01,139,158,3 script Guillaume Camp#flag26 1_FLAG_LION,{ end; } -bat_b01,110,161,3 script Guillaume Camp#flag27 1_FLAG_LION,{ end; } -bat_b01,110,137,3 script Guillaume Camp#flag28 1_FLAG_LION,{ end; } -bat_b01,63,135,3 script Guillaume Camp#flag29 1_FLAG_LION,{ end; } -bat_b01,63,165,3 script Guillaume Camp#flag30 1_FLAG_LION,{ end; } -bat_b01,10,296,3 script Guillaume Camp#flag31 1_FLAG_LION,{ end; } - -bat_b01,306,233,3 script Croix Camp#flag21 1_FLAG_EAGLE,{ end; } -bat_b01,317,233,3 script Croix Camp#flag22 1_FLAG_EAGLE,{ end; } -bat_b01,306,216,3 script Croix Camp#flag23 1_FLAG_EAGLE,{ end; } -bat_b01,317,216,3 script Croix Camp#flag24 1_FLAG_EAGLE,{ end; } -bat_b01,257,158,3 script Croix Camp#flag25 1_FLAG_EAGLE,{ end; } -bat_b01,257,141,3 script Croix Camp#flag26 1_FLAG_EAGLE,{ end; } -bat_b01,297,164,3 script Croix Camp#flag27 1_FLAG_EAGLE,{ end; } -bat_b01,297,136,3 script Croix Camp#flag28 1_FLAG_EAGLE,{ end; } -bat_b01,336,161,3 script Croix Camp#flag29 1_FLAG_EAGLE,{ end; } -bat_b01,336,139,3 script Croix Camp#flag30 1_FLAG_EAGLE,{ end; } -bat_b01,389,16,3 script Croix Camp#flag31 1_FLAG_EAGLE,{ end; } - -bat_b01,10,294,3 script Vintenar#bat_b01_aover 4_M_KY_HEAD,{ - set .@A_B_gap,$@Guill_ScoreBG1 - $@Croix_ScoreBG1; - if ($@FlaviusBG1_id1 == getcharid(CHAR_ID_BG)) { - if (.@A_B_gap > 0) { - set .@your_medal,countitem(BF_Badge2); - set .@medal_gap,500 - .@your_medal; - if (.@medal_gap > 8) { - mes "[Axl Rose]"; - mes "Blessed Guillaume!"; - mes "Let's enjoy our glorious victory!"; - mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory."; - close2; - getitem BF_Badge2,9; - } - else { - mes "[Axl Rose]"; - mes "Blessed Guillaume!"; - mes "Let's enjoy our glorious victory!"; - mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory."; - close2; - getitem BF_Badge2,.@medal_gap; - } - } - else if (.@A_B_gap == 0) { - set .@your_medal,countitem(BF_Badge2); - set .@medal_gap,500 - .@your_medal; - if (.@medal_gap > 2) { - mes "[Axl Rose]"; - mes "You lost, but you're dedicated to this battle."; - mes "This is a reward for your great dedication by Guillaume Marollo!"; - mes "Just take this defeat as a lesson, next time you will definitely win."; - close2; - getitem BF_Badge2,3; - } - else { - mes "[Axl Rose]"; - mes "You lost, but you're dedicated to this battle."; - mes "This is a reward for your great dedication by Guillaume Marollo!"; - mes "Just take this defeat as a lesson, next time you will definitely win."; - close2; - getitem BF_Badge2,.@medal_gap; - } - } - else { - set .@your_medal,countitem(BF_Badge2); - set .@medal_gap,500 - .@your_medal; - if (.@medal_gap > 2) { - mes "[Axl Rose]"; - mes "You lost, but you're dedicated to this battle."; - mes "This is a reward for your great dedication by Guillaume Marollo!"; - mes "Just take this defeat as a lesson, next time you will definitely win."; - close2; - getitem BF_Badge2,3; - } - else { - mes "[Axl Rose]"; - mes "You lost, but you're dedicated to this battle."; - mes "This is a reward for your great dedication by Guillaume Marollo!"; - mes "Just take this defeat as a lesson, next time you will definitely win."; - close2; - getitem BF_Badge2,.@medal_gap; - } - } - } - else { - mes "[Axl Rose]"; - mes "Why are you here, Croix mercenary? I am definitely sure of victory against foolish Croix such as you. Ha!"; - close; - } - bg_leave; - warp "bat_room",154,150; - end; - -OnInit: - disablenpc "Vintenar#bat_b01_aover"; - end; -} - -bat_b01,389,14,3 script Vintenar#bat_b01_bover 4_M_CRU_HEAD,{ - set .@A_B_gap,$@Guill_ScoreBG1 - $@Croix_ScoreBG1; - if ($@FlaviusBG1_id2 == getcharid(CHAR_ID_BG)) { - if (.@A_B_gap > 0) { - set .@your_medal,countitem(BF_Badge2); - set .@medal_gap,500 - .@your_medal; - if (.@medal_gap > 2) { - mes "[Swandery]"; - mes "Oh, "+strcharinfo(PC_NAME)+". Don't be sad."; - mes "Even though we didn't win, we did our best."; - mes "This is a Royal gift from Croix, and please don't forget this battle. We will win the next one."; - close2; - getitem BF_Badge2,3; - } - else { - mes "[Swandery]"; - mes "Oh, "+strcharinfo(PC_NAME)+". Don't be sad."; - mes "Even though we didn't win, we did our best."; - mes "This is a Royal gift from Croix, and please don't forget this battle. We will win the next one."; - close2; - getitem BF_Badge2,.@medal_gap; - } - } - else if (.@A_B_gap == 0) { - set .@your_medal,countitem(BF_Badge2); - set .@medal_gap,500 - .@your_medal; - if (.@medal_gap > 2) { - mes "[Swandery]"; - mes "Oh, "+strcharinfo(PC_NAME)+". Don't be sad."; - mes "Even though we didn't win, we did our best."; - mes "This is a Royal gift from Croix, and please don't forget this battle. We will win the next one."; - close2; - getitem BF_Badge2,3; - } - else { - mes "[Swandery]"; - mes "Oh, "+strcharinfo(PC_NAME)+". Don't be sad."; - mes "Even though we didn't win, we did our best."; - mes "This is a Royal gift from Croix, and please don't forget this battle. We will win the next one."; - close2; - getitem BF_Badge2,.@medal_gap; - } - } - else { - set .@your_medal,countitem(BF_Badge2); - set .@medal_gap,500 - .@your_medal; - if (.@medal_gap > 8) { - mes "[Swandery]"; - mes "Blessed Croix!"; - mes "Let's enjoy our glorious victory!"; - mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory."; - close2; - getitem BF_Badge2,9; - } - else { - mes "[Swandery]"; - mes "Blessed Croix!"; - mes "Let's enjoy our glorious victory!"; - mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory."; - close2; - getitem BF_Badge2,.@medal_gap; - } - } - } - else { - mes "[Swandery]"; - mes "Why do you come here as a Guillaume? You will be sent to where you should be!"; - close; - } - bg_leave; - warp "bat_room",154,150; - end; - -OnInit: - disablenpc "Vintenar#bat_b01_bover"; - end; -} diff --git a/npc/custom/breeder.txt b/npc/custom/breeder.txt deleted file mode 100644 index 9efb73ac6..000000000 --- a/npc/custom/breeder.txt +++ /dev/null @@ -1,68 +0,0 @@ -//===== Hercules Script ====================================== -//= Universal Rental NPC -//===== By: ================================================== -//= Euphy -//===== Current Version: ===================================== -//= 1.2 -//===== Description: ========================================= -//= One-click automatic mount rentals. -//= Replaced 'close' with 'end' [Streusel] -//= Fixed 'close' issues. [Joseph] -//============================================================ - -prontera,124,201,1 script Universal Rental NPC 4_F_JOB_BLACKSMITH,{ - /* TODO: This can be optimized with just setmount(), as it can - auto-detect the proper mount for the class/skills. */ - if (hascashmount()) { - message strcharinfo(PC_NAME),"You must first remove your mount."; - end; - } else if ((eaclass()&EAJ_THIRDMASK) == EAJ_RANGER && !countitem(Wolfs_Flute)) { - if (!checkfalcon() && getskilllv(HT_FALCON) && !checkwug()) { - if (select(" ~ Falcon", " ~ Warg") == 1) - setfalcon; - else - getitem Wolfs_Flute, 1; - specialeffect(EF_TEIHIT3, AREA, playerattached()); - close; - } else { - getitem Wolfs_Flute,1; - } - } else if ((eaclass()&EAJ_THIRDMASK) == EAJ_MECHANIC && !checkcart() && getskilllv(MC_PUSHCART)) { - if (!checkmount() != MOUNT_MADO && getskilllv(NC_MADOLICENCE)) { - if (select(" ~ Cart", " ~ Mado") == 1) { - setcart; - } else { - setmount(MOUNT_MADO); - } - specialeffect(EF_TEIHIT3, AREA, playerattached()); - close; - } else { - setcart; - } - } else if (!checkcart() && getskilllv(MC_PUSHCART)) { - setcart; - } else if (!checkfalcon() && getskilllv(HT_FALCON) && !checkwug()) { - setfalcon; - } else if (checkmount() != MOUNT_PECO && getskilllv(KN_RIDING)) { - setmount; // Peco or Dragon - } else if (checkmount() != MOUNT_MADO && getskilllv(NC_MADOLICENCE)) { - setmount(MOUNT_MADO); - } else { - message strcharinfo(PC_NAME),"You do not meet requirements to rent."; - end; - } - specialeffect(EF_TEIHIT3, AREA, playerattached()); - end; -} - -//============================================================ -// Old changelog -//============================================================ -//= A Free PecoPeco and Falcon Breeder -//= 1.1 FIXED checkriding/cart/falcon funcs [Lupus] -//= 1.2 Added Rebirth/Advanced Class support [Mass Zero] -//= 1.3 Simplified the checks of job [Silentdragon] -//= 1.3a Fixed a Typo Error. [Samuray22] -//= Thanks to ~AnnieRuru~. -//= 1.4 Optimized Script. No need for 50 million Labels. [Spre] -//============================================================ diff --git a/npc/custom/card_remover.txt b/npc/custom/card_remover.txt deleted file mode 100644 index 077296ac6..000000000 --- a/npc/custom/card_remover.txt +++ /dev/null @@ -1,150 +0,0 @@ -//===== Hercules Script ====================================== -//= Card Removal NPC -//===== By: ================================================== -//= TyrNemesis^ -//===== Current Version: ===================================== -//= 1.2a -//===== Description: ========================================= -//= Removes cards from equipped items. -//===== Additional Comments: ================================= -//= 1.0 First version. [TyrNemesis^] -//= 1.2 Optimized and fixed getequipname menu. [Kisuka] -//= 1.2a Added 'disable_items' command. [Euphy] -//============================================================ - -prt_in,28,73,4 script Wise Old Woman#eAcustom 1_F_ORIENT_04,{ - - set .zenycost,200000; // Set base cost in zeny of the card remover services - set .percardcost,25000; // set cost per card of the card remover services - set .faildestroy,1; // Should the card remover have a chance of failure that destroys items? 1 = Yes, 0 = No. - - disable_items; - mes "[Wise Old Woman]"; - mes "Good day, young one. I have the power to remove cards that you have compounded onto your equipment. Does this idea please you?"; - next; - switch(select("Yes, it does.", "What do you charge?", "No thanks.")) { - case 1: - mes "[Wise Old Woman]"; - mes "Very well. Which item shall I examine for you?"; - next; - - setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3"; - set .@menu$,""; - for( set .@i,1; .@i <= 10; set .@i,.@i+1 ) - { - if( getequipisequiped(.@i) ) - set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]"; - - set .@menu$, .@menu$ + ":"; - } - set .@part,select(.@menu$); - if(!getequipisequiped(.@part)) { - mes "[Wise Old Woman]"; - mes "Young one... Your not wearing anything there that I can remove cards from."; - close; - } - if(getequipcardcnt(.@part) == 0) { - mes "[Wise Old Woman]"; - mes "Young one... There are no cards compounded on this item. I can do nothing with it, I'm afraid."; - close; - } - set .@cardcount,getequipcardcnt(.@part); - - if (!checkweight(Knife_,(.@cardcount+1))) { - mes "^3355FFJust a minute!"; - mes "I can't offer any of my"; - mes "services to you because"; - mes "you're carrying too much"; - mes "stuff. Put your extra items in"; - mes "Kafra Storage and come again~"; - close; - } - mes "[Wise Old Woman]"; - mes "This item has " + .@cardcount + " cards compounded on it. To perform my magic, I will need " + (.zenycost+(.@cardcount * .percardcost)) + " zeny, a ^0000FFStar Crumb^000000, and a ^0000FFYellow Gemstone^000000."; - next; - if(select("Very well. Do it.", "Nevermind.") == 2) { - mes "[Wise Old Woman]"; - mes "Very well. Return at once if you seek my services."; - close; - } - if((Zeny < (.zenycost+(.@cardcount * .percardcost))) || (countitem(Star_Crumb) < 1) || (countitem(Yellow_Gemstone) < 1)) { - mes "[Wise Old Woman]"; - mes "You do not have all the items I require to work my magic, child. Come again when you do."; - close; - } - mes "[Wise Old Woman]"; - mes "Before I begin, I must warn you--I may fail. If I do, I may destroy the cards, the item, or both. I do not give refunds. That being said, which is more important to you: The cards, or the item?"; - next; - switch(select("I changed my mind about this.", "The item.", "The cards.")) { - case 1: - mes "[Wise Old Woman]"; - mes "Very well. Return at once if you seek my services."; - close; - case 2: - set .@failtype,1; - break; - case 3: - set .@failtype,2; - } - mes "[Wise Old Woman]"; - mes "Very well. I shall begin."; - Zeny -= (.zenycost+(.@cardcount * .percardcost)); - delitem 1000,1; - delitem 715,1; - - // Replace the constants in the next 3 lines with failure chance values defined in refine_db.txt - // First value = Total failure chance (item and cards destroyed) - // Second value = Partial failure chance (one or the other is destroyed, player decides which one is safe) - // Third value = Harmless failure chance (all that's lost is your investment) - - set .@failchance,rand(100); - if (.faildestroy==1) { - if(.@failchance < 2) { - next; - failedremovecards .@part,0; - mes "[Wise Old Woman]"; - mes "The process was a total failure. I am afraid the item and the cards were destroyed."; - close; - } - - if(.@failchance < 8) { - if (.@failtype == 1) { - next; - failedremovecards .@part,1; - mes "[Wise Old Woman]"; - mes "While I have managed to remove the cards from the item, they were destroyed in the process. The item, however, is okay."; - close; - } - - if (.@failtype == 2) { - next; - failedremovecards .@part,2; - mes "[Wise Old Woman]"; - mes "Most unfortunate. I succeeded at removing the cards, but the item itself was destroyed in the process."; - close; - } - } - } - - if(.@failchance < 10) { - next; - failedremovecards .@part,3; - mes "[Wise Old Woman]"; - mes "I have failed to remove the cards. Luckily, however, both the item and the cards are still okay."; - close; - } - next; - successremovecards .@part; - mes "[Wise Old Woman]"; - mes "The process was a success. Here are your cards and your item. Farewell."; - close; - case 2: - mes "[Wise Old Woman]"; - mes "I charge a flat fee of "+.zenycost+" zeny, plus "+.percardcost+" zeny for each card I remove from the item. In addition, I need a star crumb and a yellow gemstone to work my magic."; - close; - case 3: - mes "[Wise Old Woman]"; - mes "Very well. Return at once if you seek my services."; - close; - } -} diff --git a/npc/custom/etc/airplane.txt b/npc/custom/etc/airplane.txt deleted file mode 100644 index 2487acb1f..000000000 --- a/npc/custom/etc/airplane.txt +++ /dev/null @@ -1,444 +0,0 @@ -//===== Hercules Script ====================================== -//= elRO Airship -//===== By: ================================================== -//= Draike, Bluto, Hephaestus -//===== Current Version: ===================================== -//= 2.2a -//===== Description: ========================================= -//= It's the elRO airship. XD -//===== Additional Comments: ================================= -//= ALWAYS HAVE AT LEAST TWELVE (12) LOCATIONS AS THE MINIMUM. This is unless you modify to OnMinutes and change the schedule around. -//= If you have "airplane,103,72,0 warp airs02a 1,1,airplane,102,200" as a warp, remove it. Where it's supposed to go, I have no clue. -//= 2.1 Removed Duplicates [Silent] -//= 2.2 Added missing next;'s [Evera] -//============================================================ - -payon,153,43,5 script itinsetter FAKE_NPC,{ - //This is just OnInit stuff to set the hourly intinerary. -OnInit: - deletearray $locationsname$[0],500; - deletearray $locationsmap$[0],500; - deletearray $locationsx[0],500; - deletearray $locationsy[0],500; - deletearray $alreadygoneto[0],500; - setarray $locationsname$[0],"Airport"; - setarray $locationsname$[1],"Prontera"; - setarray $locationsname$[2],"Payon"; - setarray $locationsname$[3],"Aldebaran"; - setarray $locationsname$[4],"Alberta"; - setarray $locationsname$[5],"Geffen"; - setarray $locationsname$[6],"Morocc"; - setarray $locationsname$[7],"Glast Heim"; - setarray $locationsname$[8],"Umbala"; - setarray $locationsname$[9],"Comodo"; - setarray $locationsname$[10],"Amatsu"; - setarray $locationsname$[11],"Niflheim"; - setarray $locationsname$[12],"Lutie"; - setarray $locationsname$[13],"Louyang"; - setarray $locationsname$[14],"Gonryun"; - setarray $locationsname$[15],"Yuno"; - setarray $locationsname$[16],"Ant Hell"; - setarray $locationsname$[17],"Jawaii"; - setarray $locationsname$[18],"Orc Village"; - setarray $locationsname$[19],"Mjolnir Coal Mines"; - setarray $locationsname$[20],"Gefenia Ruins"; - setarray $locationsname$[21],"Ayothaya"; - setarray $locationsname$[22],"Lighthalzen"; - setarray $locationsname$[23],"Juperos"; - setarray $locationsmap$[0],"airport"; - setarray $locationsmap$[1],"prt_fild08"; - setarray $locationsmap$[2],"pay_fild08"; - setarray $locationsmap$[3],"mjolnir_12"; - setarray $locationsmap$[4],"pay_fild03"; - setarray $locationsmap$[5],"gef_fild00"; - setarray $locationsmap$[6],"moc_fild10"; - setarray $locationsmap$[7],"glast_01"; - setarray $locationsmap$[8],"umbala"; - setarray $locationsmap$[9],"comodo"; - setarray $locationsmap$[10],"amatsu"; - setarray $locationsmap$[11],"niflheim"; - setarray $locationsmap$[12],"xmas"; - setarray $locationsmap$[13],"louyang"; - setarray $locationsmap$[14],"gonryun"; - setarray $locationsmap$[15],"yuno"; - setarray $locationsmap$[16],"moc_fild04"; - setarray $locationsmap$[17],"jawaii"; - setarray $locationsmap$[18],"gef_fild10"; - setarray $locationsmap$[19],"mjolnir_02"; - setarray $locationsmap$[20],"gefenia01"; - setarray $locationsmap$[21],"ayothaya"; - setarray $locationsmap$[22],"lighthalzen"; - setarray $locationsmap$[23],"jupe_gate"; - setarray $locationsx[0],148; - setarray $locationsx[1],206; - setarray $locationsx[2],159; - setarray $locationsx[3],62; - setarray $locationsx[4],194; - setarray $locationsx[5],50; - setarray $locationsx[6],163; - setarray $locationsx[7],196; - setarray $locationsx[8],187; - setarray $locationsx[9],203; - setarray $locationsx[10],115; - setarray $locationsx[11],132; - setarray $locationsx[12],232; - setarray $locationsx[13],36; - setarray $locationsx[14],82; - setarray $locationsx[15],58; - setarray $locationsx[16],209; - setarray $locationsx[17],248; - setarray $locationsx[18],158; - setarray $locationsx[19],76; - setarray $locationsx[20],98; - setarray $locationsx[21],183; - setarray $locationsx[22],99; - setarray $locationsx[23],46; - setarray $locationsy[0],45; - setarray $locationsy[1],280; - setarray $locationsy[2],92; - setarray $locationsy[3],381; - setarray $locationsy[4],182; - setarray $locationsy[5],365; - setarray $locationsy[6],172; - setarray $locationsy[7],327; - setarray $locationsy[8],98; - setarray $locationsy[9],76; - setarray $locationsy[10],79; - setarray $locationsy[11],241; - setarray $locationsy[12],308; - setarray $locationsy[13],279; - setarray $locationsy[14],96; - setarray $locationsy[15],194; - setarray $locationsy[16],326; - setarray $locationsy[17],175; - setarray $locationsy[18],95; - setarray $locationsy[19],363; - setarray $locationsy[20],21; - setarray $locationsy[21],104; - setarray $locationsy[22],240; - setarray $locationsy[23],19; - goto resetgoneto; - end; - -setrandomitin: - set $@settervariable,$@settervariable + 1; - setarray $locationn[$@settervariable],rand(0,getarraysize($locationsname$) - 1); - if($alreadygoneto[$locationn[$@settervariable]]==1)set $@settervariable,$@settervariable - 1; - if($alreadygoneto[$locationn[$@settervariable]]==1)goto setrandomitin; - setarray $alreadygoneto[$locationn[$@settervariable]], 1; - if($@settervariable<12)goto setrandomitin; - end; - -resetgoneto: - deletearray $alreadygoneto[0], 500; - set $@currenttime, 0; - goto setrandomitin; - -OnMinute00: - set $@currenttime, 1; - callfunc "F_Itinreset",12,1,2; - -OnMinute03: - set $destination,250; - end; - -OnMinute05: - set $@currenttime, 2; - callfunc "F_Itinreset",1,2,3; - -OnMinute08: - set $destination,250; - end; - -OnMinute10: - set $@currenttime, 3; - callfunc "F_Itinreset",2,3,4; - -OnMinute13: - set $destination,250; - end; - -OnMinute15: - set $@currenttime, 4; - callfunc "F_Itinreset",3,4,5; - -OnMinute18: - set $destination,250; - end; - -OnMinute20: - set $@currenttime, 5; - callfunc "F_Itinreset",4,5,6; - -OnMinute23: - set $destination,250; - end; - -OnMinute25: - set $@currenttime, 6; - callfunc "F_Itinreset",5,6,7; - -OnMinute28: - set $destination,250; - end; - -OnMinute30: - set $@currenttime, 7; - callfunc "F_Itinreset",6,7,8; - -OnMinute33: - set $destination,250; - end; - -OnMinute35: - set $@currenttime, 8; - callfunc "F_Itinreset",7,8,9; - -OnMinute38: - set $destination,250; - end; - -OnMinute40: - set $@currenttime, 9; - callfunc "F_Itinreset",8,9,10; - -OnMinute43: - set $destination,250; - end; - -OnMinute45: - set $@currenttime, 10; - callfunc "F_Itinreset",9,10,11; - -OnMinute48: - set $destination,250; - end; - -OnMinute50: - set $@currenttime, 11; - callfunc "F_Itinreset",10,11,12; - -OnMinute53: - set $destination,250; - end; - -OnMinute55: - set $@currenttime, 12; - callfunc "F_Itinreset",11,12,1; - -OnMinute58: - set $destination,250; - end; -} - -function script F_Porter { - if($destination==getarg(0))goto Board; - if($destination!=getarg(0))goto Notime; - -Board: - mes "^FF0000[Porter]^000000"; - mes "The plane is currently ported. Would you like to board?"; - next; - menu "Yes.",L_Yes,"No.",L_Nope,"View Hourly Itinerary.",Itin; - -L_Yes: - if($destination!=getarg(0))goto Notime; - warp "airplane", 105, 72; - specialeffect(EF_CASTSPIN, AREA, playerattached()); -L_Nope: - mes "^FF0000[Porter]^000000"; - mes "Have a good day. Thank you for traveling with Airship."; - close; - -Notime: - mes "^FF0000[Porter]^000000"; - if (Sex == SEX_FEMALE) - mes "Sorry, ma'am, but the plane currently isn't ported. However, you can view the airplane's hourly itinerary."; - else - mes "Sorry, sir, but the plane currently isn't ported. However, you can view the airplane's hourly itinerary."; - next; - menu "Yes, please.",Itin,"No thanks.",L_Nope; - close; - end; - -Itin: - mes "^FF0000[Porter]^000000"; - callfunc "F_Itin"; -} - -airport,153,43,5 script Airport Porter 4_M_TWBOY,{ - callfunc "F_Porter",0; -} -prt_fild08,206,279,5 script Porter#01 4_M_TWBOY,{ - callfunc "F_Porter",1; -} -gef_fild00,50,364,5 script Porter#02 4_M_TWBOY,{ - callfunc "F_Porter",5; -} -moc_fild10,163,173,5 script Porter#03 4_M_TWBOY,{ - callfunc "F_Porter",6; -} -mjolnir_12,61,380,5 script Porter#04 4_M_TWBOY,{ - callfunc "F_Porter",3; -} -pay_fild08,159,91,5 script Porter#05 4_M_TWBOY,{ - callfunc "F_Porter",2; -} -pay_fild03,194,181,5 script Porter#06 4_M_TWBOY,{ - callfunc "F_Porter",4; -} -glast_01,196,326,1 script Porter#07 4_M_TWBOY,{ - callfunc "F_Porter",7; -} -umbala,188,98,3 script Porter#08 4_M_TWBOY,{ - callfunc "F_Porter",8; -} -comodo,203,75,0 script Porter#09 4_M_TWBOY,{ - callfunc "F_Porter",9; -} -amatsu,115,78,0 script Porter#10 4_M_TWBOY,{ - callfunc "F_Porter",10; -} -niflheim,132,242,5 script Porter#11 4_M_TWBOY,{ - callfunc "F_Porter",11; -} -xmas,232,309,5 script Porter#12 4_M_TWBOY,{ - callfunc "F_Porter",12; -} -louyang,35,279,0 script Porter#13 4_M_TWBOY,{ - callfunc "F_Porter",13; -} -gonryun,82,95,7 script Porter#14 4_M_TWBOY,{ - callfunc "F_Porter",14; -} -yuno,58,195,4 script Porter#15 4_M_TWBOY,{ - callfunc "F_Porter",15; -} -moc_fild04,210,326,2 script Porter#16 4_M_TWBOY,{ - callfunc "F_Porter",16; -} -jawaii,247,174,7 script Porter#17 4_M_TWBOY,{ - callfunc "F_Porter",17; -} -gef_fild10,159,95,2 script Porter#18 4_M_TWBOY,{ - callfunc "F_Porter",18; -} -mjolnir_02,76,364,5 script Porter#19 4_M_TWBOY,{ - callfunc "F_Porter",19; -} -gefenia01,97,22,6 script Porter#20 4_M_TWBOY,{ - callfunc "F_Porter",20; -} -ayothaya,182,105,5 script Porter#21 4_M_TWBOY,{ - callfunc "F_Porter",21; -} -lighthalzen,99,241,4 script Porter#22 4_M_TWBOY,{ - callfunc "F_Porter",22; -} -jupe_gate,46,18,7 script Porter#23 4_M_TWBOY,{ - callfunc "F_Porter",23; -} -airport,141,43,5 script Itinerary Schedule 2_BULLETIN_BOARD,{ - mes "^FF0000[Itinerary]^000000"; - callfunc "F_Itin"; -} - -airplane,102,68,5 script Docker 4_M_EIN_SOLDIER,{ - if($destination == 250) goto Nowhere; - mes "^FF0000[Airplane Attendant]^000000"; - if($destination == 250)goto Notime; - set @dockky, $destination; - if($destination != 250)mes "We are currently docked at "+$locationsname$[$destination]+". Would you like to exit?"; - next; - menu "Yes.",Lyes,"No.",Lnope; - -Lyes: - if($destination == 250)goto Notime; - if($destination != @dockky)goto Notime; - warp $locationsmap$[$destination], $locationsx[$destination], $locationsy[$destination]; - specialeffect(EF_CASTSPIN, AREA, playerattached()); - -Lnope: - mes "^FF0000[Airplane Attendant]^000000"; - mes "Have a good day. Thank you for traveling with us."; - close; - -Notime: - mes "^FF0000[Airplane Attendant]^000000"; - if (Sex == SEX_FEMALE) - mes "Sorry, ma'am, but the plane currently isn't docked. Please wait."; - else - mes "Sorry, sir, but the plane currently isn't docked. Please wait."; - close; - -Nowhere: - mes "^FF0000[Airplane Attendant]^000000"; - mes "We're currently in air. Please wait until the pilot has announced that we have safely landed."; - close; -} - -function script F_Itin { - //This is the itinerary's function. It should work well enough. - if($@currenttime==0)mes "Try again later. A recent server reboot or rehash has messed the itinerary up for a bit."; - if($@currenttime==0)close; - if($@currenttime==0)end; - set @tempo, 0; - set @tempo, $@currenttime - 1; - goto seta; - close; - -seta: - set @tempo, @tempo + 1; - set @time, gettime(GETTIME_HOUR); - set @minutes, 5 * @tempo - 5; - set @minutess, 5 * @tempo - 2; - if(@minutes<10)set @minutes$, "0" + @minutes; - if(@minutes>9)set @minutes$, @minutes; - if(@minutess<10)set @minutess$, "0" + @minutess; - if(@minutess>9)set @minutess$, @minutess; - if(@time<12)set @time$,@time; - if(@time==12)set @time$,12; - if(@time>12)set @time$,@time - 12; - if(@time<12)mes @time$+":"+ @minutes$ + " A.M. - "+@time$+ ":"+ @minutess$ + " A.M. - "+"^FF0000"+$locationsname$[$locationn[@tempo]]+"^000000"; - if(@time==12)mes @time$+":"+ @minutes$ + " P.M. - "+@time$+ ":"+ @minutess$ + " P.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000"; - if(@time>12 && time<24)mes @time$ +":"+ @minutes$ + " P.M. - "+@time$ + ":"+ @minutess$ + " P.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000"; - if(@time==24)mes @time$+":"+ @minutes$ + " A.M. - "+@time$+ ":"+ @minutess$ + " A.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000"; - if(@tempo<12)goto seta; - set @tempo, 0; - goto setb; - -setb: - if($@currenttime - 1==@tempo)goto setc; - set @tempo, @tempo + 1; - set @time, gettime(GETTIME_HOUR) + 1; - set @minutes, 5 * @tempo - 5; - set @minutess, 5 * @tempo - 2; - if(@minutes<10)set @minutes$, "0" + @minutes; - if(@minutes>9)set @minutes$, @minutes; - if(@minutess<10)set @minutess$, "0" + @minutess; - if(@minutess>9)set @minutess$, @minutess; - if(@time<12)set @time$,@time; - if(@time==12)set @time$,12; - if(@time>12)set @time$,@time - 12; - if(@time<12)mes @time$+":"+ @minutes$ + " A.M. - "+@time$+ ":"+ @minutess$ + " A.M. - "+"^FF0000"+$locationsname$[$locationn[@tempo]]+"^000000"; - if(@time==12)mes @time$+":"+ @minutes$ + " P.M. - "+@time$+ ":"+ @minutess$ + " P.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000"; - if(@time>12 && time<24)mes @time$ +":"+ @minutes$ + " P.M. - "+@time$+ ":"+ @minutess$ + " P.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000"; - if(@time==24)mes @time$+":"+ @minutes$ + " A.M. - "+@time$+ ":"+ @minutess$ + " A.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000"; - goto setb; - -setc: - close; - end; -} - -function script F_Itinreset { - setarray $alreadygoneto[$locationn[getarg(0)]], 0; - goto sest; -sest: - setarray $locationn[getarg(0)],rand(0,getarraysize($locationsname$) - 1); - if($alreadygoneto[$locationn[getarg(0)]]==1)goto sest; - setarray $alreadygoneto[$locationn[getarg(0)]], 1; - set $destination,$locationn[$@currenttime]; - announce "Pilot: The plane has arrived at "+$locationsname$[$locationn[getarg(1)]]+". Departure to "+ $locationsname$[$locationn[getarg(2)]] + " is in 3 minutes.",16; - end; -} diff --git a/npc/custom/etc/bank.txt b/npc/custom/etc/bank.txt deleted file mode 100644 index c5bed187b..000000000 --- a/npc/custom/etc/bank.txt +++ /dev/null @@ -1,117 +0,0 @@ -//===== Hercules Script ====================================== -//= Banker Script -//===== By: ================================================== -//= Syrus22 (1.0) -//===== Current Version: ===================================== -//= 2.0 -//===== Description: ========================================= -//= An account wide Banker to store Zeny -//===== Additional Comments: ================================= -//= Syrus22 - There's an optional transaction fee at the top of -//= the script. To use it simply change the first set command -//= to set the cost variable to whatever you want the fee to be. -//= Version 2.0: Optimized and brought the script up to standard. [Jguy] -//============================================================ - -prontera,132,217,5 script Banker 4_M_MANAGER,{ -set @cost,500; -mes "[Banker]"; -mes "Welcome to the First Bank of Prontera. How can I help you today?"; -next; -switch(select("I'd like to make a deposit.", "I'd like to make a withdrawl.", "What's my current balance?", "Cancel")) { - case 1: - mes "[Banker]"; - mes "Very well... How much would you like to deposit? The maximum you can deposit at once is 999,999 Zeny."; - next; - if (@cost > 0) { - mes "[Banker]"; - mes "Oh, and do realize there is a " +@cost + " Zeny charge on all transactions!"; - next; - } - input @deposit; - if (@deposit < 1) { - mes "Make sure you ask me to deposit a real amount."; - close; - } - else if (@deposit > Zeny) { - mes "It does not appear like you have the amount of zeny you're trying to deposit!"; - close; - } - else if (@deposit > (Zeny - @cost)) { - mes "You need " + @cost + " Zeny to cover the transaction fee!"; - close; - } - else { - Zeny -= @deposit; - Zeny -= @cost; - set #bankstorage,#bankstorage + @deposit; - mes "[Banker]"; - mes "Thank you very much... Your zeny is in good hands."; - close; - } - - case 2: - mes "[Banker]"; - mes "Very well... How much would you like to withdraw? The maximum you can withdraw at one time is 999,999 Zeny"; - next; - if (@cost > 0) { - mes "[Banker]"; - mes "Oh, and do realize there is a " +@cost + " Zeny charge on all transactions!"; - next; - } - input @withdrawl; - if (@withdrawl < 1) { - mes "Please don't play games. I need a real amount to withdraw."; - close; - } - else if (@withdrawl > #bankstorage) { - mes "I show you only have ^00FF00" + #bankstorage +"^000000 zeny in your account!"; - close; - } - else if ((@cost > Zeny) && ((Zeny + @withdrawl) > @cost)) { - mes "[Banker]"; - mes "You don't have the Zeny for the transaction fee right now. Would you like me to take the fee directly from your withdrawl?"; - next; - switch(select("Yes please.", "No, Thanks")){ - case 1: - mes "[Banker]"; - mes "Removing " + @cost + " from your withdrawl to cover the deposit fee..."; - set @withdrawl,@withdrawl - @cost; - set #bankstorage,#bankstorage - @cost; - set @cost,0; - next; - Zeny -= @cost; - Zeny += @withdrawl; - set #bankstorage,#bankstorage - @withdrawl; - mes "[Banker]"; - mes "There's your Zeny. Have a good day."; - close; - case 2: - mes "[Banker]"; - mes "Very well... come again soon."; - close; - } - } - else { - Zeny -= @cost; - Zeny += @withdrawl; - set #bankstorage,#bankstorage - @withdrawl; - mes "[Banker]"; - mes "There's your Zeny. Have a good day."; - close; - } - case 3: - mes "[Banker]"; - mes "Hmmmm let me check some paper work."; - next; - mes "*Rustle, Rustle*"; - next; - mes "[Banker]"; - mes "You currently have " + #bankstorage + " Zeny in your account."; - close; - case 4: - mes "[Banker]"; - mes "Very well... come again soon."; - close; - } -} diff --git a/npc/custom/etc/bank_kafra.txt b/npc/custom/etc/bank_kafra.txt deleted file mode 100644 index 375a9f611..000000000 --- a/npc/custom/etc/bank_kafra.txt +++ /dev/null @@ -1,114 +0,0 @@ -//===== Hercules Script ====================================== -//= The 2nd Bank of Prontera (with daily 0.01% income!) -//===== By: ================================================== -//= Lupus (1.0) -//===== Current Version: ===================================== -//= 1.2a -//===== Description: ========================================= -//= A bank which has an interest % -//===== Additional Comments: ================================= -// Look for this formula and setup your Bank daily % interest -// #kafrabank/1000 = 0.1% of interest per day -// #kafrabank/100 = 1% of interest per day -// #kafrabank/10 = 10% of interest per day -// -// 1.1 Added log of bank operation -> logmes "some info"; -// 1.2 Set max income to 100,000z. It would help to avoid -// zeny exploits when you change DATE at your server -// 1.2a Corrected bad duplicate names. (bugreport:921) [Samuray22] -//============================================================ - -- script Bank Clerk::bankg 4_M_ZONDAOYAJI,{ - mes"[Maniss]"; - mes strcharinfo(PC_NAME)+", welcome to the 2nd Bank of Prontera!"; - - set @kb_int,(gettime(GETTIME_MONTH)*31)+gettime(GETTIME_DAYOFMONTH); //today's number - set @income,0; - //calculate % - if (#kafrabank<=0 || #kb_int>=@kb_int) goto L_NoIncomeToday; - set @income,(#kafrabank/1000)*(@kb_int-#kb_int); //@income == % of the sum - //max income constant: - if (@income>100000) set @income,100000; -L_NoIncomeToday: - set #kb_int,@kb_int; //reset days timer - - if(#kafrabank==0) mes "We could open you an account."; - if(@income>0) mes "Today's income: ^135445" + @income + "^000000 zeny."; - set #kafrabank,#kafrabank+@income; - if(#kafrabank>0) mes "Your account: ^135445" + #kafrabank + "^000000 zeny."; - mes "What would you like?"; - next; - if(#kafrabank==0) menu "-Open an account",-,"-Quit",B_EXIT2; - if(#kafrabank>0) menu "-Deposit money",-,"-Withdraw money",M_WITHDRAW,"-Quit",B_EXIT2; - - mes"[Maniss]"; - mes "Please, tell me how much zeny you would like to deposit."; - next; - if(input(@kafrabank) == 1) goto L_TOO_BIG_AMOUNT; - - if(@kafrabank<1000) goto L_LESS_1000; - if(@kafrabank>Zeny) goto L_NOT_ENOUGH; - Zeny -= @kafrabank; - set #kafrabank,#kafrabank+@kafrabank; - mes"[Maniss]"; - mes "You've made a deposit of ^135445" + @kafrabank + "z^000000."; - //we log these zeny operations into the log db - logmes "Bank %: " + @income +"z, Deposit: "+ @kafrabank +"z, Final: "+ #kafrabank +"z"; - goto B_EXIT; - -M_WITHDRAW: - if(#kafrabank==0) goto L_ZERO_ACCOUNT; - mes"[Maniss]"; - mes "Your account: ^135445" + #kafrabank + "^000000 zeny."; - mes "How much zeny would you like to withdraw?"; - next; - if(input(@kafrabank) == 1) goto L_TOO_BIG_AMOUNT; - - if(@kafrabank<1) goto B_EXIT2; - if(@kafrabank>#kafrabank) goto L_NOT_ENOUGH; - set #kafrabank,#kafrabank-@kafrabank; - Zeny += @kafrabank; - mes"[Maniss]"; - mes "Here is your ^135445" + @kafrabank + "z^000000, put your sign here..."; - //we log these zeny operations into the log db - logmes "Bank %: " + @income +"z, Withdraw: "+ @kafrabank +"z, Final: "+ #kafrabank +"z"; - goto B_EXIT; - -L_NOT_ENOUGH: - mes"[Maniss]"; - mes "You don't have enough zeny for this operation."; - next; - goto B_EXIT2; - -L_ZERO_ACCOUNT: - mes"[Maniss]"; - mes "You don't have any zeny on your account!"; - next; - goto B_EXIT2; - -L_TOO_BIG_AMOUNT: - mes"[Maniss]"; - mes "Sorry. The maximum deposit you can make on a time is 10,000,000 zeny."; - next; - goto B_EXIT2; - -L_LESS_1000: - mes"[Maniss]"; - mes "We're sorry, the minimum amount of zeny you can deposit is 1,000 zeny."; - next; - goto B_EXIT2; - -B_EXIT: - mes "Very well... Come again soon!"; - next; - -B_EXIT2: - mes"[Maniss]"; - mes "Thank you for using our Bank Service. We hope to see you again soon."; - close; -} - -prontera,131,190,1 duplicate(bankg) Bank Clerk#1-1 4_M_ZONDAOYAJI -geffen,125,73,3 duplicate(bankg) Bank Clerk#2-1 4_M_ZONDAOYAJI -izlude,145,107,1 duplicate(bankg) Bank Clerk#3-1 4_M_ZONDAOYAJI -morocc,147,84,7 duplicate(bankg) Bank Clerk#4-1 4_M_ZONDAOYAJI diff --git a/npc/custom/etc/blackjack.txt b/npc/custom/etc/blackjack.txt deleted file mode 100644 index 5baba717e..000000000 --- a/npc/custom/etc/blackjack.txt +++ /dev/null @@ -1,354 +0,0 @@ -//===== Hercules Script ====================================== -//= Black Jack -//===== By: ================================================== -//= kobra_k88 -//===== Current Version: ===================================== -//= 1.1 -//===== Description: ========================================= -//= Black Jack card game. Gameplay based off standard casino -//= black jack rules. Dealer must have at least 17 to stay and will -//= automatically stay at 17 and up. Player must have at least -//= 13 to stay. Aces counted as 11 or 1. Option to "Double Down". -//= Currently does not allow for "insurance", or "splitting" -//= of pairs. -//===== Additional Comments: ================================= -// 1.0 Release -// 1.1 Prevent player logout from zeny deletion (AnnieRuru) -//============================================================ - -cmd_in02,188,89,1 script Black Jack Dealer 1_M_LIBRARYMASTER,{ - mes "[Dealer]"; - mes "Hello there! Would you like to play a game of Black Jack?"; -M_Menu: - next; - menu "What are the rules?",M_0, "I want to play.",L_Play, "No thanks.",M_End; - -M_0: - mes "[Dealer]"; - mes "What would you like to know?"; -sM_Menu0: - next; - menu "The basics.",sM_0a, "Winning and loosing.",sM_0b, "'Double Down'.",sM_0c, - "Ace value.",sM_0d, "Nothing.",M_Menu; - -sM_0a: - mes "[Dealer]"; - mes "Black Jack is a card game in which the goal is to get 21, or as"; - mes "close to 21 points as possible, without going over 21."; - next; - mes "[Dealer]"; - mes "Before the game starts, the player must make a bet. Once the bet"; - mes "has been made, both the dealer and the player are dealt 2 cards"; - mes "each. Depending on what cards you have, you can choose to ^5533FF'stay'^000000,"; - mes "or you can choose to ^5533FF'pull'^000000."; - next; - mes "[Dealer]"; - mes "When you choose to 'stay', you are telling the dealer that you don't"; - mes "need anymore cards. This allows the dealer to pull if he/she"; - mes "wants to. In order to stay, you must have ^FF3355at least 13 points^000000. The"; - mes "dealer can only stay when he/she has^FF3355 17 points or more^000000."; - next; - mes "[Dealer]"; - mes "When you choose to 'pull', you are telling the dealer that you want"; - mes "another card. By pulling more cards you can increase your point"; - mes "total. As long has you have ^FF3355less than 21^000000 points you can pull a"; - mes "card from the deck."; - goto sM_Menu0; -sM_0b: - mes "[Dealer]"; - mes "There are 3 ways to win and loose at Black Jack."; - next; - mes "[Dealer]"; - mes "1.) At the end of a Black Jack round, if you have more points"; - mes "than the dealer you will win the round. Conversely if you have"; - mes "less points than the dealer you will loose."; - next; - mes "[Dealer]"; - mes "2.) If you pull a card that makes your point total go over 21 you"; - mes "will automatically loose the round. This is called a ^5533FF'bust'^000000. If"; - mes "the dealer busts then you will win the round."; - next; - mes "[Dealer]"; - mes "3.) If you have a point total of 21 with the first 2 cards, you"; - mes "will automatically win the round. This is called a ^5533FF'Black Jack'^000000"; - mes "and happens when you get an 'Ace' and a '10 valued' card. If the"; - mes "dealer gets a Black Jack the player will automatically lose the round."; - next; - mes "[Dealer]"; - mes "4.) Besides winning and loosing, you can tie with the dealer. If"; - mes "both you and the dealer have the same point total at the end of a"; - mes "round, this will result in a tie with no winner and no loss or gain"; - mes "in money."; - next; - mes "[Dealer]"; - mes "This is called a ^5533FF'push'^000000 with the dealer. This also"; - mes "applies to both you and the dealer having Black Jack at the same"; - mes "time."; - goto sM_Menu0; -sM_0c: - mes "[Dealer]"; - mes "The 'Double Down' option allows you to double your current bet,"; - mes "but with the drawback that you will only be able to pull one"; - mes "additional card. This option is only available at the beggining of"; - mes "each round."; - next; - mes "[Dealer]"; - mes "An example of when doubling down is useful, is when"; - mes "your first 2 cards give you a point total of 11. You have a good"; - mes "chance of getting 21 or 20 with the next card that you draw. This"; - mes "would be a good hand to double down on."; - goto sM_Menu0; -sM_0d: - mes "[Dealer]"; - mes "The 'Ace' card is a unique card in the game of Black Jack because"; - mes "it can have 2 values. An Ace can be counted as either 11 points,"; - mes "or just 1 point. For example if you had an Ace and a 4, that would"; - mes "give you either 15 or 5 points."; - next; - mes "[Dealer]"; - mes "If you decided to stay, the Ace would automatically be counted as"; - mes "11 points to give you 15 points total."; - next; - mes "[Dealer]"; - mes "If you had decided to pull and received a 9, the ace would"; - mes "automatically be counted as 1 point to give you a total of 14"; - mes "points. If the Ace was counted as 11 points, you would have a"; - mes "point total over 21 and would have lost."; - next; - mes "[Dealer]"; - mes "It is because of the flexibilty you have with the 'Ace' that makes"; - mes "it the most powerfull card in the game."; - goto sM_Menu0; -M_End: - mes "[Dealer]"; - mes "Feel free to come back anytime"; - close; - -//================ -L_Play: - mes "[Dealer]"; - mes "Please place your bets..."; - next; - menu "2z",M_1a, "10z",M_1b, "20z",M_1c, "100z",M_1d, "Too rich for my blood....",M_End; - -M_1a: - if(Zeny < 2) goto sL_NotEnuf; - set @bet, 2; - Zeny -= @bet; - goto L_Cont0; -M_1b: - if(Zeny < 10) goto sL_NotEnuf; - set @bet, 10; - Zeny -= @bet; - goto L_Cont0; -M_1c: - if(Zeny < 20) goto sL_NotEnuf; - set @bet, 20; - Zeny -= @bet; - goto L_Cont0; -M_1d: - if(Zeny < 100) goto sL_NotEnuf; - set @bet, 100; - Zeny -= @bet; - goto L_Cont0; - -sL_NotEnuf: - mes "[Dealer]"; - mes "I'm sorry but you don't have enough zeny to make that bet."; - close; - -L_Cont0: - mes "(the cards are being dealt)"; - next; - deletearray $@card[0],13; - set @dealerTurn, 0; - set @doubledown, 0; - set @numP, 0; - set @numD, 0; - set @pAce, 0; - set @dAce, 0; - callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce; - callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce; - callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce; - callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce; - -//============== -L_Start: - callsub sF_GetTot; - - mes "- Here are the ^FF5533DEALER'S^000000 cards:"; - if (@numD==2) callsub sF_D2cards; - if (@numD==3) callsub sF_D3cards; - if (@numD==4) callsub sF_D4cards; - if (@numD==5) callsub sF_D5cards; - mes " The DEALER has: ^FF5533"+@dealTot+"^000000"; - mes " "; - mes "- Here are ^5533FFYOUR^000000 cards:"; - if (@numP==2) callsub sF_P2cards; - if (@numP==3) callsub sF_P3cards; - if (@numP==4) callsub sF_P4cards; - if (@numP==5) callsub sF_P5cards; - if(@pAce != 1 || @playTot == 21) mes " YOU have: ^5533FF" +@playTot+ "^000000"; - if(@pAce == 1 && @playTot != 21) mes " You have: ^5533FF" +@playTot+ "^000000, or ^5533FF" +(@playTot-10)+ "^000000"; - next; - if(@playTot==21 && @dealTot==21) goto sL_Push; - if(@numP==2 && @playTot == 21) goto sL_Win; - if(@numD==2 && @dealTot == 21) goto sL_Lose; - if(@playTot > 21) goto sL_Lose; - if(@dealTot > 21) goto sL_Win; - if(@numP==2 && @dealerTurn==0) menu "Hit me(pull)",M_Hit, "Stay",M_Stay, "Double Down",M_Double; - if(@dealerTurn == 0) menu "Hit me(pull)",M_Hit, "Stay",M_Stay; - -M_Stay: - mes "[Dealer]"; - if(@playTot < 13) goto sL_PlayToLow; - if(@dealTot > 16) mes "The Dealer stays."; - if(@dealTot > 16 || @numD == 5) goto L_Check; - mes "The Dealer is going to pull"; - next; - callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce; - set @dealerTurn, 1; - goto L_Start; - -sL_PlayToLow: - mes "I'm sorry but you do not have a high enough total to stay. You must pull."; - next; - goto M_Hit; - -M_Hit: - if(@numP == 5) goto M_Stay; - callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce; - goto L_Start; -M_Double: - mes "[Dealer]"; - mes "Player has chosen to Double Down. You're current bet will be"; - mes "doubled, and you will only be able to pull 1 extra card."; - next; - set @dealerTurn, 1; - set @doubledown, 1; - callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce; - goto L_Start; - -//============= -L_Check: - next; - if(@playTot < @dealTot) goto sL_Lose; - if(@playTot == @dealTot) goto sL_Push; - -sL_Win: - mes "[Dealer]"; - mes "Congratulations, you've won!"; - if ( @doubledown ) - Zeny += @bet *3; - else - Zeny += @bet *2; - next; - goto L_Play; -sL_Lose: - mes "[Dealer]"; - mes "I'm sorry but you've lost."; - next; - goto L_Play; -sL_Push: - mes "[Dealer]"; - mes "Its a push. You tied with the Dealer."; - Zeny += @bet; - next; - goto L_Play; - - -//================================== - // Sub function for dealing/pulling the cards -sF_GetCards: - set @rnd, rand(1,13); - if($@card[@rnd] == 4) goto sF_GetCards; - set $@card[@rnd], $@card[@rnd] + 1; - set getarg(1), @rnd; - if(getarg(1) > 10) set getarg(1), 10; - if(getarg(1) == 1 && getarg(3) < 1) set getarg(1), 11; - if(getarg(1) == 11) set getarg(3), 1; - set getarg(2), " " + getarg(1) + " "; - if(@rnd == 10) set getarg(2), getarg(1); - if(@rnd == 1) set getarg(2), " A "; - if(@rnd == 11) set getarg(2), " J "; - if(@rnd == 12) set getarg(2), " Q "; - if(@rnd == 13) set getarg(2), " K "; - set getarg(0), getarg(0) + 1; - return; - -//================================== - // Sub function for getting the total score for each hand -sF_GetTot: - set @i, 0; - set @dealTot, 0; - set @playTot, 0; - -GetDealTot: - set @dealTot, @dealTot + @dealCard[@i]; - set @i, @i + 1; - if(@i < @numD) goto GetDealTot; - if(@dAce == 1 && @dealTot > 21) set @dealTot, @dealTot - 10; - set @i, 0; -GetPlayTot: - set @playTot, @playTot + @playCard[@i]; - set @i, @i + 1; - if(@i < @numP) goto GetPlayTot; - if(@pAce == 1 && @playTot > 21) set @pAce, 2; - if(@pAce > 0 && @playTot > 21) set @playTot, @playTot - 10; - return; - -//======================================= - // Sub function for displaying the Cards -sF_D2cards: - mes " .-----. .-----. "; - mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | "; - mes " '-----' '-----' "; - return; -sF_P2cards: - mes " .-----. .-----. "; - mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | "; - mes " '-----' '-----' "; - return; -sF_D3cards: - mes " .-----. .-----. .-----. "; - mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | "; - mes " '-----' '-----' '-----' "; - return; -sF_P3cards: - mes " .-----. .-----. .-----. "; - mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" | "; - mes " '-----' '-----' '-----' "; - return; -sF_D4cards: - mes " .-----. .-----. .-----. "; - mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | "; - mes " '-----' '-----' '-----' "; - mes " .-----. "; - mes " | "+@dealCard$[3]+" |"; - mes " '-----' "; - return; -sF_P4cards: - mes " .-----. .-----. .-----. "; - mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" |"; - mes " '-----' '-----' '-----' "; - mes " .-----. "; - mes " | "+@playCard$[3]+" |"; - mes " '-----' "; - return; -sF_D5cards: - mes " .-----. .-----. .-----. "; - mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | "; - mes " '-----' '-----' '-----' "; - mes " .-----. .-----. "; - mes " | "+@dealCard$[3]+" | | "+@dealCard$[4]+" | "; - mes " '-----' '-----' "; - return; -sF_P5cards: - mes " .-----. .-----. .-----. "; - mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" | "; - mes " '-----' '-----' '-----' "; - mes " .-----. .-----. "; - mes " | "+@playCard$[3]+" | | "+@playCard$[4]+" | "; - mes " '-----' '-----' "; - return; -} diff --git a/npc/custom/etc/floating_rates.txt b/npc/custom/etc/floating_rates.txt deleted file mode 100644 index 109a5217c..000000000 --- a/npc/custom/etc/floating_rates.txt +++ /dev/null @@ -1,41 +0,0 @@ -//===== Hercules Script ====================================== -//= Floating Server Rates -//===== By: ================================================== -//= Lupus -//===== Current Version: ===================================== -//= 1.0 -//===== Description: ========================================= -//= It's a simply example of setbattleflag -//= This script will change your server rates from 1x to 1.5x every 6 hours -//= Note: It doesn't affect Card granted drops, MVP & Treasure Chests drops ^_- -//= It also doesn't affect CARD drops, because they are just 0.01% -//===== Additional Comments: ================================= -//= You can make incredible scripts with 'setbattleflag'! -//============================================================ - -- script FloatingRates FAKE_NPC,{ -OnInit: -//add any other HOURS -OnHour00: -OnHour06: -OnHour12: -OnHour18: -//------------------- - set $@brate,rand(100,150); - set $@jrate,rand(100,150); - set $@drate,rand(100,150); - //Base exp - setbattleflag("base_exp_rate",$@brate); - //Job exp - setbattleflag("job_exp_rate",$@jrate); - //Drops - setbattleflag("item_rate_common",$@drate); - setbattleflag("item_rate_heal",$@drate); - setbattleflag("item_rate_use",$@drate); - setbattleflag("item_rate_equip",$@drate); - //we don't change card drops rate, because these values won't change them anyway - atcommand "@reloadmobdb"; - - announce "Current Rune-Midgard rates are: 1."+($@brate-100)+"x 1."+($@jrate-100)+"x 1."+($@drate-100)+"x",bc_all,0xFF6060; - end; -} diff --git a/npc/custom/etc/lottery.txt b/npc/custom/etc/lottery.txt deleted file mode 100644 index 421fccc78..000000000 --- a/npc/custom/etc/lottery.txt +++ /dev/null @@ -1,452 +0,0 @@ -//===== Hercules Script ====================================== -//= Lottery -//===== By: ================================================== -//= acky -//===== Current Version: ===================================== -//= 1.2.1a -//===== Description: ========================================= -//= Daily lottery draw -//===== Additional Comments: ================================= -//= Numbers drawn daily (Time is configured line 29) -//= *Added GM-Riggability -//= *Ability to renew ticket -//= *Improved interface -//= *Fixed minor bug where first load didn't work. -//= 1.2.1a fix due to new script engine -//============================================================ - -- script lotterygenerator FAKE_NPC,{ -OnInit: - set $L_TicketPrice,4750; // TICKET COST - set $L_Prize_Money,5000000; // JACKPOT AMOUNT - set $L_Prize_Money_Small,1000000; // SECONDARY PRIZE - if ($LID == 0) goto L_GenID; - end; - - //Modify for own time -OnClock2045: - // CHECKS IF LOTTERY IS RIGGED - if ($L_Rigged == 1) goto L_Rigged_Draw; - // GENERATES RANDOM NUMBERS 1-40 -Pick1: - set $LW1,rand (1,40); - -Pick2: - set $LW2,rand (1,40); - if ($LW2 == $LW1) goto Pick2; - -Pick3: - set $LW3,rand (1,40); - if ($LW3 == $LW2) goto Pick3; - if ($LW3 == $LW1) goto Pick3; - -Pick4: - set $LW4,rand (1,40); - if ($LW4 == $LW2) goto Pick4; - if ($LW4 == $LW1) goto Pick4; - if ($LW4 == $LW3) goto Pick4; - -Pick5: - set $LW5,rand (1,40); - if ($LW5 == $LW1) goto Pick5; - if ($LW5 == $LW2) goto Pick5; - if ($LW5 == $LW3) goto Pick5; - if ($LW5 == $LW4) goto Pick5; - -Pick6: - set $LW6,rand (1,40); - if ($LW6 == $LW1) goto Pick6; - if ($LW6 == $LW2) goto Pick6; - if ($LW6 == $LW3) goto Pick6; - if ($LW6 == $LW4) goto Pick6; - if ($LW6 == $LW5) goto Pick6; - - // BROADCASTS DRAW -L_Broadcast: - announce "Lottery: Welcome to tonight's lotto draw!",8; - announce "The numbers are as follows: [" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]",8; - announce "Congratulations to the winners of tonight!",8; - - // GENERATES DRAW ID CODE -L_GenID: - set $LID2,$LID; - // SETS TOMORROW'S ID NUMBER - set $LID,rand (100000,999999); - end; - - // SETS DRAW TO RIGGED NUMBERS -L_Rigged_Draw: - set $LW1,$LR1; - set $LW2,$LR2; - set $LW3,$LR3; - set $LW4,$LR4; - set $LW5,$LR5; - set $LW6,$LR6; - set $L_Rigged,0; - goto L_Broadcast; -} - -prontera,141,182,5 script Lottery 1_F_ORIENT_02,{ -L_Begin: - mes "[Lottery]"; - mes "Winning Lotto Numbers ("+$LID2+"):"; - mes "^0000FF[" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]^000000"; - if ($LID > 99999) mes "Your Ticket ("+#LID+"):"; - if ($LID > 99999) mes "^FF0000[" + #LW1 + "] [" + #LW2 + "] [" + #LW3 + "] [" + #LW4 + "] [" + #LW5 + "] [" + #LW6 + "]^000000"; - mes "Next Draw-ID: ^FF0000" + $LID + "^000000."; - next; - if (getgmlevel() > 90) goto L_GM; - menu "Claim Prize",L_Claim,"Buy New Ticket",L_Buy,"Cancel",L_Cancel; - -// PURCHASE TICKET -L_Buy: - if (#LID == $LID && #L1 != 0) goto L_DoubleTicket; - mes "[Lottery]"; - mes "Tickets cost ^0000FF" + $L_TicketPrice + "z^000000."; - mes "The Jackpot is ^FF0000" + $L_Prize_Money + "z^000000."; - next; - menu "Buy Ticket",-,"Cancel",L_Cancel; - if (Zeny < $L_TicketPrice) goto L_NoZeny; - Zeny -= $L_TicketPrice; - mes "[Lottery]"; - mes "Would you like your numbers hand picked or computer generated?"; - next; - menu "Computer Generated",L_ComputerGen,"Hand Picked",L_HandPick,"Renew Ticket",L_Renew; - -// RENEW LAST TICKET -L_Renew: - if ($LID < 99999) goto L_Invalid; - set #LID,$LID; - goto L_Confirm2; - -L_ComputerGen: -// SELECTS RANDOM NUMBERS - set @L1,0; - set @L2,0; - set @L3,0; - set @L4,0; - set @L5,0; - set @L6,0; -Pick1: - set @L1,rand (1,40); -Pick2: - set @L2,rand (1,40); - if (@L2 == @L1) goto Pick2; -Pick3: - set @L3,rand (1,40); - if (@L3 == @L2) goto Pick3; - if (@L3 == @L1) goto Pick3; -Pick4: - set @L4,rand (1,40); - if (@L4 == @L2) goto Pick4; - if (@L4 == @L1) goto Pick4; - if (@L4 == @L3) goto Pick4; -Pick5: - set @L5,rand (1,40); - if (@L5 == @L1) goto Pick5; - if (@L5 == @L2) goto Pick5; - if (@L5 == @L3) goto Pick5; - if (@L5 == @L4) goto Pick5; -Pick6: - set @L6,rand (1,40); - if (@L6 == @L1) goto Pick6; - if (@L6 == @L2) goto Pick6; - if (@L6 == @L3) goto Pick6; - if (@L6 == @L4) goto Pick6; - if (@L6 == @L5) goto Pick6; - mes "[Lottery]"; - mes "The computer has selected the following numbers:"; - mes "^0000FF" + @L1 + " " + @L2 + " " + @L3 + " " + @L4 + " " + @L5 + " " + @L6 + "^000000"; - next; - menu "Confirm",L_Confirm,"Re-Generate",L_ComputerGen; - -// HAND PICK LOTTERY NUMBERS -L_HandPick: - mes "[Lottery]"; - mes "Please pick your numbers (1-40):"; - set @L1,0; - set @L2,0; - set @L3,0; - set @L4,0; - set @L5,0; - set @L6,0; -Input1: - input @L1; - if (@L1 < 1 || @L1 > 40) goto Input1; - mes @L1; -Input2: - input @L2; - if (@L2 < 1 || @L2 > 40) goto Input2; - if (@L2 == @L1) goto Input2; - mes @L2; -Input3: - input @L3; - if (@L3 < 1 || @L3 > 40) goto Input3; - if (@L3 == @L1) goto Input3; - if (@L3 == @L2) goto Input3; - mes @L3; -Input4: - input @L4; - if (@L4 < 1 || @L4 > 40) goto Input4; - if (@L4 == @L1) goto Input4; - if (@L4 == @L2) goto Input4; - if (@L4 == @L3) goto Input4; - mes @L4; -Input5: - input @L5; - if (@L5 < 1 || @L5 > 40) goto Input5; - if (@L5 == @L1) goto Input5; - if (@L5 == @L2) goto Input5; - if (@L5 == @L3) goto Input5; - if (@L5 == @L4) goto Input5; - mes @L5; -Input6: - input @L6; - if (@L6 < 1 || @L6 > 40) goto Input6; - if (@L6 == @L1) goto Input6; - if (@L6 == @L2) goto Input6; - if (@L6 == @L3) goto Input6; - if (@L6 == @L4) goto Input6; - if (@L6 == @L5) goto Input6; - mes @L6; - next; - mes "[Lottery]"; - mes "Your numbers are:"; - mes "^0000FF" + @L1 + " " + @L2 + " " + @L3 + " " + @L4 + " " + @L5 + " " + @L6 + "^000000"; - next; - menu "Confirm",L_Confirm,"Re-Pick",L_HandPick; - -L_Confirm: - set #LW1,@L1; - set #LW2,@L2; - set #LW3,@L3; - set #LW4,@L4; - set #LW5,@L5; - set #LW6,@L6; - set #LID,$LID; -L_Confirm2: - mes "[Lottery]"; - mes "The live broadcasted draw is at 9pm."; - mes "You can claim your ticket between then and the next draw."; - next; - mes "[Lottery]"; - mes "Good luck!"; - close; - -L_Claim: - // CHECKS TICKET VALIDILITY - if (#LID != $LID2) goto L_Invalid; - // CHECKS HOW MANY NUMBERS MATCHED - set @LPrize,0; - if (#LW1 == $LW1) set @LPrize,@LPrize+1; - if (#LW1 == $LW2) set @LPrize,@LPrize+1; - if (#LW1 == $LW3) set @LPrize,@LPrize+1; - if (#LW1 == $LW4) set @LPrize,@LPrize+1; - if (#LW1 == $LW5) set @LPrize,@LPrize+1; - if (#LW1 == $LW6) set @LPrize,@LPrize+1; - if (#LW2 == $LW1) set @LPrize,@LPrize+1; - if (#LW2 == $LW2) set @LPrize,@LPrize+1; - if (#LW2 == $LW3) set @LPrize,@LPrize+1; - if (#LW2 == $LW4) set @LPrize,@LPrize+1; - if (#LW2 == $LW5) set @LPrize,@LPrize+1; - if (#LW2 == $LW6) set @LPrize,@LPrize+1; - if (#LW3 == $LW1) set @LPrize,@LPrize+1; - if (#LW3 == $LW2) set @LPrize,@LPrize+1; - if (#LW3 == $LW3) set @LPrize,@LPrize+1; - if (#LW3 == $LW4) set @LPrize,@LPrize+1; - if (#LW3 == $LW5) set @LPrize,@LPrize+1; - if (#LW3 == $LW6) set @LPrize,@LPrize+1; - if (#LW4 == $LW1) set @LPrize,@LPrize+1; - if (#LW4 == $LW2) set @LPrize,@LPrize+1; - if (#LW4 == $LW3) set @LPrize,@LPrize+1; - if (#LW4 == $LW4) set @LPrize,@LPrize+1; - if (#LW4 == $LW5) set @LPrize,@LPrize+1; - if (#LW4 == $LW6) set @LPrize,@LPrize+1; - if (#LW5 == $LW1) set @LPrize,@LPrize+1; - if (#LW5 == $LW2) set @LPrize,@LPrize+1; - if (#LW5 == $LW3) set @LPrize,@LPrize+1; - if (#LW5 == $LW4) set @LPrize,@LPrize+1; - if (#LW5 == $LW5) set @LPrize,@LPrize+1; - if (#LW5 == $LW6) set @LPrize,@LPrize+1; - if (#LW6 == $LW1) set @LPrize,@LPrize+1; - if (#LW6 == $LW2) set @LPrize,@LPrize+1; - if (#LW6 == $LW3) set @LPrize,@LPrize+1; - if (#LW6 == $LW4) set @LPrize,@LPrize+1; - if (#LW6 == $LW5) set @LPrize,@LPrize+1; - if (#LW6 == $LW6) set @LPrize,@LPrize+1; - - if (@LPrize == 6) goto LWinBig; - if (@LPrize > 3 && @LPrize < 6) goto LWinSmall; - -// NO WINNER - mes "[Lottery]"; - mes "Bad luck, it appears you do not hold a winning ticket."; - next; - mes "[Lottery]"; - mes "Better luck next time!."; - close; - -// MATCHED ALL SIX -LWinBig: - mes "[Lottery]"; - mes "You have matched all six numbers!"; - mes "Jackpot!"; - mes "You've won ^0000FF" + $L_Prize_Money + "z^000000."; - Zeny += $L_Prize_Money; - announce "Lottery: " + strcharinfo(PC_NAME) + " has won the JACKPOT of " + $L_Prize_Money + "z!",8; - set #LID,0; - close; - -// MATCHED AT LEAST 4 -LWinSmall: - mes "[Lottery]"; - mes "You have matched at least 4 numbers!"; - mes "You've won ^0000FF" + $L_Prize_Money_Small + "z^000000."; - Zeny += $L_Prize_Money_Small; - announce "Lottery: " + strcharinfo(PC_NAME) + " has won a prize of " + $L_Prize_Money_Small + "z!",8; - set #LID,0; - close; - -// NO ZENY -L_NoZeny: - mes "[Lottery]"; - mes "You can't afford a lottery ticket."; - close; - -// INVALID TICKET -L_Invalid: - mes "[Lottery]"; - mes "I'm sorry but it appears that you have an invalid ticket."; - close; - -// DOUBLE TICKET -L_DoubleTicket: - mes "[Lottery]"; - mes "It appears that you already have a ticket for today."; - mes "You may only purchase one ticket per draw."; - close; - -L_Cancel: - mes "[Lottery]"; - mes "Come back soon!"; - close; - -// GM MENU (Lets you manually do draws) -L_GM: - menu "Claim Prize",L_Claim,"Buy New Ticket",L_Buy,"[GM]Do Draw Now",-,"[GM]Rig the Lottery",L_GM_Rig,"Cancel",L_Cancel; - - // CHECKS IF LOTTERY IS RIGGED - if ($L_Rigged == 1) goto L_Rigged_Draw; - // GENERATES RANDOM NUMBERS 1-40 -GMPick1: - set $LW1,rand (1,40); - -GMPick2: - set $LW2,rand (1,40); - if ($LW2 == $LW1) goto GMPick2; - -GMPick3: - set $LW3,rand (1,40); - if ($LW3 == $LW2) goto GMPick3; - if ($LW3 == $LW1) goto GMPick3; - -GMPick4: - set $LW4,rand (1,40); - if ($LW4 == $LW2) goto GMPick4; - if ($LW4 == $LW1) goto GMPick4; - if ($LW4 == $LW3) goto GMPick4; - -GMPick5: - set $LW5,rand (1,40); - if ($LW5 == $LW1) goto GMPick5; - if ($LW5 == $LW2) goto GMPick5; - if ($LW5 == $LW3) goto GMPick5; - if ($LW5 == $LW4) goto GMPick5; - -GMPick6: - set $LW6,rand (1,40); - if ($LW6 == $LW1) goto GMPick6; - if ($LW6 == $LW2) goto GMPick6; - if ($LW6 == $LW3) goto GMPick6; - if ($LW6 == $LW4) goto GMPick6; - if ($LW6 == $LW5) goto GMPick6; - -// BROADCASTS DRAW -L_Broadcast: - announce "Lottery: Welcome to the special GM's lotto draw!",8; - announce "The numbers are as follows: [" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]",8; - announce "Congratulations to the winners!",8; - -// GENERATES DRAW ID CODE -L_GenID: - set $LID2,$LID; - // SETS TOMORROW'S ID NUMBER - set $LID,rand (100000,999999); - close; - -// SETS DRAW TO RIGGED NUMBERS -L_Rigged_Draw: - set $LW1,$LR1; - set $LW2,$LR2; - set $LW3,$LR3; - set $LW4,$LR4; - set $LW5,$LR5; - set $LW6,$LR6; - set $L_Rigged,0; - goto L_Broadcast; - -// ALLOWS GM TO DO A RIGGED DRAW -L_GM_Rig: - mes "[Lottery]"; - mes "Please pick your numbers (1-40):"; - set $LR1,0; - set $LR2,0; - set $LR3,0; - set $LR4,0; - set $LR5,0; - set $LR6,0; -GMInput1: - input $LR1; - if ($LR1 < 1 || $LR1 > 40) goto GMInput1; - mes $LR1; -GMInput2: - input $LR2; - if ($LR2 < 1 || $LR2 > 40) goto GMInput2; - if ($LR2 == $LR1) goto GMInput2; - mes $LR2; -GMInput3: - input $LR3; - if ($LR3 < 1 || $LR3 > 40) goto GMInput3; - if ($LR3 == $LR1) goto GMInput3; - if ($LR3 == $LR2) goto GMInput3; - mes $LR3; -GMInput4: - input $LR4; - if ($LR4 < 1 || $LR4 > 40) goto GMInput4; - if ($LR4 == $LR1) goto GMInput4; - if ($LR4 == $LR2) goto GMInput4; - if ($LR4 == $LR3) goto GMInput4; - mes $LR4; -GMInput5: - input $LR5; - if ($LR5 < 1 || $LR5 > 40) goto GMInput5; - if ($LR5 == $LR1) goto GMInput5; - if ($LR5 == $LR2) goto GMInput5; - if ($LR5 == $LR3) goto GMInput5; - if ($LR5 == $LR4) goto GMInput5; - mes $LR5; -GMInput6: - input $LR6; - if ($LR6 < 1 || $LR6 > 40) goto GMInput6; - if ($LR6 == $LR1) goto GMInput6; - if ($LR6 == $LR2) goto GMInput6; - if ($LR6 == $LR3) goto GMInput6; - if ($LR6 == $LR4) goto GMInput6; - if ($LR6 == $LR5) goto GMInput6; - mes $LR6; - next; - mes "[Lottery]"; - mes "Lottery rigged for next draw."; - set $L_Rigged,1; - close; -} diff --git a/npc/custom/etc/marriage.txt b/npc/custom/etc/marriage.txt deleted file mode 100644 index 4e521ec55..000000000 --- a/npc/custom/etc/marriage.txt +++ /dev/null @@ -1,935 +0,0 @@ -//===== Hercules Script ====================================== -//= Wedding Script -//===== By: ================================================== -//= AppleGirl, Evera -//===== Current Version: ===================================== -//= 2.9 -//===== Description: ========================================= -//= Fully working wedding script for all kind of weddings -//===== Additional Comments: ================================= -// 1.1 Lesbian and Gay Weddings [ShadowLady] -// 2.0 Complete Rewrite [Skotlex] -// 2.9 Somewhat iRO-official NPC names [DracoRPG] -//============================================================ - -// Configuration Variables: -- script marriage_init FAKE_NPC,{ -OnInit: - set $@wed_allow, 0; //If 1, allows same sex marriages. - set $@wed_veil, 0; //Set to 0 to disable veil check on the bride - -//Id of the item that is traded for the wedding ring (use 0 to disable): - set $@wed_ring, 2613; - - set $@wed_groom_reg, 1300000; //Registration cost for the Groom - set $@wed_bride_reg, 1200000; //Registration cost for the Bride - set $@wed_divorce_fee, 50000; //Divorcing fee - set $@wedding_effect, 1; //On who to display the FX: 0: Priest, 1: Bride, 2: Groom - end; -} - -// Other Configuration: -// Line 61,62: Priest location, sprite and name. -// Line 437,438: Registration location, sprite and name. -// Line 813,814: Divorcing location, sprite and name. - -// Variable Notes: -// $wed_progress Signals that there is a wedding in progress -// $wed_groom$ - Groom's name storage -// $wed_groom_sex - Groom's gender (for same marriage ring giving) -// $wed_bride$ - Bride's name storage -// $wed_bride_sex - Groom's gender (for same marriage ring giving) -// $wed_groom_progress - Notes the progress on the groom's part -// $wed_bride_progress - Notes the progress on the bride's part -// 0: Not registered. 1: Registered. 2: Accepted the partner. 3: Ready to -// Retrieve the ring. 4: Retrieved the ring. 5: All set to be wed. 6: Already -// a couple. -// ceremony. -// $wedding_effect_id - When wedding_effect is enabled, sets the ID of the -// player to show the effect on. -// $divorce_progress signals that there is a divorce in progress -// $@divorcer$ name of the person who requested divorce -// $@divorcee id of the partner, who has to accept the divorce and pay. - -//The Priest - official iRO sprite & in-dialog name (on-map name not confirmed) -prt_church,100,123,4 script Vomars 1_M_PASTOR,{ - set @name$,"Vomars"; - - function SF_wed_end; - function SF_equip_check; - function SF_Groom; - function SF_Bride; - function SF_AcceptGroom; - function SF_AcceptBride; - function SF_RetrieveRingM; - function SF_RetrieveRingF; - function SF_RingsAccepted; - function SF_StartCeremony; - - if (getpartnerid() > 0) { - mes "["+@name$+"]"; - mes "You have my blessings, have a wonderful married life."; - close; - } - if ($wed_progress == 0) { // Official iRO dialog - mes "["+@name$+"]"; - mes "You must apply for"; - mes "marriage with Happy Marry"; - mes "before you can get married."; - mes "Happy Marry will let you know"; - mes "what else you'll need to do"; - mes "to prepare for marriage"; - close; - } // End official iRO dialog - - if (strcharinfo(PC_NAME) == $wed_groom$) { - SF_Groom(); - end; - } - if (strcharinfo(PC_NAME) == $wed_bride$) { - SF_Bride(); - end; - } - mes "["+@name$+"]"; - if ($wed_groom_progress == 0 || $wed_bride_progress == 0) { - mes "There is a wedding being planned. I would appreciate it if you would not interrupt me."; - close; - } - if ($wed_groom_progress == 6) { - mes "I am wedding "+$wed_groom$+" and "+$wed_bride$+", and it's already too late to object. Please let me continue."; - close; - } - mes "I am going to wed "+$wed_groom$+" and "+$wed_bride$+", do you have an objection to it?"; - if (select("Sorry, please go on.","Yes, I actually do.") == 2) { - //Abort - npctalk "Ladies and gentlemen, "+strcharinfo(PC_NAME)+" has an objection to the wedding!"; - SF_wed_end(); - mes "Why should they not be wed?"; - input $@msg$; - npctalk strcharinfo(PC_NAME)+"'s objection is: "+$@msg$; - emotion e_sob; - mes "I see..."; - } else - mes "Very well, go sit and enjoy the ceremony."; - close; - -function SF_Groom { - if ($wed_bride_progress == 0) { - mes "["+@name$+"]"; - mes "Looks like your bride has yet to arrive and register."; - close; - } - if (SF_equip_check() == 0) - close; - - switch($wed_groom_progress) { - case 1: - SF_AcceptBride(); - break; - case 2: - mes "["+@name$+"]"; - mes "I am waiting for your partner to accept you to start the ceremony."; - close; - case 3: - SF_RetrieveRingM(); - break; - case 4: - mes "["+@name$+"]"; - mes "Your partner's wedding ring hasn't been retrieved yet. The ceremony will start as soon as you both have claimed your rings."; - close; - case 5: - mes "["+@name$+"]"; - SF_StartCeremony(); - break; - default: - mes "["+@name$+"]"; - mes "Please don't interrupt me now."; - close; - } -} - -function SF_Bride { - if ($wed_groom_progress == 0) { - mes "["+@name$+"]"; - mes "Looks like your groom has yet to arrive and register."; - close; - } - - if (SF_equip_check() == 0) - close; - - switch ($wed_bride_progress) { - case 1: - SF_AcceptGroom(); - break; - case 2: - mes "["+@name$+"]"; - mes "I am waiting for your partner to accept you to start the ceremony."; - close; - case 3: - SF_RetrieveRingF(); - break; - case 4: - mes "["+@name$+"]"; - mes "Your partner's wedding ring hasn't been retrieved yet. The ceremony will start as soon as you both have claimed your rings."; - close; - case 5: - mes "["+@name$+"]"; - SF_StartCeremony(); - break; - default: - mes "["+@name$+"]"; - mes "Please don't interrupt me now."; - close; - } -} - -function SF_AcceptGroom { - mes "["+@name$+"]"; - mes $wed_bride$+", "+$wed_groom$+" has requested to be your husband for the rest of your life. Do you accept?"; - next; - switch(select("I need time to think about it.","No, I don't!","Yes, I do!")) { - case 1: - mes "["+@name$+"]"; - mes "You what!?"; - mes "err.. *cough* *cough* very well... come back after you've made up your mind."; - emotion e_ag; - close; - case 2: - mes "["+@name$+"]"; - mes "!!"; - mes "Ah... err... ehm... okay. You two seem to have some differences to settle first."; - close2; - emotion e_omg; - npctalk "Ladies and gentlemen, "+$wed_bride$+" has rejected to marry "+$wed_groom$+"!"; - SF_wed_end(); - break; - case 3: - set $wed_bride_progress,2; - if ($wed_groom_progress == 2) { - SF_RingsAccepted(); - break; - } - emotion e_ok; - mes "["+@name$+"]"; - mes "After your groom approves, you will be given your rings, the ceremony will begin and you will be officially married."; - close; - } -} - -function SF_AcceptBride { - mes "["+@name$+"]"; - mes $wed_groom$+", "+$wed_bride$+" has requested to be your wife for the rest of your life. Do you accept?"; - next; - switch(select("I need time to think about it.","No, I don't!","Yes, I do!")) { - case 1: - mes "["+@name$+"]"; - mes "You what!?"; - mes "err.. *cough* *cough* very well... come back after you've made up your mind."; - emotion e_ag; - close; - case 2: - mes "["+@name$+"]"; - mes "!!"; - mes "Ah... err... ehm... okay. You two seem to have some differences to settle first."; - emotion e_omg; - close2; - npctalk "Ladies and gentlemen, "+$wed_groom$+" has rejected to marry "+$wed_bride$+"!"; - SF_wed_end(); - break; - case 3: - set $wed_groom_progress,2; - if ($wed_bride_progress == 2) { - SF_RingsAccepted(); - break; - } - emotion e_ok; - mes "["+@name$+"]"; - mes "After your bride approves, you will be given your rings, the ceremony will begin and you will be officially married."; - close; - } -} - -function SF_RingsAccepted { - mes "["+@name$+"]"; - mes "Now that you both have accepted, the wedding will begin. Please come forth, you and your partner, to retrieve your rings."; - set $wed_bride_progress,3; - set $wed_groom_progress,3; - announce $wed_groom$+" and "+$wed_bride$+"'s wedding ceremony will be held at the church!",8; - close2; - emotion e_lv; - npctalk "May the groom and bride please step forward and retrieve their rings?"; -} - -function SF_RetrieveRingM { - mes "["+@name$+"]"; - if ($@wed_ring && countitem($@wed_ring) < 1) { - mes "What happened to your "+getitemname($@wed_ring)+"? You didn't lose it... did you? We need it to continue with the ceremony!"; - close; - } - if ($wed_bride_sex == SEX_MALE) - @item = 2634; //Groom's wedding ring - else - @item = 2635; //Bride's wedding ring - if (getnameditem(@item,$wed_groom$) == 0) { - mes "You don't seem to have enough space to carry the ring... go free up some space and come back to reclaim your partner's ring."; - close; - } - mes "Here's the wedding ring for your bride."; - if ($@wed_ring) delitem $@wed_ring,1; - set $wed_groom_progress,4; - - if ($wed_bride_progress == 4) - SF_StartCeremony(); - else { - mes "Once your bride retrieves the ring, the ceremony will begin."; - close; - } -} - -function SF_RetrieveRingF { - mes "["+@name$+"]"; - if ($@wed_ring && countitem($@wed_ring) < 1) { - mes "What happened to your "+getitemname($@wed_ring)+"? You didn't lose it... did you? We need it to continue with the ceremony!"; - close; - } - if ($wed_groom_sex == SEX_MALE) - @item = 2634; //Groom's wedding ring - else - @item = 2635; //Bride's wedding ring - - if (getnameditem(@item,$wed_bride$) == 0) { - mes "You don't seem to have enough space to carry the ring... go free up some space and come back to reclaim your partner's ring."; - close; - } - mes "Here's the wedding ring for your groom."; - if ($@wed_ring) delitem $@wed_ring,1; - set $wed_bride_progress,4; - - if ($wed_groom_progress == 4) - SF_StartCeremony(); - else { - mes "Once your groom retrieves the ring, the ceremony will begin."; - close; - } -} - -function SF_StartCeremony { - mes "I will now start the wedding ceremony, and you will be declared forth husband and wife."; - set $wed_bride_progress,5; - set $wed_groom_progress,5; - set $@msg$,$wed_groom$; - if (strcharinfo(PC_NAME) == $wed_groom$) - set $@msg$,$wed_bride$; - if (marriage($@msg$) == 0) { - next; - mes "["+@name$+"]"; - mes "Where is "+$@msg$+"?? I can't marry you both if one is missing..."; - close; - } - set $wed_bride_progress,6; - set $wed_groom_progress,6; - initnpctimer; - close; -} - -OnTimer1000: - npctalk "Ladies and Gentlemen, We will now join in holy matrimony these two lovers."; - end; - -OnTimer5000: - npctalk "Now more than ever, will both of your lives be entwined together as so will be your souls."; - end; - -OnTimer10000: - npctalk "You will both honor and cherish each other through the best and worst of times."; - end; - -OnTimer15000: - npctalk "The safety and well being of your other will now also be your responsibility."; - end; - -OnTimer20000: - npctalk "May in sickness or good health, your love burn bright like no force can extinguish it."; - end; - -OnTimer25000: - npctalk "Those here stand witness to these vows bestowed upon you, you must act accordingly to them."; - end; - -OnTimer30000: - npctalk "Understanding that, we are nothing more but mortals on this earth, but this is our triumph."; - end; - -OnTimer35000: - npctalk "We here will now join these two mortal entities, and create an immortal love."; - end; - -OnTimer40000: - npctalk $wed_groom$+", you have accepted to take "+$wed_bride$+" as your lawfully wedded wife,"; - end; - -OnTimer45000: - npctalk "and you, "+$wed_bride$+", have accepted take "+$wed_groom$+" as your lawfully wedded husband."; - end; - -OnTimer50000: - npctalk "And as such, now, by the powers vested in me..."; - end; - -OnTimer55000: - npctalk "I pronounce you Husband and Wife, you may kiss the bride and exchange rings."; - if ($wedding_effect_id && isloggedin($wedding_effect_id)) - { - attachrid($wedding_effect_id); - wedding; - detachrid; - } else - wedding; - SF_wed_end(); - stopnpctimer; - end; - -//Subfunction: Checks that the groom/bride is still wearing their stuff. -function SF_equip_check { - if (Sex == SEX_MALE && getequipid(2) != 7170) { - mes "["+@name$+"]"; - mes "Child, what did you do with your "+getitemname(7170)+"?"; - emotion e_dots; - return 0; - } - if (Sex == SEX_FEMALE && getequipid(2) != 2338) { - mes "["+@name$+"]"; - mes "Child, you are supposed to wear a "+getitemname(2338)+" at all times during the ceremony..."; - emotion e_dots; - return 0; - } - if (Sex == SEX_FEMALE && $@wed_veil && getequipid(1) != 2206) { - mes "["+@name$+"]"; - mes "Child, you can't take off your "+getitemname(2206)+" yet...."; - emotion e_dots; - return 0; - } - return 1; -} - -//Subfunction: Resets wedding variables. -function SF_wed_end { - set $wed_groom$,""; - $wed_groom_sex = -1; - set $wed_bride$,""; - $wed_bride_sex = -1; - set $wed_groom_progress,0; - set $wed_bride_progress,0; - set $wed_progress,0; - set $wedding_effect_id,0; -} - -OnInit: - if ($wed_groom_progress==6) { - SF_wed_end(); - } - end; -} - -//Registration & Status -prt_church,106,99,3 script Happy Marry 1_F_02,{ - set @name$,"Marry"; - if (getpartnerid() > 0) { - mes "["+@name$+"]"; - mes "Isn't marriage beautiful?"; - close; - } - - function SF_WedProgress; - function SF_Principles; - function SF_Procedure; - function SF_Register; - function SF_TryRegister; - - if ($wed_progress) { - SF_WedProgress(); - end; - } - - do { - mes "["+@name$+"]"; - mes "Marriage... is such a beautiful thing."; - mes "Would you like to get married with someone?"; - next; - set @menu, select( - "I'll be single forever!", - "Explain the principles of marriage.", - "Explain the marriage procedure.", - "I want to get married with someone." - ); - switch (@menu) { - case 1: //Quit - mes "["+@name$+"]"; - mes "In that case, enjoy your bachelor's life."; - close; - case 2: //Principles - SF_Principles(); - break; - case 3: //Procedure - SF_Procedure(); - break; - case 4: //Register - SF_Register(); - break; - } - } while (@menu > 1); - end; - -function SF_Register { - if ($@wed_allow) { //Role select - mes "["+@name$+"]"; - mes "Very well, whom would you like to register as?"; - next; - set @submenu, select("Groom","Bride","Cancel"); - } else if (Sex == SEX_MALE) { //Groom - mes "["+@name$+"]"; - mes "Very well, will you register as the Groom?"; - next; - if (select("Yes","I've changed my mind.")==1) - set @submenu, 1; - else - set @submenu, 3; - } else { //Bride - mes "["+@name$+"]"; - mes "Very well, will you register as the Bride?"; - next; - if (select("Yes","I've changed my mind.")==1) - set @submenu, 2; - else - set @submenu, 3; - } - switch (@submenu) { - case 1: //Groom - SF_TryRegister(0); - set $wed_progress,1; - mes "["+@name$+"]"; - mes "You are now registered as the groom."; - mes "Tell your bride to register as soon as possible."; - emotion e_hmm; - initnpctimer; - close; - case 2: //Bride - SF_TryRegister(1); - set $wed_progress,1; - mes "["+@name$+"]"; - mes "You are now registered as the bride."; - mes "Tell your groom to register as soon as possible."; - emotion e_hmm; - initnpctimer; - close; - default: //Cancel - mes "["+@name$+"]"; - mes "Come back when you are ready."; - close; - } -} - -function SF_WedProgress { - if (strcharinfo(PC_NAME) == $wed_groom$) { - mes "["+@name$+"]"; - if ($wed_bride_progress > 0) - mes "The Priest will handle the rest of the ceremony."; - else - mes "Tell your bride to register, what is taking so long? Time is running out."; - close; - } - if (strcharinfo(PC_NAME) == $wed_bride$) { - mes "["+@name$+"]"; - if ($wed_groom_progress > 0) - mes "The Priest will handle the rest of the ceremony."; - else - mes "Tell your groom to register, what is taking so long? Time is running out."; - close; - } - if ($wed_groom_progress == 0 && (Sex == SEX_MALE || $@wed_allow == 1)) { - mes "["+@name$+"]"; - mes $wed_bride$+" is waiting for the groom to register. Are you the one who came to register as groom?"; - next; - if (select("Yes, I am.","Sorry, you got the wrong person.") == 1) { - SF_TryRegister(0); - stopnpctimer; - set $wed_groom_progress,1; - mes "["+@name$+"]"; - mes "Very well, now go to the Priest to reaffirm your vows and the ceremony will begin."; - emotion e_no1; - close2; - npctalk "Registration finished. "+$wed_groom$+" and "+$wed_bride$+", please reaffirm your vows with the Priest."; - emotion e_no1; - end; - } else { - mes "["+@name$+"]"; - mes "I see. Sorry to have bothered you then."; - close; - } - - } - if ($wed_bride_progress == 0 && (Sex == SEX_FEMALE || $@wed_allow == 1)) { - mes "["+@name$+"]"; - mes $wed_groom$+" is waiting for the bride to register. Are you the one who came to register as the bride?"; - next; - if(select("Yes, I am.","Sorry, you got the wrong person.") == 1) { - SF_TryRegister(1); - stopnpctimer; - mes "["+@name$+"]"; - mes "Very well, now go to the Priest to reaffirm your vows and the ceremony will begin."; - emotion e_no1; - close2; - npctalk "Registration finished. "+$wed_groom$+" and "+$wed_bride$+", please reaffirm your vows with the Priest."; - emotion e_no1; - end; - } else { - mes "["+@name$+"]"; - mes "I see. Sorry to have bothered you then."; - close; - } - } - mes "["+@name$+"]"; - mes "There is a wedding in progress."; - mes "Would you like to know the progress of said wedding?"; - next; - if (select("Yes","No") != 1) { - mes "["+@name$+"]"; - mes "Enjoy the wedding."; - close; - } - //Display Progress - mes "["+@name$+"]"; - switch ($wed_groom_progress) { - case 0: - mes "The groom has not registered yet."; - break; - case 1: - mes "The groom, "+$wed_groom$+", has yet to accept the bride."; - break; - case 2: - mes "The groom, "+$wed_groom$+", is waiting for the bride's acceptance."; - break; - case 3: - mes "The groom, "+$wed_groom$+", has yet to retrieve the ring."; - break; - case 4: - mes "The groom, "+$wed_groom$+", is waiting for the bride to retrieve the ring."; - break; - } - switch ($wed_bride_progress) { - case 0: - mes "The bride has not registered yet."; - break; - case 1: - mes "The bride, "+$wed_bride$+", has yet to confirm the groom."; - break; - case 2: - mes "The bride, "+$wed_bride$+", is waiting for the groom's acceptance."; - break; - case 3: - mes "The bride, "+$wed_bride$+", has yet to retrieve the ring."; - break; - case 4: - mes "The bride, "+$wed_bride$+", is waiting for the groom to retrieve the ring."; - break; - case 5: - mes "We are just waiting for both "+$wed_groom$+" and "+$wed_bride$+" to be together to marry them."; - break; - case 6: - mes $wed_groom$+" and "+$wed_bride$+"'s wedding ceremony is already well on it's way."; - break; - } - mes "Enjoy the remaining of the wedding."; - close; -} - -OnInit: - if ($wed_groom_progress + $wed_bride_progress == 1) - initnpctimer; - end; - -OnTimer60000: - //Registration failed. - if ($wed_bride_progress == 1) - set $@msg$, $wed_bride$; - else - set $@msg$, $wed_groom$; - - npctalk "Registration timed out. Is it that noone wants to marry "+$@msg$+"..?"; - emotion e_hmm; - - set $wed_groom$,""; - $wed_groom_sex = -1; - set $wed_bride$,""; - $wed_bride_sex = -1; - set $wed_groom_progress,0; - set $wed_bride_progress,0; - set $wed_progress,0; - stopnpctimer; - end; - -//Subfunction SF_TryRegister (int bride) -function SF_TryRegister { - set @bride, getarg(0); - set @type$, "groom"; - if (@bride) - set @type$, "bride"; - - mes "["+@name$+"]"; - mes "Before registering as "+@type$+", let me check if you meet all the requirements..."; - next; - if (Upper == 2) { - mes "["+@name$+"]"; - mes "Oh dear, you are too young to be thinking of marriage!"; - emotion e_gasp; - close; - } - if (Sex == SEX_MALE) - set @item, 7170; - else - set @item, 2338; - - if (getequipid(2) != @item) { - mes "["+@name$+"]"; - mes "You should be wearing a "+getitemname(@item)+" if you want to get married."; - close; - } - if (Sex == SEX_FEMALE && $@wed_veil && getequipid(1) != 2206) { - mes "["+@name$+"]"; - mes "Where is your "+getitemname(2206)+"? It's a necessary complement to your dress."; - close; - } - if ($@wed_ring && countitem($@wed_ring) < 1) { - mes "["+@name$+"]"; - mes "Where's the ring? You need a "+getitemname($@wed_ring)+" for the ring exchange, dear."; - close; - } - if (@bride) - set @cost, $@wed_bride_reg; - else - set @cost, $@wed_groom_reg; - - if (Zeny < @cost) { - mes "["+@name$+"]"; - mes "I am sorry, but you don't have enough to pay for the registration fee."; - mes "Come back once you have collected "+@cost+"z."; - close; - } - Zeny -= @cost; - sc_start SC_WEDDING,3600000,1; //Start Wedding Effect (SC_WEDDING) - if (@bride) { - set $wed_bride_progress,1; - set $wed_bride$,strcharinfo(PC_NAME); - $wed_bride_sex = Sex; - if ($@wedding_effect == 1) //Store account id for effect. - set $wedding_effect_id, getcharid(CHAR_ID_ACCOUNT); - } else { - set $wed_groom_progress,1; - set $wed_groom$,strcharinfo(PC_NAME); - $wed_groom_sex = Sex; - if ($@wedding_effect == 2) //Store account id for effect. - set $wedding_effect_id, getcharid(CHAR_ID_ACCOUNT); - } -} - -//Explain wedding principles... -function SF_Principles { - mes "["+@name$+"]"; - mes "Weddings are performed by our local Priest with the intent of promoting love and peace among the loving couples."; - next; - mes "["+@name$+"]"; - mes "The proposal must be done with prudence and courtesy, once the wedlocks have been made, they cannot be undone."; - next; - mes "["+@name$+"]"; - mes "The two who have been joined by marriage must remain together forever until the day death do them apart."; - next; - mes "["+@name$+"]"; - if ($@wed_allow == 1) - mes "Altough normally only males can wed females (and viceversa), our local Priest is more open-minded than that and he permits all pairings regardless of gender."; - else - mes "Males may only wed with females, and females only with males, the church will not consent any other kind of partnerships."; - next; - mes "["+@name$+"]"; - mes "If there is a significant other with whom you want to spend the rest of your life with, then don't be shy to propose."; - next; - mes "["+@name$+"]"; - mes "I wish for many blessings upon couples who wish to live happily ever after..."; - next; -} - -//Explain the wedding procedure... -function SF_Procedure { - mes "["+@name$+"]"; - mes "First of all, both groom and bride must register with me."; - next; - if ($@wed_allow == 1) { - mes "["+@name$+"]"; - mes "The registration requirements are:"; - mes "- Males must be wearing a "+getitemname(7170)+"."; - mes "- Females must be wearing a "+getitemname(2338)+"."; - if ($@wed_veil) mes "- Females must also wear a "+getitemname(2206)+"."; - if ($@wed_ring) mes "- Both must own a "+getitemname($@wed_ring)+" each."; - if ($@wed_groom_reg > 0) mes "- The registration fee for the groom is "+$@wed_groom_reg+"z."; - if ($@wed_bride_reg > 0) mes "- The registration fee for the bride is "+$@wed_bride_reg+"z."; - } else { - mes "["+@name$+"]"; - mes "The registration requirements for the groom are:"; - mes "- To be wearing a "+getitemname(7170)+"."; - if ($@wed_ring) mes "- To own a "+getitemname($@wed_ring)+"."; - if ($@wed_groom_reg > 0) mes "- Pay a Registration fee of "+$@wed_groom_reg+"z."; - next; - mes "["+@name$+"]"; - mes "The registration requirements for the bride are:"; - mes "- To be wearing a "+getitemname(2338)+"."; - if ($@wed_veil) mes "- To be wearing a "+getitemname(2206)+"."; - if ($@wed_ring) mes "- To own a "+getitemname($@wed_ring)+"."; - if ($@wed_bride_reg > 0) mes "- Pay a Registration fee of "+$@wed_bride_reg+"z."; - } - next; - mes "["+@name$+"]"; - mes "I shouldn't need to mention this, but adopted kids are too young to get married."; - mes "Both groom and bride must register within a minute of each other, or the wedding will be cancelled. So be sure you both are ready and meet the registration requirements beforehand."; - next; - mes "["+@name$+"]"; - mes "After both have registered with me, you have to go pledge your vows to the Priest and accept your registered partner. If for some reason you reject your registered partner, the wedding will be cancelled..."; - next; - mes "["+@name$+"]"; - mes "If you both accept each other, then the wedding has been decided and the ceremony will begin."; - if ($@wed_ring) { - mes "But first, you need to get your rings ready."; - next; - mes "["+@name$+"]"; - mes "Talk to the priest once more, and he will exchange your "+getitemname($@wed_ring)+" for a wedding ring. After you both have claimed the rings for exchanging, the ceremony will begin."; - } - next; - mes "["+@name$+"]"; - mes "If there are various couples who desire to marry, you should keep in order, for the Priest can only handle one wedding at a time."; - next; -} -} - -prt_church,94,99,4 script Sister Lisa 1_F_PRIEST,{ - set @name$,"Lisa"; - - function SF_DivorceEnd; - function SF_InProgress; - - if ($@divorce_progress==1) { - goto SF_InProgress; - end; - } - - do { - mes "["+@name$+"]"; - mes "Divorcing can be such a sad event..."; - if (getpartnerid() == 0) { - mes "People shouldn't make shallow vows to others, don't you think?"; - close; - } - mes "You wouldn't want to divorce, by any chance?"; - next; - set @menu, select( - "I am happy as I am, thank you.", - "Explain the divorce.", - "Explain Requirements.", - "I want to divorce." - ); - switch (@menu) { - case 1: - mes "["+@name$+"]"; - mes "Good to hear."; - close; - case 2: //Explanation - mes "["+@name$+"]"; - mes "Even though it is said that once the wedlocks have been made they cannot be undone, sometimes it is necessary to undo our mistakes from the past.."; - next; - mes "["+@name$+"]"; - mes "It is sad, but true. If you happen to have married the wrong person, it is possible to divorce, rather than spend the rest of your life with the wrong one."; - next; - break; - case 3: //Requirement - mes "["+@name$+"]"; - mes "In order to file for divorce, I need you both to agree to it."; - mes "After you file in for divorce, your spouse has one minute to agree, and then you will both be divorced."; - if ($@wed_divorce_fee > 0) mes "The fee is of "+$@wed_divorce_fee+"z and is paid by the person who confirms the divorce, so plan ahead of time how you will divide the costs."; - next; - break; - case 4: //Divorce - mes "["+@name$+"]"; - mes "You should not regret the choices you've made in life."; - mes "Are you positively sure about getting divorced?"; - next; - if (select("Wait... I need to think about it.","Absolutely") != 2) { - mes "["+@name$+"]"; - mes "You should think this through."; - close; - } - mes "["+@name$+"]"; - set $@divorcee,getpartnerid(); - set $@divorcer$,strcharinfo(PC_NAME); - set $@divorce_progress,1; - initnpctimer; - mes "Very well, get your partner to confirm, and I will collect the fee for filing the divorce then."; - close; - } - } while (@menu > 1); -end; - -function SF_InProgress { - if (strcharinfo(PC_NAME) == $@divorcer$) { - mes "["+@name$+"]"; - mes "...I am still waiting for your partner to confirm the divorce procedure."; - close; - } - if (getcharid(CHAR_ID_CHAR) != $@divorcee) { - mes "["+@name$+"]"; - mes "I am in the progress of divorcing "+$@divorcer$+"."; - mes "Do you know who the spouse is?"; - close; - } - //Confirm... - mes "["+@name$+"]"; - mes $@divorcer$+" has asked to divorce you. If you accept, and have the fee of "+$@wed_divorce_fee+"z at hand, I will proceed to divorce you two."; - mes "So, should I proceed with the divorce?"; - next; - if (select("I don't want to divorce....","Yes, we have agreed to this.")!=2) { - mes "["+@name$+"]"; - mes "I hope you can work things out."; - emotion e_pat; - goto SF_DivorceEnd; - close; - } - if (Zeny < $@wed_divorce_fee) { - mes "["+@name$+"]"; - mes "Well, I can't file your divorce because you don't have enough for the fee. Get your partner to lend you some?"; - close; - } - if (!(divorce())) { - mes "["+@name$+"]"; - mes "Where has "+$@divorcer$+" gone to? I can't divorce you unless you both are here..."; - emotion e_swt2; - close; - } - Zeny -= $@wed_divorce_fee; - announce $@divorcer$+" has just divorced "+strcharinfo(PC_NAME)+"...", 8; - mes "["+@name$+"]"; - mes "Your divorce has been filed. You are no longer wed."; - emotion e_sob; - goto SF_DivorceEnd; - close; -} - -function SF_DivorceEnd { - stopnpctimer; - set $@divorce_progress,0; - set $@divorcee,0; - set $@divorcer$,""; -} - -OnTimer60000: - npctalk "Divorce confirmation time's is up. Where did "+$@divorcer$+"'s spouse go..."; - emotion e_what; - SF_DivorceEnd(); - end; -} diff --git a/npc/custom/etc/monster_arena.txt b/npc/custom/etc/monster_arena.txt deleted file mode 100644 index 8420cd544..000000000 --- a/npc/custom/etc/monster_arena.txt +++ /dev/null @@ -1,892 +0,0 @@ -//===== Hercules Script ====================================== -//= Monster vs Monster -//===== By: ================================================== -//= acky -//===== Current Version: ===================================== -//= 1.2 -//===== Description: ========================================= -//= Players train monsters and battle other players. -//= Experience can be earned and monsters upgraded. -//===== Additional Comments: ================================= -//= To add monsters, add lines after the commends labled: -//= '// #. ---Change to Add Monsters--- //' -//= There are 6 steps to add a monster at the moment. -//= Added Duel Room -//= --------------------------------------------------------- -//= Script is messy! Be careful! -//= 1.1.2 Changed all gmcommand to atcommand as Poki#3 suggested. [Vicious] -//= 1.1.3 Removed Duplicate Names [Silent] -//= 1.1.4 Fixed SummonPad syntax. [KarLaeda] -//= 1.1.5 Some cleanup & optimization [KarLaeda] -//= 1.2 Replaced effect numerics with constants. [Samuray22] -//============================================================ - -// Entrance // -prontera,158,193,6 script Monster Arena 4_F_GON,{ - mes "[Monster Arena]"; - mes "Would you like to enter the Monster Arena?"; - mes "Currently ^FF0000" + getmapusers("gon_test") + "^000000 players"; - mes "^FF0000Note:^000000 Pecos, Falcons and Carts will be lost on entry."; -L_Menu: - next; - menu "Enter",-,"Information",L_Info,"Cancel",L_Exit; - - set @marena,1; - savepoint "gon_test",56,99; - set @battle,0; - warp "gon_test",57,99; - close; - -L_Exit: - mes "[Monster Arena]"; - mes "Come back any time."; - close; - -L_Info: - mes "[Monster Arena]"; - mes "You must purchase a pet from the Monster Tamer to start fighting."; - next; - mes "[Monster Arena]"; - mes "Then talk to the Usher and tell him you would like to compete."; - next; - mes "[Monster Arena]"; - mes "Talk to the referee to summon your monster."; - mes "Once your monster has fought, you must talk to the Usher again and choose to spectate."; - next; - mes "[Monster Arena]"; - mes "Talk to the Monster Trainer, he will ask you to heal your pet."; - next; - mes "[Monster Arena]"; - mes "To do this, click the Nurse repearedly until it says your pet is healed."; - next; - mes "[Monster Arena]"; - mes "The more monsters you kill, the more exp you get and the quicker you can upgrade."; - next; - mes "[Monster Arena]"; - mes "The stronger your monster is, the longer it will take to summon again."; - - goto L_Menu; -} - -// Monster Summon Function // -function script monstersummon { - // 1. ---Change to Add Monsters--- // - if (#monster == 10) summon strcharinfo(PC_NAME) + "'s Poring",1002, "OnPoringKilled"; - if (#monster == 20) summon strcharinfo(PC_NAME) + "'s Fabre",1007, "OnFaberKilled"; - if (#monster == 30) summon strcharinfo(PC_NAME) + "'s Lunatic",1063, "OnLunaticKilled"; - if (#monster == 31) summon strcharinfo(PC_NAME) + "'s Drops",1113, "OnDropsKilled"; - if (#monster == 32) summon strcharinfo(PC_NAME) + "'s Picky",1049, "OnPickyKilled"; - if (#monster == 40) summon strcharinfo(PC_NAME) + "'s ChonChon",1011, "OnChonChonKilled"; - if (#monster == 41) summon strcharinfo(PC_NAME) + "'s Super Picky",1050, "OnSPickyKilled"; - if (#monster == 42) summon strcharinfo(PC_NAME) + "'s Willow",1010, "OnWillowKilled"; - if (#monster == 50) summon strcharinfo(PC_NAME) + "'s Roda Frog",1012, "OnRodaKilled"; - if (#monster == 51) summon strcharinfo(PC_NAME) + "'s Condor",1009, "OnCondorKilled"; - if (#monster == 60) summon strcharinfo(PC_NAME) + "'s Thief Bug Larva",1051, "OnThiefKilled"; - if (#monster == 70) summon strcharinfo(PC_NAME) + "'s Savage Babe",1167, "OnSavageKilled"; - if (#monster == 80) summon strcharinfo(PC_NAME) + "'s Familiar",1005, "OnFamiliarKilled"; - if (#monster == 81) summon strcharinfo(PC_NAME) + "'s Hornet",1004, "OnHornetKilled"; - if (#monster == 90) summon strcharinfo(PC_NAME) + "'s Desert Wolf Puppy",1107, "OnPuppyKilled"; - if (#monster == 91) summon strcharinfo(PC_NAME) + "'s Spore",1014, "OnSporeKilled"; - if (#monster == 92) summon strcharinfo(PC_NAME) + "'s Rocker",1052, "OnRockerKilled"; - if (#monster == 100) summon strcharinfo(PC_NAME) + "'s Skeleton",1076, "OnSkeletonKilled"; - if (#monster == 101) summon strcharinfo(PC_NAME) + "'s Plankton",1161, "OnPlanktonKilled"; - if (#monster == 102) summon strcharinfo(PC_NAME) + "'s Antonio",1247, "OnAntonioKilled"; - if (#monster == 103) summon strcharinfo(PC_NAME) + "'s Thief Bug Female",1053, "OnThiefFemaleKilled"; - close; -} - -// Referee // -- script monsterreferee 1_M_PUBMASTER,{ - if (@fighting == 1) end; - if (@battle == 1) goto L_Start; - end; - -L_Start: - mes "[Referee]"; - mes "Your monster is:"; - - // 2. ---Change to Add Monsters--- // - if (#monster == 10) mes "Poring"; - if (#monster == 20) mes "Faber"; - if (#monster == 30) mes "Lunatic"; - if (#monster == 31) mes "Drops"; - if (#monster == 32) mes "Picky"; - if (#monster == 40) mes "ChonChon"; - if (#monster == 41) mes "Super Picky"; - if (#monster == 42) mes "Willow"; - if (#monster == 50) mes "Roda Frog"; - if (#monster == 51) mes "Condor"; - if (#monster == 60) mes "Thief Bug Larva"; - if (#monster == 70) mes "Savage Babe"; - if (#monster == 80) mes "Familiar"; - if (#monster == 81) mes "Hornet"; - if (#monster == 90) mes "Desert Wolf Puppy"; - if (#monster == 91) mes "Spore"; - if (#monster == 92) mes "Rocker"; - if (#monster == 100) mes "Skeleton"; - if (#monster == 101) mes "Plankton"; - if (#monster == 102) mes "Antonio"; - if (#monster == 103) mes "Thief Bug Female"; - - mes "Would you like to fight?"; - next; - menu "Fight",-,"Cancel",L_Exit; - - set @fighting,1; - set #heal,1; - set @special,rand (100); // Chance of special summon - if (@special == 1) goto Special1; - if (@special == 2) goto Special2; - if (@special == 3) goto Special3; - if (@special == 4) goto Special4; - if (@special == 5) goto Special5; - - callfunc "monstersummon"; - close; - - // Special Summons // -Special1: - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - summon strcharinfo(PC_NAME) + "'s Assault Team",1002, "OnPoringKilled"; - close; - -Special2: - summon strcharinfo(PC_NAME) + "'s Mastering",1090, "OnSpecialKilled"; - close; - -Special3: - summon strcharinfo(PC_NAME) + "'s Eclipse",1093, "OnSpecialKilled"; - close; - -Special4: - summon strcharinfo(PC_NAME) + "'s Dragon Fly",1091, "OnSpecialKilled"; - close; - -Special5: - summon strcharinfo(PC_NAME) + "'s Toad",1089, "OnSpecialKilled"; - close; - -L_Exit: - mes "[Referee]"; - mes "Alright"; - close; -} -gon_test,56,91,6 duplicate(monsterreferee) Referee#01 1_M_PUBMASTER - -// Usher // -gon_test,58,94,6 script Usher 4_M_04,{ - set @marena,1; - mes "[Usher]"; - mes "What would you like to do?"; - next; - menu "^0000FFSpectate",L_Spec,"^FF0000Compete^000000",-,"Return to Town",L_Exit,"Cancel",L_Cancel; - - if (#monster == 0) goto L_NoMon; - if (#heal == 1) goto L_Heal; - - if (#monster < 40) goto L_Low; - if (#monster > 30 && #monster < 80) goto L_Med; - if (#monster > 70) goto L_High; - -L_Low: - menu "Level 1-3",L_1to3,"^FF0000All Levels",L_High; - close; - -L_Med: - menu "Level 4-7",L_4to6,"^FF0000All Levels",L_High; - close; - -L_High: - close2; - savepoint "gon_test",56,99; - set @battle,1; - atcommand strcharinfo(PC_NAME) + "@option 64 0 64"; - warp "gon_test",72,87; - end; - -L_4to6: - close2; - savepoint "gon_test",56,99; - set @battle,1; - atcommand strcharinfo(PC_NAME) + "@option 64 0 64"; - warp "gon_test",57,86; - end; - -L_1to3: - close2; - savepoint "gon_test",56,99; - set @battle,1; - atcommand strcharinfo(PC_NAME) + "@option 64 0 64"; - warp "gon_test",43,87; - end; - -L_Exit: - close2; - savepoint "prontera",149,186; - set @battle,0; - atcommand strcharinfo(PC_NAME) + "@option 0 0 0"; - warp "prontera",149,186; - end; - -L_Spec: - close2; - savepoint "gon_test",56,99; - set @battle,0; - atcommand strcharinfo(PC_NAME) + "@option 0 0 0"; - warp "gon_test",57,99; - end; - -L_NoMon: - mes "[Usher]"; - mes "You haven't got a monster, you can only spectate."; - close; - -L_Heal: - mes "[Usher]"; - mes "You have to heal your monster before you can fight again."; - close; - -L_Cancel: - close; -} - -// Monster Trainer // -gon_test,52,103,6 script Monster Trainer 4_M_BARBER,{ - mes "[Monster Trainer]"; - if (#monster != 0) goto L_Mon; - - mes "Welcome to the monster arena, would you like to start training?"; - next; - menu "Yes",-,"No",L_Exit; - - mes "[Monster Trainer]"; - mes "New trainers may only start with Porings."; - mes "They cost 1000z, Would you like to buy one?"; - next; - menu "Yes",-,"No",L_Exit; - - if (Zeny < 1000) goto L_NoZeny; - Zeny -= 1000; - set #monster,10; - mes "[Monster Trainer]"; - mes "Congratulations!"; - mes "When your Poring earns enough experience, talk to me to upgrade."; - close; - -L_Mon: - mes "Welcome back, " + strcharinfo(PC_NAME) + "."; - mes "Your monster has " + #monpoints + " exp points."; - next; - if (@fighting == 1) goto L_Heal; - menu "Upgrade Monster",L_Upgrade,"Sell Experience",L_Sell,"^FF0000Abandon Monster^000000",L_Abandon,"Cancel",L_Exit; - -L_Abandon: - mes "[Monster Trainer]"; - mes "Are you sure you want to abandon your monster?"; - next; - menu "Yes",-,"No",L_Exit; - set #monster,0; - set #monpoints,0; - mes "[Monster Trainer]"; - mes "Monster released into the wild."; - close; - -L_Sell: - mes "[Monster Trainer]"; - mes "You can sell your monster's experience for 100z each."; - next; - menu "Sell",-,"Cancel",L_Exit; - mes "[Monster Trainer]"; - mes "You have: ^FF0000" + #monpoints + "^000000 experience points"; - mes "How many would you like to sell?"; - next; - input @sellexp; - if (@sellexp > #monpoints) goto L_NoExp; - set #monpoints,#monpoints-@sellexp; - set @sellearn,100*@sellexp; // Price of exp - Zeny += @sellearn; - mes "[Monster Trainer]"; - mes "You earned ^0000FF" + @sellearn + "^000000z."; - close; - -L_NoExp: - mes "[Monster Trainer]"; - mes "You do not have enough experience."; - next; - goto L_Exit; - - // Monster Upgrades // -L_Upgrade: - mes "[Monster Trainer]"; - // 3. ---Change to Add Monsters - May not be required--- // - if (#monster > 1 && #monster < 20) mes "You need 10 exp points to upgrade your monster."; - if (#monster > 19 && #monster < 30) mes "You need 20 exp points to upgrade your monster."; - if (#monster > 29 && #monster < 40) mes "You need 40 exp points to upgrade your monster."; - if (#monster > 39 && #monster < 50) mes "You need 80 exp points to upgrade your monster."; - if (#monster > 49 && #monster < 60) mes "You need 160 exp points to upgrade your monster."; - if (#monster > 59 && #monster < 70) mes "You need 320 exp points to upgrade your monster."; - if (#monster > 69 && #monster < 80) mes "You need 640 exp points to upgrade your monster."; - if (#monster > 79 && #monster < 90) mes "You need 1280 exp points to upgrade your monster."; - if (#monster > 89 && #monster < 100) mes "You need 2560 exp points to upgrade your monster."; - next; - menu "Continue",-,"Cancel",L_Exit; - mes "[Monster Trainer]"; - - // 4. ---Change to Add Monsters - May not be required--- // - if (#monster > 1 && #monster < 20 && #monpoints > 9) goto L_Up1; - if (#monster > 19 && #monster < 30 && #monpoints > 19) goto L_Up2; - if (#monster > 29 && #monster < 40 && #monpoints > 39) goto L_Up3; - if (#monster > 39 && #monster < 50 && #monpoints > 79) goto L_Up4; - if (#monster > 49 && #monster < 60 && #monpoints > 159) goto L_Up5; - if (#monster > 59 && #monster < 70 && #monpoints > 319) goto L_Up6; - if (#monster > 69 && #monster < 80 && #monpoints > 639) goto L_Up7; - if (#monster > 79 && #monster < 90 && #monpoints > 1279) goto L_Up8; - if (#monster > 89 && #monster < 100 && #monpoints > 2559) goto L_Up9; - - mes "Unable to upgrade."; - close; - - // 5. ---Change to Add Monsters--- // -L_Up1: - set #monster,20; - set #monpoints,#monpoints-10; - mes "Upgraded to Fabre!"; - close; - -L_Up2: - mes "Which monster would you like to upgrade to?"; - next; - menu "Lunatic",U_Lunatic,"Drops",U_Drops,"Picky",U_Picky; - -U_Drops: - set #monster,31; - set #monpoints,#monpoints-20; - mes "[Monster Trainer]"; - mes "Upgraded to Drops!"; - close; - -U_Picky: - set #monster,32; - set #monpoints,#monpoints-20; - mes "[Monster Trainer]"; - mes "Upgraded to Picky!"; - close; - -U_Lunatic: - set #monster,30; - set #monpoints,#monpoints-20; - mes "[Monster Trainer]"; - mes "Upgraded to Lunatic!"; - close; - -L_Up3: - mes "Which monster would you like to upgrade to?"; - next; - menu "ChonChon",U_ChonChon,"Super Picky",U_SPicky,"Willow",U_Willow; - -U_ChonChon: - set #monster,40; - set #monpoints,#monpoints-40; - mes "[Monster Trainer]"; - mes "Upgraded to ChonChon!"; - close; - -U_SPicky: - set #monster,41; - set #monpoints,#monpoints-40; - mes "[Monster Trainer]"; - mes "Upgraded to Super Picky!"; - close; - -U_Willow: - set #monster,42; - set #monpoints,#monpoints-40; - mes "[Monster Trainer]"; - mes "Upgraded to Willow!"; - close; - -L_Up4: - mes "Which monster would you like to upgrade to?"; - next; - menu "Condor",U_Condor,"Roda Frog",U_Roda; - -U_Condor: - set #monster,51; - set #monpoints,#monpoints-80; - mes "[Monster Trainer]"; - mes "Upgraded to Condor!"; - close; - -U_Roda: - set #monster,50; - set #monpoints,#monpoints-80; - mes "[Monster Trainer]"; - mes "Upgraded to Roda Frog!"; - close; - -L_Up5: - set #monster,60; - set #monpoints,#monpoints-160; - mes "Upgraded to Thief Bug Larva!"; - close; - -L_Up6: - set #monster,70; - set #monpoints,#monpoints-320; - mes "Upgraded to Savage Babe!"; - close; - -L_Up7: - mes "Which monster would you like to upgrade to?"; - next; - menu "Familiar",U_Familiar,"Hornet",U_Hornet; - -U_Hornet: - set #monster,81; - set #monpoints,#monpoints-640; - mes "[Monster Trainer]"; - mes "Upgraded to Hornet!"; - close; - -U_Familiar: - set #monster,80; - set #monpoints,#monpoints-640; - mes "[Monster Trainer]"; - mes "Upgraded to Familiar!"; - close; - -L_Up8: - mes "[Monster Trainer]"; - mes "Which monster would you like to upgrade to?"; - next; - menu "Desert Wolf Puppy",U_Puppy,"Spore",U_Spore,"Rocker",U_Rocker; - -U_Spore: - set #monster,91; - set #monpoints,#monpoints-1280; - mes "[Monster Trainer]"; - mes "Upgraded to Spore!"; - close; - -U_Rocker: - set #monster,92; - set #monpoints,#monpoints-1280; - mes "[Monster Trainer]"; - mes "Upgraded to Rocker!"; - close; - -U_Puppy: - set #monster,90; - set #monpoints,#monpoints-1280; - mes "[Monster Trainer]"; - mes "Upgraded to Desert Wolf Puppy!"; - close; - -L_Up9: - mes "Which monster would you like to upgrade to?"; - next; - menu "Skeleton",U_Skeleton,"Antonio",U_Antonio,"Plankton",U_Plankton,"Thief Bug Female",U_ThiefFemale; - -U_Plankton: - set #monster,101; - set #monpoints,#monpoints-2560; - mes "[Monster Trainer]"; - mes "Upgraded to Plankton!"; - close; - -U_Antonio: - set #monster,102; - set #monpoints,#monpoints-2560; - mes "[Monster Trainer]"; - mes "Upgraded to Antonio!"; - close; - -U_ThiefFemale: - set #monster,103; - set #monpoints,#monpoints-2560; - mes "[Monster Trainer]"; - mes "Upgraded to Thief Bug Female!"; - close; - -U_Skeleton: - set #monster,100; - set #monpoints,#monpoints-2560; - mes "[Monster Trainer]"; - mes "Upgraded to Skeleton!"; - close; - -L_NoZeny: - mes "[Monster Trainer]"; - mes "You don't have enough zeny!"; - close; - -L_Exit: - mes "[Monster Trainer]"; - mes "Goodbye."; - close; - -L_Heal: - mes "[Monster Trainer]"; - mes "Your monster needs to heal."; - mes "It will heal faster if you click the nurse faster."; - set #heal,1; - close; -} - -// Kill Trigger // -// 6/Final. ---Change to Add Monsters--- // -gon_test,56,91,6 script OnPoringKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+1; - announce "You killed a Poring - Gained 1 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnFaberKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+2; - announce "You killed a Faber - Gained 2 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnLunaticKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+4; - announce "You killed a Lunatic - Gained 4 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnDropsKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+4; - announce "You killed a Drops - Gained 4 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnPickyKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+4; - announce "You killed a Picky - Gained 4 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnChonChonKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+8; - announce "You killed a ChonChon - Gained 8 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnSPickyKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+8; - announce "You killed a Super Picky - Gained 8 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnWillowKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+8; - announce "You killed a Willow - Gained 8 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnRodaKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+16; - announce "You killed a Roda Frog - Gained 16 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnCondorKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+16; - announce "You killed a Condor - Gained 16 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnThiefKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+32; - announce "You killed a Theif Bug Larva - Gained 32 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnSavageKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+64; - announce "You killed a Savage Babe - Gained 64 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnFamiliarKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+128; - announce "You killed a Familiar - Gained 128 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnHornetKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+128; - announce "You killed a Hornet - Gained 128 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnPuppyKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+256; - announce "You killed a Desert Wolf Puppy - Gained 256 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnRockerKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+256; - announce "You killed a Rocker - Gained 256 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnSporeKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+256; - announce "You killed a Spore - Gained 256 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnSkeletonKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+512; - announce "You killed a Skeleton - Gained 512 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnPlanktonKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+512; - announce "You killed a Plankton - Gained 512 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnAntonioKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+512; - announce "You killed an Antonio - Gained 512 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnThiefFemaleKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+512; - announce "You killed a Thief Bug Female - Gained 512 exp",19; - callfunc "duelkill"; -} - -gon_test,56,91,6 script OnSpecialKilled FAKE_NPC,{ - if (@marena == 0) callfunc "illegalkill"; - set #monpoints,#monpoints+512; - announce "You killed a Special Monster - Gained 1024 exp",19; - callfunc "duelkill"; -} - -function script duelkill { - if (strcharinfo(PC_NAME) == $@duelist1$ || strcharinfo(PC_NAME) == $@duelist2$) goto L_Heal; - end; -L_Heal: - announce strcharinfo(PC_NAME) + " won the Duel",1; - set @fighting,0; - set #heal,0; - set @healing,0; - end; -} - -function script illegalkill { - announce "Illegal Kill by " + strcharinfo(PC_NAME) + " Detected",1; - Sp = 0; - unitkill getcharid(CHAR_ID_ACCOUNT); - end; -} - -// Healer // -gon_test,55,103,6 script Nurse 4_F_01,{ - if (@battle == 1 || #heal == 0) goto L_NoHeal; - if (#heal == 1 && @healing < 100) goto L_Heal; //Total healing required - set @fighting,0; - set #heal,0; - set @healing,0; - specialeffect(EF_VALLENTINE2, AREA, playerattached()); - announce "Your monster has healed.",19; - end; - -L_Heal: - set @healrate,140 / #monster; //Rate of heal per click - set @healing,@healing + @healrate; - end; - -L_NoHeal: - announce "Your monster does not need healing yet.",19; - end; -} - -// Warps players // -gon_test,57,86,5 script Summon Pad 1::SummonPad HIDDEN_NPC,2,2,{ - end; -OnTouch: - set @marena,1; - warp "gon_test",57,99; -} -gon_test,43,87,5 duplicate(SummonPad) Summon Pad 2 HIDDEN_NPC,2,2 -gon_test,72,87,5 duplicate(SummonPad) Summon Pad 3 HIDDEN_NPC,2,2 - -// Skill Disabler // -gon_test mapflag noskill - -// Duel Arena // -gon_test,58,103,5 script Duel Master#01 4_F_03,{ - if ($@duelist1$ == "") set @duel,0; - if ($@monster1 == "") set @duel,0; - set @marena,1; - if (#monster == 0) goto L_NoMon; - mes "[Duel Master]"; - if ($@duel == 1) goto L_Waiting; - if ($@duel == 2) goto L_Dueling; - - mes "There are currently no players dueling."; - next; - menu "Join",-,"Spectate",L_Spec,"Cancel",L_Exit; - - // Player 1 Enters Duel Area // - if (#heal == 1) goto L_NeedHeal; - if ($@duel == 1) goto L_Duel2; - set $@duel,1; - if (#monster > 1 && #monster < 20) set $@monster1,1; - if (#monster > 19 && #monster < 30) set $@monster1,2; - if (#monster > 29 && #monster < 40) set $@monster1,3; - if (#monster > 39 && #monster < 50) set $@monster1,4; - if (#monster > 49 && #monster < 60) set $@monster1,5; - if (#monster > 59 && #monster < 70) set $@monster1,6; - if (#monster > 69 && #monster < 80) set $@monster1,7; - if (#monster > 79 && #monster < 90) set $@monster1,8; - if (#monster > 89 && #monster < 100) set $@monster1,9; - if (#monster > 99 && #monster < 110) set $@monster1,10; - set $@duelist1$,strcharinfo(PC_NAME); - set @battle,1; - announce strcharinfo(PC_NAME) + " [Monster Level: " + $@monster1 + "] is waiting for a duel",1; - atcommand strcharinfo(PC_NAME) + "@option 64 0 64"; - warp "gon_test",49,5; - close; - -L_Waiting: - mes "^0000FF " + $@duelist1$ + "^000000 [Monster Level: ^FF0000" + $@monster1 + "^000000]"; - mes "Is waiting for an opponent"; - next; - menu "Join",-,"Spectate",L_Spec,"Cancel",L_Exit; - - // Player 2 Enters Duel Area // - if (#heal == 1) goto L_NeedHeal; -L_Duel2: - if ($@duel == 2) goto L_Spec; - set $@duel,2; - if (#monster > 1 && #monster < 20) set $@monster2,1; - if (#monster > 19 && #monster < 30) set $@monster2,2; - if (#monster > 29 && #monster < 40) set $@monster2,3; - if (#monster > 39 && #monster < 50) set $@monster2,4; - if (#monster > 49 && #monster < 60) set $@monster2,5; - if (#monster > 59 && #monster < 70) set $@monster2,6; - if (#monster > 69 && #monster < 80) set $@monster2,7; - if (#monster > 79 && #monster < 90) set $@monster2,8; - if (#monster > 89 && #monster < 100) set $@monster2,9; - if (#monster > 99 && #monster < 110) set $@monster2,10; - set $@duelist2$,strcharinfo(PC_NAME); - set @battle,1; - announce strcharinfo(PC_NAME) + " [Monster Level: " + $@monster2 + "] has joined the duel",1; - atcommand strcharinfo(PC_NAME) + "@option 64 0 64"; - warp "gon_test",49,5; - close; - -L_Dueling: - mes "^0000FF" + $@duelist1$ + "^000000 [Monster Level: ^0000FF" + $@monster1 + "^000000]"; - mes " VS."; - mes "^FF0000" + $@duelist2$ + "^000000 [Monster Level: ^FF0000" + $@monster2 + "^000000]"; - next; - menu "Spectate",L_Spec,"Cancel",L_Exit; - -L_Spec: - set @battle,0; - atcommand strcharinfo(PC_NAME) + "@option 64 0 64"; - warp "gon_test",49,5; - close; - -L_Exit: - mes "[Duel Master]"; - mes "Goodbye."; - close; - -L_NoMon: - mes "[Duel Master]"; - mes "You haven't got a monster, you can't participate."; - close; - -L_NeedHeal: - mes "[Duel Master]"; - mes "You need to heal before you can join."; - close; -} - -// Duel Exit // -gon_test,42,8,5 script Duel Master#02 4_F_03,{ - mes "[Duel Master]"; - mes "Would you like to return?"; - menu "Yes",L_Leave,"No",-; - mes "Alright"; - close; - -L_Leave: - if ($@duelist1$ == strcharinfo(PC_NAME)) goto L_Leave1; - if ($@duelist2$ == strcharinfo(PC_NAME)) goto L_Leave2; - -L_Leave3: - atcommand strcharinfo(PC_NAME) + "@option 0 0 0"; - set @battle,0; - warp "gon_test",57,99; - close; - -L_Leave1: - set $@duelist1$,$@duelist2$; - set $@monster1,$@monster2; - set $@duel,$@duel-1; - announce strcharinfo(PC_NAME) + " stopped dueling",1; - goto L_Leave3; - -L_Leave2: - set $@duelist2$,""; - set $@monster2,0; - set $@duel,$@duel-1; - announce strcharinfo(PC_NAME) + " stopped dueling",1; - goto L_Leave3; -} - -gon_test,49,5,5 duplicate(SummonPad) Summon Pad 4 HIDDEN_NPC,2,2 -gon_test,55,8,6 duplicate(monsterreferee) Referee#02 1_M_PUBMASTER diff --git a/npc/custom/etc/morroc_raceway.txt b/npc/custom/etc/morroc_raceway.txt deleted file mode 100644 index 745b1d779..000000000 --- a/npc/custom/etc/morroc_raceway.txt +++ /dev/null @@ -1,238 +0,0 @@ -//===== Hercules Script ====================================== -//= Morroc Raceway -//===== By: ================================================== -//= acky -//===== Current Version: ===================================== -//= 1.3 -//===== Description: ========================================= -//= Lets players race around Morroc (pvp_y_1-5) -//===== Additional Comments: ================================= -//= If there are more than 3 players, at least 3 people -//= must finish before a new race can be started. -//= -//= If there are less than 3 players, at least 1 person -//= must finish before a new race can be started. -//= -//= Removed permanent global variables -//= 1.2 Removed Duplicates [Silent] -//= 1.3 Replaced effect numerics with constants. [Samuray22] -//============================================================ - -//Warps you into race way -morocc,166,105,6 script Race Girl#01 4_F_KAFRA2,{ - mes "[Race Girl]"; - mes "Would you like to visit ^0000FFMorroc Raceway^000000?"; - next; - if (select("Yes", "No") != 1) { - mes "[Race Girl]"; - mes "Alright, talk to me again when you want to go."; - close; - } - warp "pvp_y_1-5",165,256; - close; -} - -//Warps you out of raceway -pvp_y_1-5,169,265,5 script Race Girl#02 4_F_KAFRA2,{ - mes "[Race Girl]"; - mes "Welcome to Morroc Raceway!"; - next; - switch (select("Information", "Leave", "Cancel")) { - case 1: - mes "[Race Girl]"; - mes "Someone must click on the Starter NPC to start the race."; - next; - mes "[Race Girl]"; - mes "Once the race is started, run around Morroc anti-clockwise."; - next; - mes "[Race Girl]"; - mes "You must reach all the checkpoints - No cheating!"; - close; - case 2: - warp "morocc",165,101; - end; - case 3: - mes "[Race Girl]"; - mes "Come again soon!"; - close; - } -} - -//Counts down and starts race -pvp_y_1-5,145,269,5 script Starter 4_M_JOB_KNIGHT1,{ - if ($@race != 0) goto L_Started; - if ($@counting != 0) goto L_Started; - if ($@racecount == 1) goto L_Started; -L_Menu: - mes "[Race Starter]"; - mes "Please stay on the Eastern side of me."; - if (select("Start Race", "Cancel") != 1) - close; - set $@counting,1; - mes "Counting down..."; - addtimer 1000, "Starter::OnCount1000"; - addtimer 2000, "Starter::OnCount2000"; - addtimer 3000, "Starter::OnCount3000"; - addtimer 4000, "Starter::OnCount4000"; - announce strcharinfo(PC_NAME) + "Started a countdown",1; - announce "Get ready to race!",1; - close; - -OnCount1000: - announce "[3]",1; - end; -OnCount2000: - announce "[2]",1; - end; -OnCount3000: - announce "[1]",1; - end; -OnCount4000: - emotion 27; - specialeffect EF_CHIMTO; - announce "[GO!]",1; - set $@race,1; - set $@position,0; - set $@counting,0; - set $@raceid,rand(100000,999999); - end; - -L_Started: - if ((getmapusers("pvp_y_1-5") < 3) && ($@position > 0)) goto L_Menu; - if ($@position > 2) goto L_Menu; - mes "[Starter]"; - mes "Race in progress"; - close; - -OnInit: - set $@race,0; - set $@position,0; - set $@racecount,0; - end; -} - -//Checkpoint 1 -pvp_y_1-5,144,262,5 script Check Point 1 HIDDEN_NPC,0,5,{ - end; -OnTouch: - if (@raceid != $@raceid) goto L_Started; - if (@race == 6) goto L_Finished; - if ($@race == 1) goto L_Started; - mes "The race has not started, please move back."; - close; -L_Started: - set @race,1; - set @raceid,$@raceid; - end; -L_Finished: - mes "You have already completed the race."; - close; -} - -//Checkpoint 2 -pvp_y_1-5,73,247,5 script Check Point 2 HIDDEN_NPC,6,6,{ - end; -OnTouch: - if (@race != 1) goto L_Miss; - set @race,2; - announce "[" + strcharinfo(PC_NAME) +"] has reached Checkpoint [1]",1; - end; -L_Miss: - mes "You have missed a Checkpoint. Please go back."; - close; -} - -//Checkpoint 3 -pvp_y_1-5,77,44,5 script Check Point 3 HIDDEN_NPC,6,6,{ - end; -OnTouch: - if (@race != 2) goto L_Miss; - set @race,3; - announce "[" + strcharinfo(PC_NAME) +"] has reached Checkpoint [2]",1; - end; -L_Miss: - mes "You have missed a Checkpoint. Please go back."; - close; -} - -//Checkpoint 3 -pvp_y_1-5,249,60,5 script Check Point 4 HIDDEN_NPC,6,6,{ - end; -OnTouch: - if (@race != 3) goto L_Miss; - set @race,4; - announce "[" + strcharinfo(PC_NAME) +"] has reached Checkpoint [3]",1; - end; -L_Miss: - mes "You have missed a Checkpoint. Please go back."; - close; -} - -//Checkpoint 4 -pvp_y_1-5,255,256,5 script Check Point 5 HIDDEN_NPC,6,6,{ - end; -OnTouch: - if (@race != 4) goto L_Miss; - set @race,5; - announce "[" + strcharinfo(PC_NAME) +"] has reached Checkpoint [4]",1; - end; -L_Miss: - mes "You have missed a Checkpoint. Please go back."; - close; -} - -//Finish Line -pvp_y_1-5,174,244,5 script Finish Line HIDDEN_NPC,6,6,{ - end; -OnTouch: - if (@raceid != $@raceid) goto L_WrongRace; - if (@race != 5) goto L_Miss; - set @race,6; - set $@position,$@position+1; - announce "[" + strcharinfo(PC_NAME) +"] has reached The Finish line! [Position: " + $@position + "]",1; - end; -L_Miss: - mes "You have missed a Checkpoint. Please go back."; - close; -L_WrongRace: - mes "You are not in this race."; - close; -} - -//Check Point Marker Flags -pvp_y_1-5,144,267,4 script Check Point 1#01 GUILD_FLAG,{ - end; -} -pvp_y_1-5,144,257,4 script Check Point 1#02 GUILD_FLAG,{ - end; -} -pvp_y_1-5,70,252,3 script Check Point 2#01 GUILD_FLAG,{ - end; -} -pvp_y_1-5,77,243,3 script Check Point 2#02 GUILD_FLAG,{ - end; -} -pvp_y_1-5,81,48,1 script Check Point 3#01 GUILD_FLAG,{ - end; -} -pvp_y_1-5,72,40,1 script Check Point 3#02 GUILD_FLAG,{ - end; -} -pvp_y_1-5,244,65,7 script Check Point 4#01 GUILD_FLAG,{ - end; -} -pvp_y_1-5,252,57,7 script Check Point 4#02 GUILD_FLAG,{ - end; -} -pvp_y_1-5,259,260,5 script Check Point 5#01 GUILD_FLAG,{ - end; -} -pvp_y_1-5,251,252,5 script Check Point 5#02 GUILD_FLAG,{ - end; -} -pvp_y_1-5,174,249,4 script Finish Line#01 GUILD_FLAG,{ - end; -} -pvp_y_1-5,174,238,4 script Finish Line#02 GUILD_FLAG,{ - end; -} diff --git a/npc/custom/etc/mvp_arena.txt b/npc/custom/etc/mvp_arena.txt deleted file mode 100644 index a86e64aae..000000000 --- a/npc/custom/etc/mvp_arena.txt +++ /dev/null @@ -1,283 +0,0 @@ -//===== Hercules Script ====================================== -//= MVP Arena -//===== By: ================================================== -//= Darkchild -//===== Current Version: ===================================== -//= 1.4 -//===== Description: ========================================= -//= Rooms containing 16 different MVPs -//===== Additional Comments: ================================= -//= 1.0 - First version of script -//= 1.1 - Optimised The MVP arena [massdriller] -//= 1.2 - NPC in prontera [Silent] -//= 1.3 - Removed Duplicates -//= 1.4 - Optimized, text edited [Euphy] -//============================================================ - -// Entrance -prontera,154,197,3 script MVP Warper 8_M_JPNMASTER,{ - mes "[ ^0065DFMVP Warper^000000 ]"; - mes "Would you like to enter"; - mes "the MVP Arena?"; - if (select("Yes!","No thanks.") == 2) close; - warp "quiz_00",50,24; - close; -} - -// Information -quiz_00,49,31,4 script MVP Arena Guide 4_M_TWTEAMAN,{ - mes "[ ^0065DFMVP Arena Guide^000000 ]"; - mes "Welcome and behold this sacred place. Here you will find out if you truly have what it takes to call yourself a warrior."; - next; - switch(select("Information","Heal me!","Return to Prontera","Cancel")) { - case 1: - mes "[ ^0065DFMVP Arena Guide^000000 ]"; - mes "There are four Keepers, and each can spawn four different MVPs."; - mes "There are eight rooms per Keeper, and sixteen MVPs in total."; - close; - case 2: - specialeffect(EF_HEAL2, AREA, playerattached()); - percentheal 100,100; - close; - case 3: - warp "prontera",156,179; - close; - case 4: - close; - } -} - -// Keepers -function script Keeper { - mes "[ ^0065DF"+strnpcinfo(NPC_NAME_VISIBLE)+"^000000 ]"; - mes "Which arena would you"; - mes "like to enter?"; - set .@menu$,""; - for(set .@i,1; .@i<9; set .@i,.@i+1) - set .@menu$, .@menu$+"Arena "+.@i+" ["+getmapusers("pvp_n_"+.@i+"-"+getarg(0))+"/20]:"; - set .@i, select(.@menu$); - if (getmapusers("pvp_n_"+.@i+"-"+getarg(0))>19) { - mes "[ ^0065DF"+strnpcinfo(NPC_NAME_VISIBLE)+"^000000 ]"; - mes "Sorry, this arena is full!"; - close; - } - warp "pvp_n_"+.@i+"-"+getarg(0),102,102; - close; -} -quiz_00,56,31,4 script Alpha MVP 4_F_TWGIRL,{ callfunc "Keeper",2; } -quiz_00,58,31,4 script Beta MVP 4_F_TWMIDWOMAN,{ callfunc "Keeper",3; } -quiz_00,60,31,4 script Theta MVP 4_M_TWBOY,{ callfunc "Keeper",4; } -quiz_00,62,31,4 script Epsilon MVP 4_M_TWMIDMAN,{ callfunc "Keeper",5; } - -// Protectors -function script Protector { - mes "[ ^0065DFMVP-Protector^000000 ]"; - switch(select( ((getarg(0)=="")?"":"Harder Monsters"), "Heal", "Exit")) { - case 1: - warp getarg(0),102,102; - end; - case 2: - specialeffect(EF_HEAL2, AREA, playerattached()); - percentheal 100,100; - close; - case 3: - warp "prontera",156,179; - end; - } -} -pvp_n_1-2,100,100,4 script MVP-Protector#01 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_2-2"; } -pvp_n_2-2,100,100,4 script MVP-Protector#02 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_3-2"; } -pvp_n_3-2,100,100,4 script MVP-Protector#03 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_4-2"; } -pvp_n_4-2,100,100,4 script MVP-Protector#04 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_5-2"; } -pvp_n_5-2,100,100,4 script MVP-Protector#05 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_6-2"; } -pvp_n_6-2,100,100,4 script MVP-Protector#06 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_7-2"; } -pvp_n_7-2,100,100,4 script MVP-Protector#07 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_8-2"; } -pvp_n_8-2,100,100,4 script MVP-Protector#08 4_F_JOB_HUNTER,{ callfunc "Protector",""; } -pvp_n_1-3,100,100,4 script MVP-Protector#09 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_2-3"; } -pvp_n_2-3,100,100,4 script MVP-Protector#10 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_3-3"; } -pvp_n_3-3,100,100,4 script MVP-Protector#11 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_4-3"; } -pvp_n_4-3,100,100,4 script MVP-Protector#12 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_5-3"; } -pvp_n_5-3,100,100,4 script MVP-Protector#13 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_6-3"; } -pvp_n_6-3,100,100,4 script MVP-Protector#14 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_7-3"; } -pvp_n_7-3,100,100,4 script MVP-Protector#15 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_8-3"; } -pvp_n_8-3,100,100,4 script MVP-Protector#16 4_F_JOB_HUNTER,{ callfunc "Protector",""; } -pvp_n_1-4,100,100,4 script MVP-Protector#17 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_2-4"; } -pvp_n_2-4,100,100,4 script MVP-Protector#18 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_3-4"; } -pvp_n_3-4,100,100,4 script MVP-Protector#19 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_4-4"; } -pvp_n_4-4,100,100,4 script MVP-Protector#20 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_5-4"; } -pvp_n_5-4,100,100,4 script MVP-Protector#21 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_6-4"; } -pvp_n_6-4,100,100,4 script MVP-Protector#22 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_7-4"; } -pvp_n_7-4,100,100,4 script MVP-Protector#23 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_8-4"; } -pvp_n_8-4,100,100,4 script MVP-Protector#24 4_F_JOB_HUNTER,{ callfunc "Protector",""; } -pvp_n_1-5,100,100,4 script MVP-Protector#25 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_2-5"; } -pvp_n_2-5,100,100,4 script MVP-Protector#26 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_3-5"; } -pvp_n_3-5,100,100,4 script MVP-Protector#27 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_4-5"; } -pvp_n_4-5,100,100,4 script MVP-Protector#28 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_5-5"; } -pvp_n_5-5,100,100,4 script MVP-Protector#29 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_6-5"; } -pvp_n_6-5,100,100,4 script MVP-Protector#30 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_7-5"; } -pvp_n_7-5,100,100,4 script MVP-Protector#31 4_F_JOB_HUNTER,{ callfunc "Protector","pvp_n_8-5"; } -pvp_n_8-5,100,100,4 script MVP-Protector#32 4_F_JOB_HUNTER,{ callfunc "Protector",""; } - -// Alpha -pvp_n_1-2,0,0,0,0 monster Eddga 1115,3,60000,66000 -pvp_n_1-2,0,0,0,0 monster Mistress 1059,1,60000,66000 -pvp_n_2-2,0,0,0,0 monster Mistress 1059,3,60000,66000 -pvp_n_2-2,0,0,0,0 monster Moonlight 1150,1,60000,66000 -pvp_n_3-2,0,0,0,0 monster Mistress 1059,1,60000,66000 -pvp_n_3-2,0,0,0,0 monster Moonlight 1150,2,60000,66000 -pvp_n_3-2,0,0,0,0 monster Maya 1147,1,60000,66000 -pvp_n_4-2,0,0,0,0 monster Eddga 1115,1,60000,66000 -pvp_n_4-2,0,0,0,0 monster Mistress 1059,1,60000,66000 -pvp_n_4-2,0,0,0,0 monster Moonlight 1150,1,60000,66000 -pvp_n_4-2,0,0,0,0 monster Maya 1147,1,60000,66000 -pvp_n_5-2,0,0,0,0 monster Eddga 1115,1,60000,66000 -pvp_n_5-2,0,0,0,0 monster Mistress 1059,2,60000,66000 -pvp_n_5-2,0,0,0,0 monster Moonlight 1150,1,60000,66000 -pvp_n_5-2,0,0,0,0 monster Maya 1147,2,60000,66000 -pvp_n_6-2,0,0,0,0 monster Eddga 1115,2,60000,66000 -pvp_n_6-2,0,0,0,0 monster Mistress 1059,3,60000,66000 -pvp_n_6-2,0,0,0,0 monster Moonlight 1150,1,60000,66000 -pvp_n_6-2,0,0,0,0 monster Maya 1147,2,60000,66000 -pvp_n_7-2,0,0,0,0 monster Eddga 1115,3,60000,66000 -pvp_n_7-2,0,0,0,0 monster Mistress 1059,3,60000,66000 -pvp_n_7-2,0,0,0,0 monster Moonlight 1150,2,60000,66000 -pvp_n_7-2,0,0,0,0 monster Maya 1147,2,60000,66000 -pvp_n_8-2,0,0,0,0 monster Eddga 1115,3,60000,66000 -pvp_n_8-2,0,0,0,0 monster Mistress 1059,3,60000,66000 -pvp_n_8-2,0,0,0,0 monster Moonlight 1150,3,60000,66000 -pvp_n_8-2,0,0,0,0 monster Maya 1147,3,60000,66000 - -// Beta -pvp_n_1-3,0,0,0,0 monster Phreeoni 1159,3,60000,66000 -pvp_n_1-3,0,0,0,0 monster Turtle General 1312,1,60000,66000 -pvp_n_2-3,0,0,0,0 monster Phreeoni 1159,2,60000,66000 -pvp_n_2-3,0,0,0,0 monster Turtle General 1312,1,60000,66000 -pvp_n_2-3,0,0,0,0 monster Orc Hero 1087,1,60000,66000 -pvp_n_3-3,0,0,0,0 monster Phreeoni 1159,1,60000,66000 -pvp_n_3-3,0,0,0,0 monster Turtle General 1312,1,60000,66000 -pvp_n_3-3,0,0,0,0 monster Orc Hero 1087,1,60000,66000 -pvp_n_3-3,0,0,0,0 monster Orc Lord 1190,1,60000,66000 -pvp_n_4-3,0,0,0,0 monster Phreeoni 1159,2,60000,66000 -pvp_n_4-3,0,0,0,0 monster Turtle General 1312,1,60000,66000 -pvp_n_4-3,0,0,0,0 monster Orc Hero 1087,1,60000,66000 -pvp_n_4-3,0,0,0,0 monster Orc Lord 1190,1,60000,66000 -pvp_n_5-3,0,0,0,0 monster Phreeoni 1159,1,60000,66000 -pvp_n_5-3,0,0,0,0 monster Turtle General 1312,2,60000,66000 -pvp_n_5-3,0,0,0,0 monster Orc Hero 1087,2,60000,66000 -pvp_n_5-3,0,0,0,0 monster Orc Lord 1190,1,60000,66000 -pvp_n_6-3,0,0,0,0 monster Phreeoni 1159,2,60000,66000 -pvp_n_6-3,0,0,0,0 monster Turtle General 1312,1,60000,66000 -pvp_n_6-3,0,0,0,0 monster Orc Hero 1087,2,60000,66000 -pvp_n_6-3,0,0,0,0 monster Orc Lord 1190,2,60000,66000 -pvp_n_7-3,0,0,0,0 monster Phreeoni 1159,3,60000,66000 -pvp_n_7-3,0,0,0,0 monster Turtle General 1312,1,60000,66000 -pvp_n_7-3,0,0,0,0 monster Orc Hero 1087,2,60000,66000 -pvp_n_7-3,0,0,0,0 monster Orc Lord 1190,3,60000,66000 -pvp_n_8-3,0,0,0,0 monster Phreeoni 1159,3,60000,66000 -pvp_n_8-3,0,0,0,0 monster Turtle General 1312,3,60000,66000 -pvp_n_8-3,0,0,0,0 monster Orc Hero 1087,3,60000,66000 -pvp_n_8-3,0,0,0,0 monster Orc Lord 1190,3,60000,66000 - -// Theta -pvp_n_1-4,0,0,0,0 monster Drake 1112,3,60000,66000 -pvp_n_1-4,0,0,0,0 monster Osiris 1038,1,60000,66000 -pvp_n_2-4,0,0,0,0 monster Drake 1112,2,60000,66000 -pvp_n_2-4,0,0,0,0 monster Osiris 1038,1,60000,66000 -pvp_n_2-4,0,0,0,0 monster Doppelganger 1046,1,60000,66000 -pvp_n_3-4,0,0,0,0 monster Drake 1112,1,60000,66000 -pvp_n_3-4,0,0,0,0 monster Osiris 1038,1,60000,66000 -pvp_n_3-4,0,0,0,0 monster Doppelganger 1046,1,60000,66000 -pvp_n_3-4,0,0,0,0 monster Lord of Death 1373,1,60000,66000 -pvp_n_4-4,0,0,0,0 monster Drake 1112,2,60000,66000 -pvp_n_4-4,0,0,0,0 monster Osiris 1038,1,60000,66000 -pvp_n_4-4,0,0,0,0 monster Doppelganger 1046,2,60000,66000 -pvp_n_4-4,0,0,0,0 monster Lord of Death 1373,1,60000,66000 -pvp_n_5-4,0,0,0,0 monster Drake 1112,3,60000,66000 -pvp_n_5-4,0,0,0,0 monster Osiris 1038,2,60000,66000 -pvp_n_5-4,0,0,0,0 monster Doppelganger 1046,2,60000,66000 -pvp_n_5-4,0,0,0,0 monster Lord of Death 1373,1,60000,66000 -pvp_n_6-4,0,0,0,0 monster Drake 1112,3,60000,66000 -pvp_n_6-4,0,0,0,0 monster Osiris 1038,2,60000,66000 -pvp_n_6-4,0,0,0,0 monster Doppelganger 1046,2,60000,66000 -pvp_n_6-4,0,0,0,0 monster Lord of Death 1373,2,60000,66000 -pvp_n_7-4,0,0,0,0 monster Drake 1112,3,60000,66000 -pvp_n_7-4,0,0,0,0 monster Osiris 1038,2,60000,66000 -pvp_n_7-4,0,0,0,0 monster Doppelganger 1046,3,60000,66000 -pvp_n_7-4,0,0,0,0 monster Lord of Death 1373,2,60000,66000 -pvp_n_8-4,0,0,0,0 monster Drake 1112,3,60000,66000 -pvp_n_8-4,0,0,0,0 monster Osiris 1038,3,60000,66000 -pvp_n_8-4,0,0,0,0 monster Doppelganger 1046,3,60000,66000 -pvp_n_8-4,0,0,0,0 monster Lord of Death 1373,3,60000,66000 - -// Epsilon -pvp_n_1-5,0,0,0,0 monster Incantation Samurai 1492,3,60000,66000 -pvp_n_1-5,0,0,0,0 monster Pharoh 1157,1,60000,66000 -pvp_n_2-5,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000 -pvp_n_2-5,0,0,0,0 monster Pharoh 1157,1,60000,66000 -pvp_n_2-5,0,0,0,0 monster Dark Lord 1272,1,60000,66000 -pvp_n_3-5,0,0,0,0 monster Incantation Samurai 1492,1,60000,66000 -pvp_n_3-5,0,0,0,0 monster Pharoh 1157,1,60000,66000 -pvp_n_3-5,0,0,0,0 monster Dark Lord 1272,1,60000,66000 -pvp_n_3-5,0,0,0,0 monster Baphomet 1039,1,60000,66000 -pvp_n_4-5,0,0,0,0 monster Incantation Samurai 1492,3,60000,66000 -pvp_n_4-5,0,0,0,0 monster Pharoh 1157,1,60000,66000 -pvp_n_4-5,0,0,0,0 monster Dark Lord 1272,1,60000,66000 -pvp_n_4-5,0,0,0,0 monster Baphomet 1039,1,60000,66000 -pvp_n_5-5,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000 -pvp_n_5-5,0,0,0,0 monster Pharoh 1157,2,60000,66000 -pvp_n_5-5,0,0,0,0 monster Dark Lord 1272,2,60000,66000 -pvp_n_5-5,0,0,0,0 monster Baphomet 1039,1,60000,66000 -pvp_n_6-5,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000 -pvp_n_6-5,0,0,0,0 monster Pharoh 1157,2,60000,66000 -pvp_n_6-5,0,0,0,0 monster Dark Lord 1272,2,60000,66000 -pvp_n_6-5,0,0,0,0 monster Baphomet 1039,1,60000,66000 -pvp_n_7-5,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000 -pvp_n_7-5,0,0,0,0 monster Pharoh 1157,2,60000,66000 -pvp_n_7-5,0,0,0,0 monster Dark Lord 1272,2,60000,66000 -pvp_n_7-5,0,0,0,0 monster Baphomet 1039,2,60000,66000 -pvp_n_8-5,0,0,0,0 monster Incantation Samurai 1492,3,60000,66000 -pvp_n_8-5,0,0,0,0 monster Pharoh 1157,2,60000,66000 -pvp_n_8-5,0,0,0,0 monster Dark Lord 1272,2,60000,66000 -pvp_n_8-5,0,0,0,0 monster Baphomet 1039,2,60000,66000 - -// Mapflags -pvp_n_1-1 mapflag pvp_nightmaredrop off -pvp_n_2-1 mapflag pvp_nightmaredrop off -pvp_n_3-1 mapflag pvp_nightmaredrop off -pvp_n_4-1 mapflag pvp_nightmaredrop off -pvp_n_5-1 mapflag pvp_nightmaredrop off -pvp_n_6-1 mapflag pvp_nightmaredrop off -pvp_n_7-1 mapflag pvp_nightmaredrop off -pvp_n_8-1 mapflag pvp_nightmaredrop off -pvp_n_1-2 mapflag pvp_nightmaredrop off -pvp_n_2-2 mapflag pvp_nightmaredrop off -pvp_n_3-2 mapflag pvp_nightmaredrop off -pvp_n_4-2 mapflag pvp_nightmaredrop off -pvp_n_5-2 mapflag pvp_nightmaredrop off -pvp_n_6-2 mapflag pvp_nightmaredrop off -pvp_n_7-2 mapflag pvp_nightmaredrop off -pvp_n_8-2 mapflag pvp_nightmaredrop off -pvp_n_1-3 mapflag pvp_nightmaredrop off -pvp_n_2-3 mapflag pvp_nightmaredrop off -pvp_n_3-3 mapflag pvp_nightmaredrop off -pvp_n_4-3 mapflag pvp_nightmaredrop off -pvp_n_5-3 mapflag pvp_nightmaredrop off -pvp_n_6-3 mapflag pvp_nightmaredrop off -pvp_n_7-3 mapflag pvp_nightmaredrop off -pvp_n_8-3 mapflag pvp_nightmaredrop off -pvp_n_1-4 mapflag pvp_nightmaredrop off -pvp_n_2-4 mapflag pvp_nightmaredrop off -pvp_n_3-4 mapflag pvp_nightmaredrop off -pvp_n_4-4 mapflag pvp_nightmaredrop off -pvp_n_5-4 mapflag pvp_nightmaredrop off -pvp_n_6-4 mapflag pvp_nightmaredrop off -pvp_n_7-4 mapflag pvp_nightmaredrop off -pvp_n_8-4 mapflag pvp_nightmaredrop off -pvp_n_1-5 mapflag pvp_nightmaredrop off -pvp_n_2-5 mapflag pvp_nightmaredrop off -pvp_n_3-5 mapflag pvp_nightmaredrop off -pvp_n_4-5 mapflag pvp_nightmaredrop off -pvp_n_5-5 mapflag pvp_nightmaredrop off -pvp_n_6-5 mapflag pvp_nightmaredrop off -pvp_n_7-5 mapflag pvp_nightmaredrop off -pvp_n_8-5 mapflag pvp_nightmaredrop off diff --git a/npc/custom/etc/penal_servitude.txt b/npc/custom/etc/penal_servitude.txt deleted file mode 100644 index 5d1067d05..000000000 --- a/npc/custom/etc/penal_servitude.txt +++ /dev/null @@ -1,189 +0,0 @@ -//===== Hercules Script ====================================== -//= Penal Servitude -//===== By: ================================================== -//= Lupus -//===== Current Version: ===================================== -//= 1.2 -//===== Description: ========================================= -//= A simple Penal Servitude Script. -//= It could cheer up your prisoners a bit. -//===== Additional Comments: ================================= -// This script uses CHEQUES of the 2nd KAFRA_BANK.TXT -// var PRISON - it counts number of your imprisonments. -// 1.1 English translation -// 1.2 Stricted the conditions a bit -//============================================================ - -sec_pri,36,58,1 script Chief Warder 8W_SOLDIER,{ - mes "[Saddeus]"; - emotion 1; - if (Sex == SEX_MALE) - mes "Mr. Prisoner #"+BaseLevel+JobLevel+","; - else - mes "Ms. Prisoner #"+BaseLevel+JobLevel+","; - mes "what's the noise over there?"; - next; - menu "Let me free, I'll pay!",-, "Let me to work off my freedom!",M_Q1, "Nothing",M_NO_THANKS; - -M_PAY: - mes "[Saddeus]"; - set @MUSTPAY,(PRISON+1)*1000000; - if (@MUSTPAY<1000000) set @MUSTPAY,1000000; - if (@MUSTPAY>100000000) set @MUSTPAY,100000000; - if (PRISON==1) mes "I can't remember you. Is it your 1st time?"; - if (PRISON>1) mes "You again? Sombody hasn't grown wiser from the very first visit..."; - mes "OK, we could release you for ^FF0000"+@MUSTPAY+"z^000000."; - next; - menu "I pay cash!",M_PAYCASH,"Do you accept cheques?",M_PAYBANK,"I've changed my mind.",-; - - mes "[Saddeus]"; - mes "You've got some time to think about..."; - close; - -M_PAYCASH: - if (@MUSTPAY>Zeny) goto L_NOCASH; - Zeny -= @MUSTPAY; - mes "[Saddeus]"; - mes "OK, sing here and there."; - goto L_RELEASE; - -L_NOCASH: - mes "[Saddeus]"; - mes "What's this? It's not enough!"; - close; - -M_PAYBANK: - if (@MUSTPAY>#kafrabank) goto L_NOBANK; - set #kafrabank,#kafrabank-@MUSTPAY; - mes "[Saddeus]"; - mes "OK, sign your cheque. And put down your name in my book."; - goto L_RELEASE; - -L_NOBANK: - mes "[Saddeus]"; - if (#kafrabank==0) mes "Your case says nothing about your bank accounts."; - if (#kafrabank!=0) mes "Alas, there's your bank account info... ^FF0000"+#kafrabank+"z^000000... in the case. It's not enough."; - mes "Stop your silly games now!"; - close; - -L_RELEASE: - set PRISON,PRISON+1; - next; - mes "[Saddeus]"; - mes "You are free now!"; - next; - savepoint "izlude",105,112; - warp "izlude",105,112; - close; - -M_Q1: - mes "[Saddeus]"; - mes "Our stocks are short of toadstools. Remember your morning's skilly? What about some work at our sponsored mushroom farm?"; - next; - menu "OK, I'll work off!",-, "I love this prison!",M_NO_THANKS; - - mes "[Saddeus]"; - if(checkcart() || checkfalcon() || checkmount()){ - emotion e_hmm; - mes "I'm sorry, you should release your Cart, Mount or Falcon!"; - close; - } - mes "Talk to our overseer, Oliver."; - next; - - nude; - - set @rw,rand(1,4); - if (@rw==2) goto L_W2; - if (@rw==3) goto L_W3; - if (@rw==4) goto L_W4; - -L_W1: - savepoint "sec_in02",179,76; - warp "sec_in02",179,76; - close; - -L_W2: - savepoint "sec_in02",139,32; - warp "sec_in02",139,32; - close; - -L_W3: - savepoint "sec_in02",100,28; - warp "sec_in02",100,28; - close; - -L_W4: - savepoint "sec_in02",107,75; - warp "sec_in02",107,75; - close; - -M_NO_THANKS: - mes "[Saddeus]"; - if (rand(2)) mes "Is today X-Mas time, huh?"; - mes "Now shut up and back off!"; - if (rand(2)) emotion 23; - close; -} - -sec_in02,137,57,1 script Overseer 4_M_PAY_SOLDIER,{ - mes "[Oliver]"; - - delitem Fabre_Card,countitem(Fabre_Card);//Items: Fabre_Card, - delitem Chonchon_Card,countitem(Chonchon_Card);//Items: Chonchon_Card, - delitem Spore_Card,countitem(Spore_Card);//Items: Spore_Card, - delitem Poison_Spore_Card,countitem(Poison_Spore_Card);//Items: Poison_Spore_Card, - - if (PRISON_Q <= 0 ) goto L_GET_Q; - - mes "I want you to gather ^FF0000"+PRISON_Q+" Orange Net Mushroom^000000."; - if ( countitem(Mushroom_Of_Thief_1)<PRISON_Q ) close;//Items: Orange_Net_Mushroom, - mes "OK... hand me all the shrooms..."; - mes "Let me see... "+countitem(Mushroom_Of_Thief_1)+" of almost eadible ones...";//Items: Orange_Net_Mushroom, - mes "And "+countitem(Mushroom_Of_Thief_2)+" useless deadly ones.";//Items: Orange_Gooey_Mushroom_, - next; - mes "[Oliver]"; - mes "Thank you. You are free!"; - set PRISON_Q,0; - delitem Mushroom_Of_Thief_1,countitem(Mushroom_Of_Thief_1);//Items: Orange_Net_Mushroom, - delitem Mushroom_Of_Thief_2,countitem(Mushroom_Of_Thief_2);//Items: Orange_Gooey_Mushroom_, - next; - savepoint "izlude",105,112; - warp "izlude",105,112; - close; - -L_GET_Q: - set PRISON,PRISON+1; - if (PRISON > 1) mes "Hmm... You've been here already... Well-well..."; - - if ( countitem(Mushroom_Of_Thief_1) || countitem(Mushroom_Of_Thief_2) ) mes "Drop these mushrooms!! They are poisonous!";//Items: Orange_Net_Mushroom, Orange_Gooey_Mushroom_, - delitem Mushroom_Of_Thief_1,countitem(Mushroom_Of_Thief_1);//Items: Orange_Net_Mushroom, - delitem Mushroom_Of_Thief_2,countitem(Mushroom_Of_Thief_2);//Items: Orange_Gooey_Mushroom_, - - set PRISON_Q, PRISON*3 + BaseLevel/3; - set PRISON_Q, PRISON_Q * (readparam(bAspd)/55 + 1); - set PRISON_Q, PRISON_Q+rand(50,60); - mes "OK, you must bring me ^FF0000"+PRISON_Q+"^000000 edible ^FF0000Orange Net Mushroom^000000 toadstoo.. shrooms."; - if(readparam(bAspd)>=100) mes "You're a fast fella! You'll have to get more shrooms, then."; - if (rand(10)<4) mes "And you may eat the deadly ones for breakfast."; - close; -} - -sec_in02 mapflag nomemo -sec_in02 mapflag nosave SavePoint -sec_in02 mapflag noteleport -sec_in02 mapflag nobranch -sec_in02 mapflag nowarp -sec_in02 mapflag nowarpto -sec_in02 mapflag noexp -sec_in02 mapflag noskill -//sec_in02 mapflag pvp -//sec_in02 mapflag pvp_noparty -//sec_in02 mapflag gvg -sec_in02 mapflag pvp_nightmaredrop random,all,300 - -sec_in02,138,55,100,100 monster Toadstool 1182,30,10000,10000,1 -sec_in02,138,55,100,100 monster Fabre 1184,10,20000,20000 -sec_in02,138,55,100,100 monster Chonchon 1183,11,20000,20000 -sec_in02,138,55,100,100 monster Spore 1014,12,20000,20000 -sec_in02,138,55,100,100 monster Poison Spore 1077,3,20000,20000 diff --git a/npc/custom/etc/quest_warper.txt b/npc/custom/etc/quest_warper.txt deleted file mode 100644 index 35b863e9d..000000000 --- a/npc/custom/etc/quest_warper.txt +++ /dev/null @@ -1,1687 +0,0 @@ -//===== Hercules Script ====================================== -//= Quest Warper Script -//===== By: ================================================== -//= DZeroX, Darkchild, Neouni -//===== Current Version: ===================================== -//= 2.3 -//===== Description: ========================================= -//= Warper that works only after locations are unlocked. -//===== Additional Comments: ================================= -//= 1.0 - NPCs created -//= 1.1 - Add Dungeons by sturm -//= 1.2 - Add All char in account unlocked by ace_killer -//= 1.3 - Add new 7 towns and 7 dungeons by escoteiro -// - Correct bug jawaii town by escoteiro -// - Remove some excessive warpras by escoteiro -//= 1.4 - Rewrite of the Warpa system [Neouni] -// - Corrected some bugs caused by autoconverting the old script -//= 1.4a - Rewrite of menu to be custom for each player [Neouni] -// - Dungeon listing rewrite -// - Town listing rewrite -// - GameMaster can Customise Main menu -//= 1.4b - Pricing round [Neouni] -// - GM menu added for pricing -// - Town Warp pricing tags added -// - Dungeon Warp pricing tags added -//= 1.5 - storage functions pricing [Neouni] -// - storage pricing added -// - kafra points setting added -// - kafra storage code security added -// - Healing scripts pricing added -// - Heal Part script added -//= 1.6 - Dungeon warp [Neouni] (beta only) -// - added option to add a extra fee for going down deeper into dungeon -// partly by rebuilding the dungeon warping into variable menu's -//= 1.6a - alot of fixes for beta release [Neouni] (public release) -// - fixed syntax problems -// - fixed missing pyramid gats in @DGat$ array -// - removed the culver level 5 that didn't exist -//= 1.7 - Readability of Dungeon menu building increased [Neouni] -// - Thanatos Tower & Louyang Dungeon added -//= 1.8 - changed around unlock variables [Neouni] -// - Moved warp variables to mark what you have unlocked to an binary array in login based permanent variable -// (warp variables are saved in login database, so all charservers have these unlocked) -// - Town Warp unlock array max 21/(unknown max) items used instead of max account #variables 32 ! -// - Dungeon Warp unlock array 28/(unknown max) items used instead of max account #variables 32 ! -// - (max login ##variables = 16, i used 3) -// - old variables are cleared on next save -// - Extra Variable clear added for every character, just in case (request by Terces) -//= 1.8a - Show amount of users on map [Neouni] -//= 1.8b - Small typo fixed in stampcard script [Neouni] -//= 1.9 - Making it more edit friendly [Neouni] -// - Made Dungeon warp arrays more readable & editable (QWS_Darray) -// - Made town warp arrays more readable & editable (QWS_Tarray) -//= 2.0 - Special Warp menu added [Neouni] -// - when all towns and dungeons are collected a new option on the main menu will show -// - it will only show when you setup the mapname of the warp ! -//= 2.0a - Dungeon Level Limit & Split dungeon fees -// - Limits dungeon based on Depth, access to special setup menu through the GM-Menu -// - Dungeon fees split up based on Basic , Advanced & Overseas -// - Old Dungeon fee system removed, all dungeon fees now set to 0 -//= 2.0b - Special warpname menu option name bug fixed -//= 2.1 - Updated names to fall within retrictions. [L0ne_W0lf] -//= 2.2 - #kafra_code is now stored as is. [brianluau] -//= 2.3 - Added new town maps, cleanup, and removed pre-1.8 backwards fix. [Euphy] -//================================================================= - -//========================Function & Script======================== - -function script Q_Warpra { - mes "[Warpra]"; - mes "Hello,"; - mes "I can warp you to any town or dungeon, but you need to unlock them first by visiting us."; - mes "What do you need?"; - - if(getarg(0) == 0) callfunc "QWS_MMarray",0; - if(getarg(0) == 1) callfunc "QWS_MMarray",1; - - set @MMenu,select(@Mmenulist$[0],@Mmenulist$[1],@Mmenulist$[2],@Mmenulist$[3],@Mmenulist$[4],@Mmenulist$[5],@Mmenulist$[6],@Mmenulist$[7],@Mmenulist$[8],@Mmenulist$[9],@Mmenulist$[10],@Mmenulist$[11]); - - switch(@Mmenuref[@MMenu-1]+1){ - case 1: goto GM_Menu; - case 2: - warp $QW_SP_WarpMap$, $QW_SP_WarpX, $QW_SP_WarpY; - close2; - debugmes "Please check your special warp menu settings on the Warpra."; - end; - case 3: goto L_town; - case 4: goto L_dungeon; - case 5: goto L_FewWarps; - case 6: goto L_NoUnlock; - case 7: goto L_heal_Full; - case 8: goto L_heal_Part; - case 9: goto L_Storage; - case 10: goto L_GStorage; - case 11: - default: - goto L_End; - } - -//=====================GM-Menu=Functions=========================== - -GM_Menu: - next; - mes "Town warping = "+(($QW_TW_OFF)?"^FF0000 Off":"^00FF00 On")+"^000000"; - mes "Dungeon warping = "+(($QW_DW_OFF)?"^FF0000 Off":"^00FF00 On")+"^000000"; - mes "Dungeon Depth limit is "+(($QW_DL)?"^00FF00 On":"^FF0000 Off")+"^000000"; - mes "If on Dungeon Depth limit is set to ^0000FF"+$QW_DDL+"^000000"; - mes "Show Map Users = "+(($QW_MapUserShow)?"^00FF00 On":"^FF0000 Off")+"^000000"; - - if ($QW_HF) mes "Healing full = ^00FF00 On ^000000"; - if ($QW_HP) mes "Healing partly = ^00FF00 On ^000000"; - if (!$QW_HF && !$QW_HP) mes "Healing = ^FF0000 Off ^000000"; - - mes "Storage = "+(($QW_Stor)?"^00FF00 On":"^FF0000 Off")+"^000000"; - mes "Guild Storage = "+(($QW_GStor)?"^00FF00 On":"^FF0000 Off")+"^000000"; - mes "Kafra points collect = "+(($QW_KPoint)?"^00FF00 On":"^FF0000 Off")+"^000000"; - - switch(select("Town Warping","Dungeon Warping","Dungeon Level Limit","Show Map Users","Healing full","Healing partly","Storage","Guild Storage","Kafra points collect","Set Prices","Special Warp","Exit")) { - case 1: set $QW_TW_OFF,($QW_TW_OFF)?0:1; goto GM_Menu; - case 2: set $QW_DW_OFF,($QW_DW_OFF)?0:1; goto GM_Menu; - case 3: goto DungeonLevelLimit; - case 4: set $QW_MapUserShow,($QW_MapUserShow)?0:1; goto GM_Menu; - case 5: - if ($QW_HF == 0) { - set $QW_HF,1; - set $QW_HP,0; - } - else set $QW_HF,0; - goto GM_Menu; - case 6: - if ($QW_HP == 0) { - set $QW_HP,1; - set $QW_HF,0; - } - else set $QW_HP,0; - goto GM_Menu; - case 7: set $QW_Stor,($QW_Stor)?0:1; goto GM_Menu; - case 8: set $QW_GStor,($QW_GStor)?0:1; goto GM_Menu; - case 9: set $QW_KPoint,($QW_KPoint)?0:1; goto GM_Menu; - case 10: goto Setprice; - case 11: goto SpecialWarpMenu; - default: - close; - end; - } - -//======================GM-Menu=Pricing============================ - -Setprice: - if ($QW_DW_FEE != 0) set $QW_DW_FEE,0; - next; - mes "Scroll through the list to see all the options."; - - mes "Basic - Warps are = "+(($QW_BW_PRICE)?"^00FF00"+$QW_BW_PRICE:"^FF0000Free")+"^000000"; - mes "Advanced - Warps are = "+(($QW_AW_PRICE)?"^00FF00"+$QW_AW_PRICE:"^FF0000Free")+"^000000"; - mes "Overseas - Warps are = "+(($QW_OW_PRICE)?"^00FF00"+$QW_OW_PRICE:"^FF0000Free")+"^000000"; - - mes "Basic Dungeon level warp fee = "+(($QW_BW_FEE)?"^00FF00"+$QW_BW_FEE:"^FF0000NO")+"^000000 zeny per level"; - mes "Advanced Dungeon level warp fee = "+(($QW_AW_FEE)?"^00FF00"+$QW_AW_FEE:"^FF0000NO")+"^000000 zeny per level"; - mes "Overseas Dungeon level warp fee = "+(($QW_OW_FEE)?"^00FF00"+$QW_OW_FEE:"^FF0000NO")+"^000000 zeny per level"; - - mes "Full Healing = "+(($QW_HF_PRICE)?"^00FF00"+$QW_HF_PRICE:"^FF0000Free")+"^000000"; - mes "^FF0000HP ^000000Part Healing = "+(($QW_HP_H_PRICE)?"^00FF00"+$QW_HP_H_PRICE+"^000000 a point":"^FF0000Free^000000"); - mes "^FF0000SP ^000000Part Healing = "+(($QW_HP_S_PRICE)?"^00FF00"+$QW_HP_S_PRICE+"^000000 a point":"^FF0000Free^000000"); - - if ($QW_S_PRICE && $QW_S_PRICE != 60) mes "Storage = ^00FF00 "+$QW_S_PRICE+" ^000000"; - if (!$QW_S_PRICE) mes "Storage = ^FF0000 Free ^000000"; - if ($QW_S_PRICE == 60) mes "Storage = ^0000FF Kafra Mode ^000000"; - mes "Guild Storage = "+(($QW_GS_PRICE)?"^00FF00"+$QW_GS_PRICE:"^FF0000Free")+"^000000"; - - switch(select("Basic - Warps","Advanced - Warps","Overseas - Warps","Basic Dungeon warp fee","Advanced Dungeon warp fee","Overseas Dungeon warp fee","Full Healing","Part Healing","Storage","Guild Storage","Back","Exit")) { - case 1: - next; - mes "Basic - Warps are = "+(($QW_BW_PRICE)?"^00FF00"+$QW_BW_PRICE:"^FF0000Free")+"^000000"; - mes "Basic - Warps are starter towns and related dungeons."; - input $QW_BW_PRICE; - goto Setprice; - case 2: - next; - mes "Advanced - Warps are = "+(($QW_AW_PRICE)?"^00FF00"+$QW_AW_PRICE:"^FF0000Free")+"^000000"; - mes "Advanced - Warps are towns and dungeons on the same island but not close to any starter town."; - input $QW_AW_PRICE; - goto Setprice; - case 3: - next; - mes "Overseas - Warps are = "+(($QW_OW_PRICE)?"^00FF00"+$QW_OW_PRICE:"^FF0000Free")+"^000000"; - mes "Overseas - Warps are towns and dungeons overseas reachable by boat from Alberta."; - input $QW_OW_PRICE; - goto Setprice; - case 4: - next; - mes "Basic Dungeon level warp fee = "+(($QW_BW_FEE)?"^00FF00"+$QW_BW_FEE:"^FF0000NO")+"^000000 zeny per level"; - mes "Basic - Warps are starter town related dungeons."; - mes "Dungeon warp fees are calculated by maps away from entrance of the dungeon times Dungeon warp fee."; - mes "These costs are on top of the regular Warp costs."; - input $QW_BW_FEE; - goto Setprice; - case 5: - next; - mes "Advanced Dungeon level warp fee = "+(($QW_AW_FEE)?"^00FF00"+$QW_AW_FEE:"^FF0000NO")+"^000000 zeny per level"; - mes "Advanced - Warps are dungeons not close to any starter town."; - mes "Dungeon warp fees are calculated by maps away from entrance of the dungeon times Dungeon warp fee."; - mes "These costs are on top of the regular Warp costs."; - input $QW_AW_FEE; - goto Setprice; - case 6: - next; - mes "Overseas Dungeon level warp fee = "+(($QW_OW_FEE)?"^00FF00"+$QW_OW_FEE:"^FF0000NO")+"^000000 zeny per level"; - mes "Overseas - Warps are dungeons related to towns overseas reachable by boat from Alberta."; - mes "Dungeon warp fees are calculated by maps away from entrance of the dungeon times Dungeon warp fee."; - mes "These costs are on top of the regular Warp costs."; - input $QW_OW_FEE; - goto Setprice; - case 7: - next; - mes "Full Healing = "+(($QW_HF_PRICE)?"^00FF00"+$QW_HF_PRICE:"^FF0000Free")+"^000000"; - mes "Instant full healing 1 price."; - input $QW_HF_PRICE; - goto Setprice; - case 8: - next; - mes "^FF0000HP ^000000Part Healing = "+(($QW_HP_H_PRICE)?"^00FF00"+$QW_HP_H_PRICE+"^000000 a point":"^FF0000Free^000000"); - mes "^FF0000SP ^000000Part Healing = "+(($QW_HP_S_PRICE)?"^00FF00"+$QW_HP_S_PRICE+"^000000 a point":"^FF0000Free^000000"); - mes "Healing price per 1 HP."; - mes "Healing price per 1 SP."; - mes "2 inputs, first HP then SP."; - input $QW_HP_H_PRICE; - input $QW_HP_S_PRICE; - goto Setprice; - case 9: - next; - if ($QW_S_PRICE && $QW_S_PRICE != 60) mes "Storage = ^00FF00 "+$QW_S_PRICE+" ^000000"; - if (!$QW_S_PRICE) mes "Storage = ^FF0000 Free ^000000"; - if ($QW_S_PRICE == 60) mes "Storage = ^0000FF Kafra Mode ^000000"; - mes "Storage cost, if set to 60 Kafra pricing will be handled."; - input $QW_S_PRICE; - goto Setprice; - case 10: - next; - mes "Guild Storage = "+(($QW_GS_PRICE)?"^00FF00"+$QW_GS_PRICE:"^FF0000Free")+"^000000"; - mes "Guild Storage, free on Guild Kafras."; - input $QW_GS_PRICE; - goto Setprice; - case 11: - goto GM_Menu; - default: - close; - end; - } - -//======================Special=Warp=Menu========================== - -SpecialWarpMenu: - if ($QW_SP_Warpname$ == "") set $QW_SP_Warpname$,"Special Warp"; - next; - mes "Scroll down to see all the information"; - mes "The Special warp menu option will show in the main menu when all towns & dungeons are unlocked"; - mes "And when the map for special warping has been set"; - mes "menu option name set to ^0000FF"+$QW_SP_Warpname$+"^000000"; - if ($QW_SP_WarpMap$ == "") mes "map is currently ^FF0000not^000000 set, and Special warp menu is off"; - if ($QW_SP_WarpMap$ != "") mes "map is currently set to ^0000FF"+$QW_SP_WarpMap$+"^000000 and Special Warp menu is on"; - mes "coords are set to ^0000FF"+$QW_SP_WarpX+","+$QW_SP_WarpY+"^000000"; - switch(select("Set Special Warp name to show in menu", "Set WarpMap","Set Coords","Go Back to GM_Menu","Exit")){ - case 1: - next; - mes "Set the name to show in the menu as option."; - input $QW_SP_Warpname$; - goto SpecialWarpMenu; - case 2: - next; - mes "Set the map in the ^0000FFmapname^000000 format."; - mes "When this warpmap is set the option for players will show once they meet the requirments."; - mes "To disable Special Warp Menu option, clear this!"; - input $QW_SP_WarpMap$; - goto SpecialWarpMenu; - case 3: - next; - mes "First input = Xcoord"; - mes "Second input = Ycoord"; - input $QW_SP_WarpX; - input $QW_SP_WarpY; - goto SpecialWarpMenu; - case 4: - goto GM_Menu; - default: - close; - end; - } - -//======================Dungeon=Level=Limit======================== - -DungeonLevelLimit: - next; - mes "Dungeon Depth limit is "+(($QW_DL)?"^00FF00On":"^FF0000Off")+"^000000"; - mes "If^00FF00 On ^000000Dungeon Depth limit is set to ^0000FF"+$QW_DDL+"^000000"; - - switch(select("Toggle Dungeon Depth Limit","Set Dungeon Depth Limit","Go Back to GM_Menu","Exit")){ - case 1: set $QW_DL,($QW_DL)?0:1; goto DungeonLevelLimit; - case 2: - next; - mes "Set limit of Dungeon Depth 0 = entrance"; - mes "Depth 1 is a map connected to 0 and so on"; - mes "Shortest Route to map counts as depth"; - input $QW_DDL; - goto DungeonLevelLimit; - case 3: goto GM_Menu; - default: - close; - end; - } - -//===========================Towns================================= - -L_town: - callfunc "QWS_Tarray"; - freeloop(1); - set .@menu$,""; - for(set .@i,0; .@i<35; set .@i,.@i+1) // Expected maximum is 35 - set .@menu$,.@menu$+@Tmenulist$[.@i]+":"; - freeloop(0); - set @TWMenu,select(.@menu$); - - if (@Tmenuref[@TWMenu-1] == 57005) goto L_End; // 57005='dead' in hex - - if(Zeny<@pTprice[@Tmenuref[@TWMenu-1]]) callsub L_Short_on_zeny,0; - Zeny -= @pTprice[@Tmenuref[@TWMenu-1]]; - if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@pTprice[@Tmenuref[@TWMenu-1]]/16); - warp @pTmap$[@Tmenuref[@TWMenu-1]],@pTXcoords[@Tmenuref[@TWMenu-1]],@pTYcoords[@Tmenuref[@TWMenu-1]]; - close2; - Zeny += @pTprice[@Tmenuref[@TWMenu-1]]; - end; - -//=========================Dungeons================================ - -L_dungeon: - callfunc "QWS_Darray"; - freeloop(1); - set .@menu$,""; - for(set .@i,0; .@i<35; set .@i,.@i+1) // Expected maximum is 35 - set .@menu$,.@menu$+@Dmenulist$[.@i]+":"; - freeloop(0); - set @DWMenu,select(.@menu$); - - if (@Dmenuref[@DWMenu-1] == 57005) goto L_End; // 57005='dead' in hex - set @DwarpMenu, (@Dmenuref[@DWMenu-1]); - callfunc "QWS_DLarray"; - - next; - mes "[Warpra]"; - mes "Please select where you want to go:"; - freeloop(1); - set .@menu$,""; - for(set .@i,0; .@i<18; set .@i,.@i+1) // Expected maximum is 18 - set .@menu$,.@menu$+@DWLmenulist$[.@i]+":"; - freeloop(0); - set @DWLMenu,select(.@menu$); - - if (@DWLmenuref[@DWLMenu-1] == 57005) goto L_End; // 57005='dead' in hex - - set @Darrayref, @DWLmenuref[@DWLMenu-1]; - set @warpprice, @pDprice[@Dmenuref[@DWMenu-1]]+(getd(@pDfee$[@Dmenuref[@DWMenu-1]])*(@DDepth[@Darrayref])); - - if(Zeny<@warpprice) callsub L_Short_on_zeny,1; - Zeny -= (@warpprice); - if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@warpprice/16); - warp @DGat$[@Darrayref],@DXcoords[@Darrayref],@DYcoords[@Darrayref]; - close2; - Zeny += @pTprice[@Tmenuref[@DWMenu-1]]; - end; - -//=============================Healing============================= - -L_heal_Full: - set @healfee, $QW_HF_PRICE; - if(Zeny<@healfee) callsub L_Short_on_zeny,4; - Zeny -= @healfee; - if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@healfee/500); - next; - mes "[Warpra]"; - mes "Close this window and I will heal you."; - close2; - percentheal 100,100; - end; - -L_heal_Part: - set @healchoice,select("Full heal","Health Points only","Skill Points only","Exit"); - if (@healchoice == 1) callsub PHeal,1,1; - if (@healchoice == 2) callsub PHeal,1,0; - if (@healchoice == 3) callsub PHeal,0,1; - goto L_End; - -PHeal: - next; - set @Hp, MaxHp-Hp; - set @Sp, MaxSp-Sp; - set @HpPrice, @Hp*$QW_HP_H_PRICE; - set @SpPrice, @Sp*$QW_HP_S_PRICE; - mes "[Warpra]"; - if(getarg(0) == 1) mes ""+@HpPrice+" Zeny for "+@Hp+" health points"; - if(getarg(1) == 1) mes ""+@SpPrice+" Zeny for "+@Sp+" skill points"; - set @total, @HpPrice+@SpPrice; - mes "for a total of "+@total+" zeny"; - if (select("Heal me","Let me see the choices again")==2) goto L_heal_Part; - - if(getarg(0) == 1)set @HpPrice, (MaxHp-Hp)*$QW_HP_H_PRICE; - if(getarg(1) == 1)set @SpPrice, (MaxSp-Sp)*$QW_HP_S_PRICE; - set @healfee, @HpPrice+@SpPrice; - if (getarg(0) == 1)&&(getarg(1) == 1)&&(Zeny<@healfee) goto Zeny_Short_Both; - if (getarg(0) == 1)&&(Zeny<@healfee) goto Zeny_short_HP; - if (getarg(1) == 1)&&(Zeny<@healfee) goto Zeny_short_SP; - Zeny -= @healfee; - if (getarg(0) == 1)&&(getarg(1) == 1) percentheal 100,100; - if (getarg(0) == 1) percentheal 100,0; - if (getarg(1) == 1) percentheal 0,100; - close; - end; - -Zeny_Short_Both: - mes "[Warpra]"; - mes "Choose another option, you can afford both."; - mes "I can heal as much as you can afford, too."; - if (select("OK","Exit") == 2) goto L_End; - goto PHeal; - -Zeny_short_HP: - mes "[Warpra]"; - mes "Do you want me to partly heal your HP?"; - if (select("Yes","No") == 2) goto L_End; - set @Hp, Zeny/$QW_HP_H_PRICE; - set @HpPrice, @Hp*$QW_HP_H_PRICE; - if (@Hp == 1) mes "You're not worth the effort."; - if (@Hp == 1) goto L_End; - Zeny -= @HpPrice; - heal @Hp,0; - close; - end; - -Zeny_short_SP: - mes "[Warpra]"; - mes "Do you want me to partly heal your SP?"; - if (select("Yes","No") == 2) goto L_End; - set @Sp, Zeny/$QW_HP_S_PRICE; - set @SpPrice, @Sp*$QW_HP_S_PRICE; - if (@Sp == 1) mes "You're not worth the effort."; - if (@Sp == 1) goto L_End; - Zeny -= @SpPrice; - heal 0,@Sp; - close; - end; - -//=============================Storage============================= - -L_Storage: - next; - if(basicskillcheck() > 0 && getskilllv("NV_BASIC") < 6) goto L_StorageJBlow; - set @fee, $QW_S_PRICE; - if ($QW_S_PRICE == 60)&&(BaseJob == Job_Novice) set @fee, 30; - if ($QW_S_PRICE == 60)&&(BaseJob != Job_Novice) set @fee, 60; - if(Zeny<@fee) callsub L_Short_on_zeny,2; - Zeny -= @fee; - if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@fee/5); - - mes "[Warpra]"; - if(#kafra_code) { - mes "Enter your storage password:"; - set @code_,0; - input @code_; - if(@code_ != #kafra_code) { - dispbottom "Wrong storage password."; - close; - } - set @kafcode_try,0; - set @code_,0; - } - mes "Close this window and I will open your storage."; - close2; - openstorage; - end; - -L_StorageJBlow: - mes "[Warpra]"; - mes "I am sorry but you have to be at least Novice level 6 if you want to use the storage."; - return; - -L_GStorage: - if (!@GID) { - next; - mes "[Warpra]"; - mes "You are not a part of a guild I can't help you."; - close; - end; - } - if (Zeny<$QW_GS_PRICE) callsub L_Short_on_zeny,3; - Zeny -= $QW_GS_PRICE; - if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + ($QW_GS_PRICE/5); - next; - mes "[Warpra]"; - mes "Close this window and I will open the ^5533FF" + getguildname(@GID) + "^000000 storage."; - close2; - guildopenstorage; - end; - -L_End: - close; - end; - -//============================Few=Warp============================= -L_FewWarps: - next; - mes "[Warpra]"; - mes "You need to unlock locations before they come available to you."; - mes "To unlock a location talk to my colleagues all over the world."; - mes "Each account has its own stamp card."; - mes "Want me to check what stamps you have collected so far?"; - if (select("Yes","No")==1) callsub stampcard; - close; - end; - -//============================No=Unlock============================ -L_NoUnlock: - next; - mes "[Warpra]"; - mes "I don't unlock this location, my assistant deeper in the dungeon will unlock this place."; - close; - end; - -//=========================Short=On=Zeny=========================== -L_Short_on_zeny: - next; - switch(getarg(0)) { - case 0: mes "You don't seem to have "+@pTprice[@Tmenuref[@TWMenu-1]]+" zeny to pay for the warp to "+@pTmenuitems$[@Tmenuref[@TWMenu-1]]+"."; break; - case 1: mes "You don't seem to have "+@warpprice+" zeny to pay for the warp to "+@DLevelName$[@DWLmenuref[@DWLMenu-1]]+" at "+@pDmenuitems$[@Dmenuref[@DWMenu-1]]+"."; break; - case 2: mes "You don't seem to have "+@fee+" zeny to pay the storage fee."; break; - case 3: mes "You don't seem to have "+$QW_GS_PRICE+" zeny to pay the guild storage fee."; break; - case 4: mes "You don't seem to have "+@healfee+" zeny to pay for your healing."; break; - } - close; - end; - -//===========================Stamp=Card============================ -stampcard: -// Counting of the ammount of places you have unlocked - next; - mes "Let me check what Towns you have."; - callfunc "QWS_TownStamps"; - mes "You collected^00FF00 "+@Tstamp+" of "+@MaxTstamp+" ^000000Towns."; - if (@Tstamp == 15) mes "They say there is an island you can only get to when married..."; - if (@Tstamp == 15) emotion 18; - next; - mes "Let me check what dungeons you have."; - callfunc "QWS_DungeonStamps"; - mes "You collected^00FF00 "+@Dstamp+" of "+@MaxDstamp+" ^000000Dungeons."; - mes "To unlock a dungeon, search for my colleagues."; - mes "You can usually find them near the middle or end of the dungeon."; - return; -} - -function script QWS_TownStamps { - set @Tstamp,0; - set @MaxTstamp,30; //maximum number of towns - set @binvalue,1; - set @Tstamploop,0; - do { - if ((@binvalue & ##QWS_T_Unlock) == @binvalue) set @Tstamp,@Tstamp+1; - set @binvalue, @binvalue *2; - set @Tstamploop, @Tstamploop + 1; - } while (@Tstamploop < @MaxTstamp); - return; -} - -function script QWS_DungeonStamps { - set @Dstamp,0; - set @MaxDstamp,29; //maximum number of dungeons - set @binvalue,1; - set @Dstamploop,0; - do { - if ((@binvalue & ##QWS_D_Unlock) == @binvalue) set @Dstamp,@Dstamp+1; - set @binvalue, @binvalue *2; - set @Dstamploop, @Dstamploop + 1; - } while (@Dstamploop < @MaxDstamp); - return; -} - -//======================Main=Menu=Array============================ - -function script QWS_MMarray { - - // Currently 9 items - setarray @pMmenuitems$[0], "GameMaster Menu", $QW_SP_Warpname$, "Warp to Towns", "Warp to Dungeons", "Why so few warps?", "Why don't you unlock this location?", "Heal", "Heal", "Storage", "Guild Storage", "Cancel"; - set @Mi,0; // loop counter - set @Mj,0; // menu line counter - -//----------------GameMaster-Menu - if (getgmlevel()>= 80) { - set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; - set @Mmenuref[@Mj],@Mi; - set @Mj,@Mj+1; - } - set @Mi,@Mi+1; -//----------------Special-Warp - callfunc "QWS_TownStamps"; - callfunc "QWS_DungeonStamps"; - if (@Tstamp == @MaxTstamp)&&(@Dstamp == @MaxDstamp)&&($QW_SP_WarpMap$ != "") { - set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; - set @Mmenuref[@Mj],@Mi; - set @Mj,@Mj+1; - } - set @Mi,@Mi+1; -//----------------Town-Warp - if ($QW_TW_OFF == 0) { - set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; - set @Mmenuref[@Mj],@Mi; - set @Mj,@Mj+1; - } - set @Mi,@Mi+1; -//----------------Dungeon-Warp - if ($QW_DW_OFF == 0) { - set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; - set @Mmenuref[@Mj],@Mi; - set @Mj,@Mj+1; - } - set @Mi,@Mi+1; -//----------------Why-So-Few-Warps - set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; - set @Mmenuref[@Mj],@Mi; - set @Mj,@Mj+1; - set @Mi,@Mi+1; -//----------------No-Unlock - if (getarg(0) == 1) { - set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; - set @Mmenuref[@Mj],@Mi; - set @Mj,@Mj+1; - } - set @Mi,@Mi+1; -//----------------Healfull - if ($QW_HF == 1) { - set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; - set @Mmenuref[@Mj],@Mi; - set @Mj,@Mj+1; - } - set @Mi,@Mi+1; -//----------------Healpart - if ($QW_HP == 1) { - set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; - set @Mmenuref[@Mj],@Mi; - set @Mj,@Mj+1; - } - set @Mi,@Mi+1; -//----------------Storage - if ($QW_Stor == 1) { - set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; - set @Mmenuref[@Mj],@Mi; - set @Mj,@Mj+1; - } - set @Mi,@Mi+1; -//----------------GuildStorage - if ($QW_GStor == 1) { - set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; - set @Mmenuref[@Mj],@Mi; - set @Mj,@Mj+1; - } - set @Mi,@Mi+1; -//----------------Cancel - set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; - set @Mmenuref[@Mj],@Mi; - return; -} - -//======================Town=Menu=Array============================ -// Adding a town: -// setarray @pTmenuitems$[@Ti], "Prontera";// Name of Town shown in Town select Menu -// setarray @pTprice[@Ti], $QW_BW_PRICE; // Warp prices: Basic ($QW_BW_PRICE), Advanced ($QW_AW_PRICE), Overseas ($QW_OW_PRICE) -// -// setarray @pTmap$[@Ti], "prontera"; // Map name -// setarray @pTXcoords[@Ti], 156; // X warp coords -// setarray @pTYcoords[@Ti], 187; // Y warp coords -// -// QWS_Make_Town_Menu 0; // Use a free number (last used is 30, Eclage) -// -// Adding a warpra: -// map,x,y,facing script Warpra#example 4_F_KAFRA5,{ -// callfunc "QWS_Town_Warpra",<town number>,"Your Town"; -// close; -// } -// Town number is the same as "QWS_Make_Town_Menu". -//================================================================== - -function script QWS_Tarray { - function QWS_Make_Town_Menu; - - set @Ti,0; // loop counter - set @Tj,0; // menu lines counter - -//----------------Prontera - setarray @pTmenuitems$[@Ti], "Prontera"; - setarray @pTprice[@Ti], $QW_BW_PRICE; - - setarray @pTmap$[@Ti], "prontera"; - setarray @pTXcoords[@Ti], 156; - setarray @pTYcoords[@Ti], 187; - - QWS_Make_Town_Menu 0; -//----------------Alberta - setarray @pTmenuitems$[@Ti], "Alberta"; - setarray @pTprice[@Ti], $QW_BW_PRICE; - - setarray @pTmap$[@Ti], "alberta"; - setarray @pTXcoords[@Ti], 27; - setarray @pTYcoords[@Ti], 236; - - QWS_Make_Town_Menu 1; -//----------------Aldebaran - setarray @pTmenuitems$[@Ti], "Aldebaran"; - setarray @pTprice[@Ti], $QW_AW_PRICE; - - setarray @pTmap$[@Ti], "aldebaran"; - setarray @pTXcoords[@Ti], 145; - setarray @pTYcoords[@Ti], 120; - - QWS_Make_Town_Menu 2; -//----------------Amatsu: - setarray @pTmenuitems$[@Ti], "Amatsu"; - setarray @pTprice[@Ti], $QW_OW_PRICE; - - setarray @pTmap$[@Ti], "amatsu"; - setarray @pTXcoords[@Ti], 197; - setarray @pTYcoords[@Ti], 86; - - QWS_Make_Town_Menu 3; -//----------------Ayothaya: - setarray @pTmenuitems$[@Ti], "Ayothaya"; - setarray @pTprice[@Ti], $QW_OW_PRICE; - - setarray @pTmap$[@Ti], "ayothaya"; - setarray @pTXcoords[@Ti], 150; - setarray @pTYcoords[@Ti], 57; - - QWS_Make_Town_Menu 4; -//----------------Brasilis: - setarray @pTmenuitems$[@Ti], "Brasilis"; - setarray @pTprice[@Ti], $QW_OW_PRICE; - - setarray @pTmap$[@Ti], "brasilis"; - setarray @pTXcoords[@Ti], 195; - setarray @pTYcoords[@Ti], 220; - - QWS_Make_Town_Menu 21; -//----------------Comodo: - setarray @pTmenuitems$[@Ti], "Comodo"; - setarray @pTprice[@Ti], $QW_AW_PRICE; - - setarray @pTmap$[@Ti], "comodo"; - setarray @pTXcoords[@Ti], 188; - setarray @pTYcoords[@Ti], 161; - - QWS_Make_Town_Menu 5; -//----------------Dewata: - setarray @pTmenuitems$[@Ti], "Dewata"; - setarray @pTprice[@Ti], $QW_OW_PRICE; - - setarray @pTmap$[@Ti], "dewata"; - setarray @pTXcoords[@Ti], 199; - setarray @pTYcoords[@Ti], 179; - - QWS_Make_Town_Menu 29; -//----------------Eclage: - setarray @pTmenuitems$[@Ti], "Eclage"; - setarray @pTprice[@Ti], $QW_OW_PRICE; - - setarray @pTmap$[@Ti], "eclage"; - setarray @pTXcoords[@Ti], 111; - setarray @pTYcoords[@Ti], 39; - - QWS_Make_Town_Menu 30; -//----------------Einbech: - setarray @pTmenuitems$[@Ti], "Einbech"; - setarray @pTprice[@Ti], $QW_AW_PRICE; - - setarray @pTmap$[@Ti], "einbech"; - setarray @pTXcoords[@Ti], 172; - setarray @pTYcoords[@Ti], 126; - - QWS_Make_Town_Menu 6; -//----------------Einbroch: - setarray @pTmenuitems$[@Ti], "Einbroch"; - setarray @pTprice[@Ti], $QW_AW_PRICE; - - setarray @pTmap$[@Ti], "einbroch"; - setarray @pTXcoords[@Ti], 230; - setarray @pTYcoords[@Ti], 191; - - QWS_Make_Town_Menu 7; -//----------------El Dicastes: - setarray @pTmenuitems$[@Ti], "El Dicastes"; - setarray @pTprice[@Ti], $QW_OW_PRICE; - - setarray @pTmap$[@Ti], "dicastes01"; - setarray @pTXcoords[@Ti], 197; - setarray @pTYcoords[@Ti], 187; - - QWS_Make_Town_Menu 22; -//----------------Geffen: - setarray @pTmenuitems$[@Ti], "Geffen"; - setarray @pTprice[@Ti], $QW_BW_PRICE; - - setarray @pTmap$[@Ti], "geffen"; - setarray @pTXcoords[@Ti], 119; - setarray @pTYcoords[@Ti], 66; - - QWS_Make_Town_Menu 8; -//----------------Gonryun: - setarray @pTmenuitems$[@Ti], "Gonryun"; - setarray @pTprice[@Ti], $QW_OW_PRICE; - - setarray @pTmap$[@Ti], "gonryun"; - setarray @pTXcoords[@Ti], 150; - setarray @pTYcoords[@Ti], 130; - - QWS_Make_Town_Menu 9; -//----------------Hugel: - setarray @pTmenuitems$[@Ti], "Hugel"; - setarray @pTprice[@Ti], $QW_AW_PRICE; - - setarray @pTmap$[@Ti], "hugel"; - setarray @pTXcoords[@Ti], 95; - setarray @pTYcoords[@Ti], 121; - - QWS_Make_Town_Menu 10; -//----------------Izlude: - setarray @pTmenuitems$[@Ti], "Izlude"; - setarray @pTprice[@Ti], $QW_BW_PRICE; - - setarray @pTmap$[@Ti], "izlude"; - setarray @pTXcoords[@Ti], 128; - setarray @pTYcoords[@Ti], 111; - - QWS_Make_Town_Menu 11; -//----------------Jawaii: - setarray @pTmenuitems$[@Ti], "Jawaii"; - setarray @pTprice[@Ti], $QW_AW_PRICE; - - setarray @pTmap$[@Ti], "jawaii"; - setarray @pTXcoords[@Ti], 243; - setarray @pTYcoords[@Ti], 115; - - QWS_Make_Town_Menu 12; -//----------------Lighthalzen: - setarray @pTmenuitems$[@Ti], "Lighthalzen"; - setarray @pTprice[@Ti], $QW_AW_PRICE; - - setarray @pTmap$[@Ti], "lighthalzen"; - setarray @pTXcoords[@Ti], 158; - setarray @pTYcoords[@Ti], 110; - - QWS_Make_Town_Menu 13; -//----------------Louyang: - setarray @pTmenuitems$[@Ti], "Louyang"; - setarray @pTprice[@Ti], $QW_OW_PRICE; - - setarray @pTmap$[@Ti], "louyang"; - setarray @pTXcoords[@Ti], 210; - setarray @pTYcoords[@Ti], 108; - - QWS_Make_Town_Menu 14; -//----------------Lutie - setarray @pTmenuitems$[@Ti], "Lutie"; - setarray @pTprice[@Ti], $QW_AW_PRICE; - - setarray @pTmap$[@Ti], "xmas"; - setarray @pTXcoords[@Ti], 148; - setarray @pTYcoords[@Ti], 131; - - QWS_Make_Town_Menu 15; -//----------------Manuk - setarray @pTmenuitems$[@Ti], "Manuk"; - setarray @pTprice[@Ti], $QW_OW_PRICE; - - setarray @pTmap$[@Ti], "manuk"; - setarray @pTXcoords[@Ti], 260; - setarray @pTYcoords[@Ti], 175; - - QWS_Make_Town_Menu 23; -//----------------Mora - setarray @pTmenuitems$[@Ti], "Mora"; - setarray @pTprice[@Ti], $QW_OW_PRICE; - - setarray @pTmap$[@Ti], "mora"; - setarray @pTXcoords[@Ti], 111; - setarray @pTYcoords[@Ti], 97; - - QWS_Make_Town_Menu 24; -//----------------Morroc: - setarray @pTmenuitems$[@Ti], "Morroc"; - setarray @pTprice[@Ti], $QW_BW_PRICE; - - setarray @pTmap$[@Ti], "morocc"; - setarray @pTXcoords[@Ti], 159; - setarray @pTYcoords[@Ti], 93; - - QWS_Make_Town_Menu 16; -//----------------Moscovia - setarray @pTmenuitems$[@Ti], "Moscovia"; - setarray @pTprice[@Ti], $QW_OW_PRICE; - - setarray @pTmap$[@Ti], "moscovia"; - setarray @pTXcoords[@Ti], 219; - setarray @pTYcoords[@Ti], 193; - - QWS_Make_Town_Menu 25; -//----------------Niflheim: - setarray @pTmenuitems$[@Ti], "Niflheim"; - setarray @pTprice[@Ti], $QW_AW_PRICE; - - setarray @pTmap$[@Ti], "niflheim"; - setarray @pTXcoords[@Ti], 195; - setarray @pTYcoords[@Ti], 186; - - QWS_Make_Town_Menu 17; -//----------------Payon: - setarray @pTmenuitems$[@Ti], "Payon"; - setarray @pTprice[@Ti], $QW_BW_PRICE; - - setarray @pTmap$[@Ti], "payon"; - setarray @pTXcoords[@Ti], 152; - setarray @pTYcoords[@Ti], 75; - - QWS_Make_Town_Menu 18; -//----------------Rachel - setarray @pTmenuitems$[@Ti], "Rachel"; - setarray @pTprice[@Ti], $QW_AW_PRICE; - - setarray @pTmap$[@Ti], "rachel"; - setarray @pTXcoords[@Ti], 130; - setarray @pTYcoords[@Ti], 111; - - QWS_Make_Town_Menu 26; -//----------------Splendide - setarray @pTmenuitems$[@Ti], "Splendide"; - setarray @pTprice[@Ti], $QW_OW_PRICE; - - setarray @pTmap$[@Ti], "splendide"; - setarray @pTXcoords[@Ti], 200; - setarray @pTYcoords[@Ti], 153; - - QWS_Make_Town_Menu 27; -//----------------Umbala: - setarray @pTmenuitems$[@Ti], "Umbala"; - setarray @pTprice[@Ti], $QW_AW_PRICE; - - setarray @pTmap$[@Ti], "umbala"; - setarray @pTXcoords[@Ti], 130; - setarray @pTYcoords[@Ti], 130; - - QWS_Make_Town_Menu 19; -//----------------Veins - setarray @pTmenuitems$[@Ti], "Veins"; - setarray @pTprice[@Ti], $QW_OW_PRICE; - - setarray @pTmap$[@Ti], "veins"; - setarray @pTXcoords[@Ti], 216; - setarray @pTYcoords[@Ti], 123; - - QWS_Make_Town_Menu 28; -//----------------Yuno: - setarray @pTmenuitems$[@Ti], "Yuno"; - setarray @pTprice[@Ti], $QW_AW_PRICE; - - setarray @pTmap$[@Ti], "yuno"; - setarray @pTXcoords[@Ti], 160; - setarray @pTYcoords[@Ti], 168; - - QWS_Make_Town_Menu 20; -//----------------Cancel - setarray @pTmenuitems$[@Ti], "Cancel"; - setarray @pTprice[@Ti], 0; - - set @Tmenulist$[@Tj],@pTmenuitems$[@Ti]; - set @Tmenuref[@Tj],57005; // 57005='dead' in hex - return; - -//----------------Make Town Menu Function - -function QWS_Make_Town_Menu { - set @temptownmenubin,1; - if (getarg(0) == 0) goto menu_item; - set @templooptownmenu,0; - do { - set @temptownmenubin, @temptownmenubin * 2; - set @templooptownmenu, @templooptownmenu + 1; - }while (getarg(0) > @templooptownmenu); -// check marker and make menu item -menu_item: - if ((@temptownmenubin & ##QWS_T_Unlock) != @temptownmenubin) { - set @Ti,@Ti+1; - return; - } - if (@pTprice[@Ti] != 0)&&($QW_MapUserShow == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti]; - if (@pTprice[@Ti] == 0)&&($QW_MapUserShow == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]; - if (@pTprice[@Ti] != 0)&&($QW_MapUserShow == 1) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" ["+getmapusers(@pTmap$[@Ti])+"]"+" -> "+@pTprice[@Ti]; - if (@pTprice[@Ti] == 0)&&($QW_MapUserShow == 1) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" ["+getmapusers(@pTmap$[@Ti])+"]"; - set @Tmenuref[@Tj],@Ti; - set @Tj,@Tj+1; - set @Ti,@Ti+1; - return; -} -} - -//====================Dungeon=Menu=Arrays========================== -// Adding a dungeon: -// setarray @pDmenuitems$[@Di], "Abyss Lake"; // Name of Dungeon shown in Dungeon select Menu -// setarray @pDprice[@Di], $QW_AW_PRICE; // Warp prices: Basic ($QW_BW_PRICE), Advanced ($QW_AW_PRICE), Overseas ($QW_OW_PRICE) -// setarray @pDfee$[@Di], "$QW_AW_FEE"; // Identifier for fee caluclation: Basic ("$QW_BW_FEE"), Advanced ("$QW_AW_FEE"), Overseas ("$QW_OW_FEE") -// setarray @DLevels[@Di], 3; // Number of levels in dungeon -// -// setarray @DGat$[@Dref], "abyss_01", "abyss_02", "abyss_03"; // Map names of dungeon levels -// setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; // Name of dungeon levels shown in Menu -// setarray @DXcoords[@Dref], 265, 275, 116; // X warp coords -// setarray @DYcoords[@Dref], 273, 270, 27; // Y warp coords -// setarray @DDepth[@Dref], 0, 1, 2; // Relative depth to entrance, to calculate extra warp fee -// -// QWS_Make_Dungeon_Menu 0; // Use a free number (last used is 28, Kiel Dungeon) -// -// Adding a warpra: -// map,x,y,facing script Warpra Helper#example 4_F_KAFRA6,{ -// callfunc "QWS_Dungeon_Warpra",<dungeon number>,"Your Dungeon"; -// close; -// } -// Dungeon number is the same as "QWS_Make_Dungeon_Menu". -//================================================================== - -function script QWS_Darray { - function QWS_Make_Dungeon_Menu; - - set @Di,0; - set @Dj,0; - set @Dref,0; - -//----------------ABYSS LAKE - setarray @pDmenuitems$[@Di], "Abyss Lake"; - setarray @pDprice[@Di], $QW_AW_PRICE; - setarray @pDfee$[@Di], "$QW_AW_FEE"; - setarray @DLevels[@Di], 3; - - setarray @DGat$[@Dref], "abyss_01", "abyss_02", "abyss_03"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; - setarray @DXcoords[@Dref], 265, 275, 116; - setarray @DYcoords[@Dref], 273, 270, 27; - setarray @DDepth[@Dref], 0, 1, 2; - - QWS_Make_Dungeon_Menu 0; - -//----------------AMATSU DUNGEON - setarray @pDmenuitems$[@Di], "Amatsu Dungeon"; - setarray @pDprice[@Di], $QW_OW_PRICE; - setarray @pDfee$[@Di], "$QW_OW_FEE"; - setarray @DLevels[@Di], 3; - - setarray @DGat$[@Dref], "ama_dun01", "ama_dun02", "ama_dun03"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; - setarray @DXcoords[@Dref], 227, 32, 119; - setarray @DYcoords[@Dref], 10, 43, 15; - setarray @DDepth[@Dref], 0, 1, 2; - - QWS_Make_Dungeon_Menu 1; - -//----------------ANT HELL - setarray @pDmenuitems$[@Di], "Ant Hell Dungeon"; - setarray @pDprice[@Di], $QW_BW_PRICE; - setarray @pDfee$[@Di], "$QW_BW_FEE"; - setarray @DLevels[2], 2; - - setarray @DGat$[@Dref], "anthell01", "anthell02"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2"; - setarray @DXcoords[@Dref], 32, 34; - setarray @DYcoords[@Dref], 262, 263; - setarray @DDepth[@Dref], 0, 1; - - QWS_Make_Dungeon_Menu 2; - -//----------------AYOTAYA - setarray @pDmenuitems$[@Di], "Ayotaya Dungeon"; - setarray @pDprice[@Di], $QW_OW_PRICE; - setarray @pDfee$[@Di], "$QW_OW_FEE"; - setarray @DLevels[3], 2; - - setarray @DGat$[@Dref], "ayo_dun01", "ayo_dun02"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2"; - setarray @DXcoords[@Dref], 275, 150; - setarray @DYcoords[@Dref], 17, 13; - setarray @DDepth[@Dref], 0, 1; - - QWS_Make_Dungeon_Menu 3; - -//----------------BYALAN - setarray @pDmenuitems$[@Di], "Byalan Dungeon"; - setarray @pDprice[@Di], $QW_BW_PRICE; - setarray @pDfee$[@Di], "$QW_BW_FEE"; - setarray @DLevels[4], 5; - - setarray @DGat$[@Dref], "iz_dun00", "iz_dun01", "iz_dun02", "iz_dun03", "iz_dun04"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5"; - setarray @DXcoords[@Dref], 168, 41, 236, 32, 26; - setarray @DYcoords[@Dref], 168, 37, 204, 63, 27; - setarray @DDepth[@Dref], 0, 1, 2, 3, 4; - - QWS_Make_Dungeon_Menu 4; - -//----------------CLOCK TOWER - setarray @pDmenuitems$[@Di], "Clock Tower Dungeon"; - setarray @pDprice[@Di], $QW_AW_PRICE; - setarray @pDfee$[@Di], "$QW_AW_FEE"; - setarray @DLevels[5], 8; - - setarray @DGat$[@Dref], "c_tower1", "c_tower2", "c_tower3", "c_tower4", "alde_dun01", "alde_dun02", "alde_dun03", "alde_dun04"; - setarray @DLevelName$[@Dref], "Clock Tower Level 1", "Clock Tower Level 2", "Clock Tower Level 3", "Clock Tower Level 4", "Basement 1F", "Basement 2F", "Basement 3F", "Basement 4F"; - setarray @DXcoords[@Dref], 200, 268, 64, 32, 197, 262, 276, 122; - setarray @DYcoords[@Dref], 163, 26, 148, 63, 25, 41, 53, 125; - setarray @DDepth[@Dref], 0, 1, 2, 3, 1, 2, 3, 4; - - QWS_Make_Dungeon_Menu 5; - -//----------------COAL MINE - setarray @pDmenuitems$[@Di], "Coal Mine Dungeon"; - setarray @pDprice[@Di], $QW_AW_PRICE; - setarray @pDfee$[@Di], "$QW_AW_FEE"; - setarray @DLevels[6], 3; - - setarray @DGat$[@Dref], "mjo_dun01", "mjo_dun02", "mjo_dun03"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; - setarray @DXcoords[@Dref], 52, 381, 302; - setarray @DYcoords[@Dref], 17, 343, 261; - setarray @DDepth[@Dref], 0, 1, 2; - - QWS_Make_Dungeon_Menu 6; - -//----------------CULVERT - setarray @pDmenuitems$[@Di], "Culvert Dungeon"; - setarray @pDprice[@Di], $QW_BW_PRICE; - setarray @pDfee$[@Di], "$QW_BW_FEE"; - setarray @DLevels[7], 4; - - setarray @DGat$[@Dref], "prt_sewb1", "prt_sewb2", "prt_sewb3", "prt_sewb4"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4"; - setarray @DXcoords[@Dref], 132, 19, 180, 100; - setarray @DYcoords[@Dref], 248, 19, 169, 92; - setarray @DDepth[@Dref], 0, 1, 2, 3; - - QWS_Make_Dungeon_Menu 7; - -//----------------EINBECH DUNGEON - setarray @pDmenuitems$[@Di], "Einbech Dungeon"; - setarray @pDprice[@Di], $QW_AW_PRICE; - setarray @pDfee$[@Di], "$QW_AW_FEE"; - setarray @DLevels[8], 2; - - setarray @DGat$[@Dref], "ein_dun01", "ein_dun02"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2"; - setarray @DXcoords[@Dref], 22, 292; - setarray @DYcoords[@Dref], 14, 290; - setarray @DDepth[@Dref], 0, 1; - - QWS_Make_Dungeon_Menu 8; - -//----------------GEFENIA DUNGEON - setarray @pDmenuitems$[@Di], "Gefenia Dungeon"; - setarray @pDprice[@Di], $QW_BW_PRICE; - setarray @pDfee$[@Di], "$QW_BW_FEE"; - setarray @DLevels[9], 4; - - setarray @DGat$[@Dref], "gefenia01", "gefenia02", "gefenia03", "gefenia04"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4"; - setarray @DXcoords[@Dref], 59, 201, 264, 33; - setarray @DYcoords[@Dref], 167, 35, 236, 270; - setarray @DDepth[@Dref], 0, 1, 2, 3; - - QWS_Make_Dungeon_Menu 9; - -//----------------GEFFEN DUNGEON - setarray @pDmenuitems$[@Di], "Geffen Dungeon"; - setarray @pDprice[@Di], $QW_BW_PRICE; - setarray @pDfee$[@Di], "$QW_BW_FEE"; - setarray @DLevels[@Di], 4; - - setarray @DGat$[@Dref], "gef_dun00", "gef_dun01", "gef_dun02", "gef_dun03"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4"; - setarray @DXcoords[@Dref], 104, 115, 106, 203; - setarray @DYcoords[@Dref], 100, 236, 132, 200; - setarray @DDepth[@Dref], 0, 1, 2, 3; - - QWS_Make_Dungeon_Menu 10; - -//----------------GLAST HEIM - setarray @pDmenuitems$[@Di], "Glast Heim Dungeon"; - setarray @pDprice[@Di], $QW_BW_PRICE; - setarray @pDfee$[@Di], "$QW_BW_FEE"; - setarray @DLevels[@Di], 17; - - setarray @DGat$[@Dref], "glast_01", "gl_church", "gl_chyard", "gl_in01", "gl_cas01", "gl_cas02", "gl_knt01", "gl_knt02", "gl_prison", "gl_prison1", "gl_step", "gl_sew01", "gl_sew02", "gl_sew03", "gl_sew04", "gl_dun01", "gl_dun02"; - setarray @DLevelName$[@Dref], "Glast Heim Entrance", "St. Abbey", "Churchyard", "Inside Glast Heim", "Castle 1", "Castle 2", "Chivalry 1", "Chivalry 2", "Prison 1", "Prison 2", "Steps", "Sewers 1", "Sewers 2", "Sewers 3", "Sewers 4", "Lowest Cave 1", "Lowest Cave 2"; - setarray @DXcoords[@Dref], 370, 156, 147, 121, 199, 104, 150, 157, 14, 150, 117, 258, 108, 171, 68, 133, 224; - setarray @DYcoords[@Dref], 300, 8, 15, 59, 29, 25, 10, 287, 70, 14, 124, 255, 291, 273, 277, 271, 274; - setarray @DDepth[@Dref], 0, 1, 2, 1, 1, 2, 1, 2, 2, 3, 1, 4, 2, 3, 4, 5, 6; - - QWS_Make_Dungeon_Menu 11; - -//----------------GONRYUN DUNGEON - setarray @pDmenuitems$[@Di], "Gonryun Dungeon"; - setarray @pDprice[@Di], $QW_OW_PRICE; - setarray @pDfee$[@Di], "$QW_OW_FEE"; - setarray @DLevels[@Di], 3; - - setarray @DGat$[@Dref], "gon_dun01", "gon_dun02", "gon_dun03"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; - setarray @DXcoords[@Dref], 143, 17, 68; - setarray @DYcoords[@Dref], 59, 114, 9; - setarray @DDepth[@Dref], 0, 1, 2; - - QWS_Make_Dungeon_Menu 12; - -//----------------HIDDEN DUNGEON - setarray @pDmenuitems$[@Di], "Hidden Dungeon"; - setarray @pDprice[@Di], $QW_BW_PRICE; - setarray @pDfee$[@Di], "$QW_BW_FEE"; - setarray @DLevels[@Di], 3; - - setarray @DGat$[@Dref], "prt_maze01", "prt_maze02", "prt_maze03"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; - setarray @DXcoords[@Dref], 176, 94, 23; - setarray @DYcoords[@Dref], 6, 19, 8; - setarray @DDepth[@Dref], 0, 1, 2; - - QWS_Make_Dungeon_Menu 13; - -//----------------JUPEROS CAVE - setarray @pDmenuitems$[@Di], "Juperos Cave"; - setarray @pDprice[@Di], $QW_AW_PRICE; - setarray @pDfee$[@Di], "$QW_AW_FEE"; - setarray @DLevels[@Di], 2; - - setarray @DGat$[@Dref], "juperos_01", "juperos_02"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2"; - setarray @DXcoords[@Dref], 53, 36; - setarray @DYcoords[@Dref], 247, 60; - setarray @DDepth[@Dref], 0, 1; - - QWS_Make_Dungeon_Menu 14; - -//----------------KIEL DUNGEON - setarray @pDmenuitems$[@Di], "Kiel Dungeon"; - setarray @pDprice[@Di], $QW_AW_PRICE; - setarray @pDfee$[@Di], "$QW_AW_FEE"; - setarray @DLevels[@Di], 2; - - setarray @DGat$[@Dref], "kh_dun01", "kh_dun02"; - setarray @DLevelName$[@Dref], "1st Floor", "2nd Floor"; - setarray @DXcoords[@Dref], 63, 42; - setarray @DYcoords[@Dref], 10, 197; - setarray @DDepth[@Dref], 0, 1; - - QWS_Make_Dungeon_Menu 28; - -//----------------LIGHTHALZEN BIO LAB - setarray @pDmenuitems$[@Di], "Lighthalzen Bio Lab"; - setarray @pDprice[@Di], $QW_AW_PRICE; - setarray @pDfee$[@Di], "$QW_AW_FEE"; - setarray @DLevels[@Di], 3; - - setarray @DGat$[@Dref], "lhz_dun01", "lhz_dun02", "lhz_dun03"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; - setarray @DXcoords[@Dref], 150, 150, 140; - setarray @DYcoords[@Dref], 287, 18, 137; - setarray @DDepth[@Dref], 0, 1, 2; - - QWS_Make_Dungeon_Menu 15; - -//----------------LOUYANG DUNGEON - setarray @pDmenuitems$[@Di], "Louyang Dungeon"; - setarray @pDprice[@Di], $QW_OW_PRICE; - setarray @pDfee$[@Di], "$QW_OW_FEE"; - setarray @DLevels[@Di], 2; - - setarray @DGat$[@Dref], "lou_dun02", "lou_dun03"; - setarray @DLevelName$[@Dref], "Royal Tomb Level 1", "Royal Tomb Level 2"; - setarray @DXcoords[@Dref], 282, 165; - setarray @DYcoords[@Dref], 20, 38; - setarray @DDepth[@Dref], 0, 1; - - QWS_Make_Dungeon_Menu 16; - -//----------------MAGMA DUNGEON - setarray @pDmenuitems$[@Di], "Magma Dungeon"; - setarray @pDprice[@Di], $QW_AW_PRICE; - setarray @pDfee$[@Di], "$QW_AW_FEE"; - setarray @DLevels[@Di], 2; - - setarray @DGat$[@Dref], "mag_dun01", "mag_dun02"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2"; - setarray @DXcoords[@Dref], 126, 47; - setarray @DYcoords[@Dref], 69, 32; - setarray @DDepth[@Dref], 0, 1; - - QWS_Make_Dungeon_Menu 17; - -//----------------ODIN TEMPLE - setarray @pDmenuitems$[@Di], "Odin Temple"; - setarray @pDprice[@Di], $QW_AW_PRICE; - setarray @pDfee$[@Di], "$QW_AW_FEE"; - setarray @DLevels[@Di], 1; - - setarray @DGat$[@Dref], "odin_tem01"; - setarray @DLevelName$[@Dref], "Level 1"; - setarray @DXcoords[@Dref], 96; - setarray @DYcoords[@Dref], 145; - setarray @DDepth[@Dref], 0; - - QWS_Make_Dungeon_Menu 18; - -//----------------ORC DUNGEON - setarray @pDmenuitems$[@Di], "Orc Dungeon"; - setarray @pDprice[@Di], $QW_BW_PRICE; - setarray @pDfee$[@Di], "$QW_BW_FEE"; - setarray @DLevels[@Di], 2; - - setarray @DGat$[@Dref], "orcsdun01", "orcsdun02"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2"; - setarray @DXcoords[@Dref], 32, 21; - setarray @DYcoords[@Dref], 169, 185; - setarray @DDepth[@Dref], 0, 1; - - QWS_Make_Dungeon_Menu 19; - -//----------------PAYON DUNGEON - setarray @pDmenuitems$[@Di], "Payon Dungeon"; - setarray @pDprice[@Di], $QW_BW_PRICE; - setarray @pDfee$[@Di], "$QW_BW_FEE"; - setarray @DLevels[@Di], 5; - - setarray @DGat$[@Dref], "pay_dun00", "pay_dun01", "pay_dun02", "pay_dun03", "pay_dun04"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5"; - setarray @DXcoords[@Dref], 22, 19, 19, 155, 201; - setarray @DYcoords[@Dref], 180, 33, 63, 159, 204; - setarray @DDepth[@Dref], 0, 1, 2, 3, 4; - - QWS_Make_Dungeon_Menu 20; - -//----------------PYRAMIDS - setarray @pDmenuitems$[@Di], "Pyramids Dungeon"; - setarray @pDprice[@Di], $QW_BW_PRICE; - setarray @pDfee$[@Di], "$QW_BW_FEE"; - setarray @DLevels[@Di], 6; - - setarray @DGat$[@Dref], "moc_pryd01", "moc_pryd02", "moc_pryd03", "moc_pryd04", "moc_pryd05", "moc_pryd06"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Basement 1", "Basement 2"; - setarray @DXcoords[@Dref], 192, 10, 100, 181, 94, 192; - setarray @DYcoords[@Dref], 9, 192, 92, 11, 96, 8; - setarray @DDepth[@Dref], 0, 1, 2, 3, 1, 2; - - QWS_Make_Dungeon_Menu 21; - -//----------------SPHINX - setarray @pDmenuitems$[@Di], "Sphinx Dungeon"; - setarray @pDprice[@Di], $QW_BW_PRICE; - setarray @pDfee$[@Di], "$QW_BW_FEE"; - setarray @DLevels[@Di], 5; - - setarray @DGat$[@Dref], "in_sphinx1", "in_sphinx2", "in_sphinx3", "in_sphinx4", "in_sphinx5"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5"; - setarray @DXcoords[@Dref], 192, 149, 210, 10, 100; - setarray @DYcoords[@Dref], 9, 81, 54, 222, 99; - setarray @DDepth[@Dref], 0, 1, 2, 3, 4; - - QWS_Make_Dungeon_Menu 22; - -//----------------SUNKEN SHIP - setarray @pDmenuitems$[@Di], "Sunken Ship Dungeon"; - setarray @pDprice[@Di], $QW_BW_PRICE; - setarray @pDfee$[@Di], "$QW_BW_FEE"; - setarray @DLevels[@Di], 2; - - setarray @DGat$[@Dref], "treasure01", "treasure02"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2"; - setarray @DXcoords[@Dref], 69, 102; - setarray @DYcoords[@Dref], 24, 27; - setarray @DDepth[@Dref], 0, 1; - - QWS_Make_Dungeon_Menu 23; - -//----------------THANATOS TOWER - setarray @pDmenuitems$[@Di], "Thanatos Tower"; - setarray @pDprice[@Di], $QW_AW_PRICE; - setarray @pDfee$[@Di], "$QW_AW_FEE"; - setarray @DLevels[@Di], 13; - - setarray @DGat$[@Dref], "tha_t01", "tha_t02", "tha_t03", "tha_t04", "tha_t05", "tha_t06", "tha_t07", "tha_t08", "tha_t09", "tha_t10", "tha_t11", "tha_t12", "thana_boss"; - setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5", "Level 6", "Level 7", "Level 8", "Level 9", "Level 10", "Level 11", "Level 12", "Thanatos Boss"; - setarray @DXcoords[@Dref], 150, 150, 220, 59, 62, 206, 35, 105, 88, 168, 90, 129, 85; - setarray @DYcoords[@Dref], 35, 136, 158, 143, 11, 8, 166, 44, 145, 138, 36, 83, 76; - setarray @DDepth[@Dref], 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12; - - QWS_Make_Dungeon_Menu 24; - -//----------------TOY FACTORY - setarray @pDmenuitems$[@Di], "Toy Factory Dungeon"; - setarray @pDprice[@Di], $QW_AW_PRICE; - setarray @pDfee$[@Di], "$QW_AW_FEE"; - setarray @DLevels[@Di], 2; - - setarray @DGat$[@Dref], "xmas_dun01", "xmas_dun02"; - setarray @DLevelName$[@Dref], "Factory Warehouse", "Classifying Room"; - setarray @DXcoords[@Dref], 205, 129; - setarray @DYcoords[@Dref], 16, 133; - setarray @DDepth[@Dref], 0, 1; - - QWS_Make_Dungeon_Menu 25; - -//----------------TURTLE ISTLAND - setarray @pDmenuitems$[@Di], "Turtle Island Dungeon"; - setarray @pDprice[@Di], $QW_AW_PRICE; - setarray @pDfee$[@Di], "$QW_AW_FEE"; - setarray @DLevels[@Di], 4; - - setarray @DGat$[@Dref], "tur_dun01", "tur_dun02", "tur_dun03", "tur_dun04"; - setarray @DLevelName$[@Dref], "Outside", "Level 1", "Level 2", "Level 3"; - setarray @DXcoords[@Dref], 161, 148, 132, 100; - setarray @DYcoords[@Dref], 34, 256, 190, 192; - setarray @DDepth[@Dref], 0, 0, 1, 2; - - QWS_Make_Dungeon_Menu 26; - -//----------------UMBALA - setarray @pDmenuitems$[@Di], "Umbala Dungeon"; - setarray @pDprice[@Di], $QW_OW_PRICE; - setarray @pDfee$[@Di], "$QW_OW_FEE"; - setarray @DLevels[@Di], 3; - - setarray @DGat$[@Dref], "um_dun01", "um_dun02", "yggdrasil01"; - setarray @DLevelName$[@Dref], "Carpenter's Shop in The Tree", "Passage to a Foreign World", "Hvergelmir's Fountain"; - setarray @DXcoords[@Dref], 205, 48, 40; - setarray @DYcoords[@Dref], 26, 30, 63; - setarray @DDepth[@Dref], 0, 1, 2; - - QWS_Make_Dungeon_Menu 27; - -//----------------Cancel - setarray @pDmenuitems$[@Di], "Cancel"; - setarray @pDprice[@Di], 0; - - set @Dmenulist$[@Dj],@pDmenuitems$[@Di]; - set @Dmenuref[@Dj],57005; // 57005='dead' in hex - return; - -//----------------Make Dungeon Menu Function - -function QWS_Make_Dungeon_Menu { - set @tempdungeonmenubin,1; - if (getarg(0) == 0) goto menu_item; - set @temploopdungeonmenu,0; - do { - set @tempdungeonmenubin, @tempdungeonmenubin * 2; - set @temploopdungeonmenu, @temploopdungeonmenu + 1; - }while (getarg(0) > @temploopdungeonmenu); -// check marker and make menu item -menu_item: - if ((@tempdungeonmenubin & ##QWS_D_Unlock) != @tempdungeonmenubin) { - setarray @DLocRef[@Di], @Dref; - set @Dref, @Dref+@DLevels[@Di]; - set @Di,@Di+1; - return; - } - if ($QW_MapUserShow == 1) { - set @tempmapusers,0; - set @mapusersloop,0; - do { - set @tempmapusers,(getmapusers(@DGat$[@Dref+@mapusersloop]) + @tempmapusers); - set @mapusersloop, (@mapusersloop + 1); - } while (@DLevels[@Di] > @mapusersloop); - if (@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" ["+@tempmapusers+"] -> "+@pDprice[@Di]; - if (@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" ["+@tempmapusers+"]"; - set @Dmenuref[@Dj],@Di; - set @Dj,@Dj+1; - setarray @DLocRef[@Di], @Dref; - set @Dref, @Dref+@DLevels[@Di]; - set @Di,@Di+1; - return; - } - if (@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di]; - if (@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]; - set @Dmenuref[@Dj],@Di; - set @Dj,@Dj+1; - setarray @DLocRef[@Di], @Dref; - set @Dref, @Dref+@DLevels[@Di]; - set @Di,@Di+1; - return; -} -} - -function script QWS_DLarray { -//----------------Start building Menu - set @DWref,@DLocRef[@DwarpMenu]; // reference to the arrays with leveldata - set @DWi,0; // loop counter - set @DWj,0; // menu lines counter - cleararray @DWLmenulist$[0],"",20; // Clearing the array to get rid off ghost items in menu - do { - if ($QW_DL == 0)||($QW_DDL >= @DDepth[@DWref]) { - set @warpprice, (@pDprice[@DwarpMenu]+ (getd(@pDfee$[@DwarpMenu])*@DDepth[@DWref])); - if (@warpprice != 0)&&($QW_MapUserShow == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" -> "+@warpprice; - if (@warpprice == 0)&&($QW_MapUserShow == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]; - if (@warpprice != 0)&&($QW_MapUserShow == 1) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" ["+getmapusers(@DGat$[@DWref])+"] -> "+@warpprice; - if (@warpprice == 0)&&($QW_MapUserShow == 1) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" ["+getmapusers(@DGat$[@DWref])+"]"; - set @DWLmenuref[@DWj],@DWref; - set @DWj,@DWj+1; - } - set @DWref, @DWref+1; - set @DWi,@DWi+1; - } while (@DWi < @DLevels[@DwarpMenu]); - set @DWLmenulist$[@DWj], "Exit"; - set @DWLmenuref[@DWj],57005; // 57005='dead' in hex - return; -} - -//================Dungeon=Warpras=That=Only=Unlock================= - -function script QWS_Dungeon_Warpra { - function QWS_D_getbin; - function QWS_D_setbin; - - if ((QWS_D_getbin(getarg(0)) == 0) && (getarg(1) != "")) { - mes "[Warpra]"; - mes getarg(1)+" unlocked!"; - QWS_D_setbin(getarg(0)); - return; - } else if (QWS_D_getbin(getarg(0)) == 1) { - mes "[Warpra]"; - mes "Sorry, I can only unlock this location."; - } else - debugmes "QWS_Dungeon_Warpra error, improper syntax?"; - return; - -function QWS_D_setbin { - set @tempsetbindata,1; - if (getarg(0) == 0) goto binset; - set @temploopsetbin,0; - do { - set @tempsetbindata, @tempsetbindata * 2; - set @temploopsetbin, @temploopsetbin + 1; - } while (getarg(0) > @temploopsetbin); -binset: - set ##QWS_D_Unlock,(##QWS_D_Unlock | @tempsetbindata); - return; -} - -function QWS_D_getbin { - set @tempgetbindata,1; - if (getarg(0) == 0) goto binget; - set @temploopgetbin,0; - do { - set @tempgetbindata, @tempgetbindata * 2; - set @temploopgetbin, @temploopgetbin + 1; - } while (getarg(0) > @temploopgetbin); -binget: - if ((@tempgetbindata & ##QWS_D_Unlock) == @tempgetbindata) return 1; - return 0; -} -} - -//==========================Town=Warpras=========================== - -function script QWS_Town_Warpra { - function QWS_T_getbin; - function QWS_T_setbin; - - if ((QWS_T_getbin(getarg(0)) == 0) && (getarg(1) != "")) { - mes "[Warpra]"; - mes getarg(1)+" unlocked!"; - QWS_T_setbin(getarg(0)); - return; - } else if (QWS_T_getbin(getarg(0)) == 1) { - callfunc "Q_Warpra",0; - } else - debugmes "QWS_Town_Warpra error, improper syntax ?"; - return; - -function QWS_T_setbin { - set @tempsetbindata,1; - if (getarg(0) == 0) goto binset; - set @temploopsetbin,0; - do { - set @tempsetbindata, @tempsetbindata * 2; - set @temploopsetbin, @temploopsetbin + 1; - } while (getarg(0) > @temploopsetbin); -binset: - set ##QWS_T_Unlock,(##QWS_T_Unlock | @tempsetbindata); - return; -} - -function QWS_T_getbin { - set @tempgetbindata,1; - if (getarg(0) == 0) goto binget; - set @temploopgetbin,0; - do { - set @tempgetbindata, @tempgetbindata * 2; - set @temploopgetbin, @temploopgetbin + 1; - } while (getarg(0) > @temploopgetbin); -binget: - if ((@tempgetbindata & ##QWS_T_Unlock) == @tempgetbindata) return 1; - return 0; -} -} -//============================Warpras============================== - -- script Warpra#0 FAKE_NPC,{ callfunc "Q_Warpra",1; } -alb2trea,73,101,4 duplicate(Warpra#0) Warpra#1 4_F_KAFRA5 -ama_fild01,178,325,1 duplicate(Warpra#0) Warpra#2 4_F_KAFRA5 -gef_fild10,71,339,4 duplicate(Warpra#0) Warpra#3 4_F_KAFRA5 -izlu2dun,104,82,4 duplicate(Warpra#0) Warpra#4 4_F_KAFRA5 -mjolnir_02,85,363,4 duplicate(Warpra#0) Warpra#5 4_F_KAFRA5 -moc_fild04,207,331,4 duplicate(Warpra#0) Warpra#6 4_F_KAFRA5 -moc_fild19,106,97,4 duplicate(Warpra#0) Warpra#7 4_F_KAFRA5 -moc_ruins,64,166,4 duplicate(Warpra#0) Warpra#8 4_F_KAFRA5 -niflheim,197,192,3 duplicate(Warpra#0) Warpra#9 4_F_KAFRA5 -pay_arche,39,135,4 duplicate(Warpra#0) Warpra#10 4_F_KAFRA5 -prt_fild05,273,215,4 duplicate(Warpra#0) Warpra#11 4_F_KAFRA5 -tur_dun01,148,239,4 duplicate(Warpra#0) Warpra#12 4_F_KAFRA5 -valkyrie,48,35,0 duplicate(Warpra#0) Warpra#13 4_F_KAFRA5 -yuno_fild03,37,135,4 duplicate(Warpra#0) Warpra#14 4_F_KAFRA5 - -alberta,32,240,4 script Warpra#15 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",1,"Alberta Town"; close; } -aldebaran,146,118,4 script Warpra#16 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",2,"Aldebaran Town"; close; } -ayothaya,216,171,5 script Warpra#17 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",4,"Ayotaya Town"; close; } -amatsu,193,81,1 script Warpra#18 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",3,"Amatsu Town"; close; } -comodo,195,158,4 script Warpra#19 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",5,"Comodo Town"; close; } -einbroch,229,196,5 script Warpra#20 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",7,"Einbroch Town"; close; } -einbech,173,131,5 script Warpra#21 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",6,"Einbech Town"; close; } -geffen,116,66,4 script Warpra#22 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",8,"Geffen Town"; close; } -gonryun,152,130,4 script Warpra#23 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",9,"Gonryun Town"; close; } -hugel,90,127,5 script Warpra#24 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",10,"Hugel Town"; close; } -jawaii,107,182,5 script Warpra#25 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",12,"Jawaii Town"; close; } -izlude,132,116,4 script Warpra#26 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",11,"Izlude Town"; close; } -lighthalzen,153,100,5 script Warpra#27 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",13,"Lighthalzen Town"; close; } -louyang,211,106,4 script Warpra#28 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",14,"Louyang Town"; close; } -morocc,157,95,4 script Warpra#29 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",16,"Morroc Town"; close; } -nif_fild01,319,77,1 script Warpra#30 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",17,"Niflheim Town"; close; } -payon,183,110,4 script Warpra#31 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",18,"Payon Town"; close; } -prontera,147,172,5 script Warpra#32 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",0,"Prontera Town"; close; } -umbala,133,130,4 script Warpra#33 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",19,"Umbala Town"; close; } -xmas,151,136,4 script Warpra#34 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",15,"Lutie Town"; close; } -yuno,138,162,4 script Warpra#35 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",20,"Yuno Town"; close; } -brasilis,201,222,4 script Warpra#36 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",21,"Brasilis Town"; close; } -dicastes01,194,194,6 script Warpra#37 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",22,"El Dicastes Town"; close; } -manuk,262,177,4 script Warpra#38 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",23,"Manuk Town"; close; } -mora,110,100,4 script Warpra#39 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",24,"Mora Town"; close; } -moscovia,216,196,6 script Warpra#40 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",25,"Moscovia Town"; close; } -rachel,135,116,4 script Warpra#41 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",26,"Rachel Town"; close; } -splendide,205,153,4 script Warpra#42 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",27,"Splendide Town"; close; } -veins,214,123,4 script Warpra#43 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",28,"Veins Town"; close; } -dewata,194,178,6 script Warpra#44 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",29,"Dewata Town"; close; } -eclage,107,37,4 script Warpra#45 4_F_KAFRA5,{ callfunc "QWS_Town_Warpra",30,"Eclage Town"; close; } - -abyss_02,274,266,1 script Warpra Helper#0 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",0,"Abyss Lake"; close; } -ama_dun02,192,118,5 script Warpra Helper#1 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",1,"Amatsu Dungeon"; close; } -anthell02,170,165,3 script Warpra Helper#2 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",2,"Ant Hell Dungeon"; close; } -ayo_dun02,258,193,5 script Warpra Helper#3 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",3,"Ayotaya Dungeon"; close; } -ein_dun02,292,282,1 script Warpra Helper#4 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",8,"Einbech Dungeon"; close; } -iz_dun03,202,47,2 script Warpra Helper#5 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",4,"Byalan Dungeon"; close; } -c_tower3,129,106,4 script Warpra Helper#6 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",5,"Clock Tower Dungeon"; close; } -mjo_dun02,39,25,4 script Warpra Helper#7 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",6,"Coal Mine Dungeon"; close; } -prt_sewb2,176,30,3 script Warpra Helper#8 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",7,"Culvert Dungeon"; close; } -gefenia03,137,34,0 script Warpra Helper#9 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",9,"Gefenia Dungeon"; close; } -gef_dun02,218,61,2 script Warpra Helper#10 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",10,"Gefen Dungeon"; close; } -glast_01,371,308,3 script Warpra Helper#11 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",11,"Glast Heim Dungeon"; close; } -gon_dun01,167,273,4 script Warpra Helper#12 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",12,"Gonryun Dungeon"; close; } -juperos_02,127,154,5 script Warpra Helper#13 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",14,"Juperos Cave"; close; } -kh_dun01,14,224,3 script Warpra Helper#14 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",28,"Kiel Dungeon"; close; } -lhz_dun02,156,151,5 script Warpra Helper#15 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",15,"Lighthalzen Bio Lab"; close; } -lou_dun02,168,264,4 script Warpra Helper#16 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",16,"Louyang Dungeon"; close; } -mag_dun02,46,41,3 script Warpra Helper#17 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",17,"Magma Dungeon"; close; } -odin_tem01,115,148,3 script Warpra Helper#18 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",18,"Odin Temple"; close; } -orcsdun01,185,11,3 script Warpra Helper#19 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",19,"Orc Dungeon"; close; } -pay_dun03,162,143,3 script Warpra Helper#20 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",20,"Payon Dungeon"; close; } -moc_pryd02,101,95,3 script Warpra Helper#21 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",21,"Pyramides Dungeon"; close; } -in_sphinx2,274,268,1 script Warpra Helper#22 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",22,"Sphinx Dungeon"; close; } -tha_t07,111,162,3 script Warpra Helper#23 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",24,"Thanatos Tower"; close; } -treasure02,104,40,3 script Warpra Helper#24 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",23,"Sunken Ship Dungeon"; close; } -xmas_dun02,124,131,3 script Warpra Helper#25 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",25,"Toy Factory Dungeon"; close; } -um_dun02,44,28,3 script Warpra Helper#26 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",27,"Umbala Dungeon"; close; } -tur_dun02,162,23,3 script Warpra Helper#27 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",26,"Turtle Island Dungeon"; close; } -prt_maze02,102,69,4 script Warpra Helper#28 4_F_KAFRA6,{ callfunc "QWS_Dungeon_Warpra",13,"Hidden Dungeon"; close; } diff --git a/npc/custom/etc/rpsroulette.txt b/npc/custom/etc/rpsroulette.txt deleted file mode 100644 index 331c0f0af..000000000 --- a/npc/custom/etc/rpsroulette.txt +++ /dev/null @@ -1,127 +0,0 @@ -//===== Hercules Script ====================================== -//= Rock Scissors Roulette -//===== By: ================================================== -//= acky -//===== Current Version: ===================================== -//= 1.2 -//===== Compatible With: ===================================== -//= Hercules SVN -//===== Description: ========================================= -//= Plays a hybrid Russian Roulette Rock Scissors Paper game. -//===== Additional Comments: ================================= -//= Prizes customizable, Added emotions. -//= 1.2 Fixes by Blackthunder and me [Poki#3] -//============================================================ - -cmd_in02,182,126,2 script Crazy Boris 4_M_03,{ - mes "Hey you! Up for Rock Scissors Roulette?"; - next; - switch (select("Let me play.","Explain the rules.","Leave")) { - case 1: - break; - case 2: - mes "Ok here are the rules:"; - mes "I have with me a ^FF00006^000000 chamber pistol with ^FF00001^000000 round. First we play ^FF0000Scissors ^00FF00Paper ^0000FFRock^000000. The loser pulls the trigger. The winner is whoever comes out best."; - mes "Beat me to win a prize."; - next; - if (select("Let me play.","No thanks.") == 1) { - mes "Ok here we go..."; - break; - } - // else fall through - case 3: - mes "Pansy."; - close; - } - .@counter = 1; - while(true) { - mes "Rock... Paper..."; - - .@choice = select("^0000FFROCK!","^0000FFSCISSORS!","^0000FFPAPER!"); - if (.@lastchoice == .@choice) { - if (.@lastchoice == 1) - .@opponent = rand(1,3); - else if (.@lastchoice == 2) - .@opponent = rand(1,2); - else - .@opponent = rand(2,3); - } else { - .@opponent = rand(1,3); - } - .@lastchoice = .@choice; - - if (.@opponent == 1) - emotion e_rock; - else if (.@opponent == 2) - emotion e_scissors; - else - emotion e_paper; - - if (.@opponent == .@choice) { - // SAME - mes "Draw! Again!"; - continue; - } - - if ((.@choice == 1 && .@opponent == 3) - || (.@choice == 2 && .@opponent == 1) - || (.@choice == 3 && .@opponent == 2) - ) { - // LOSE - emotion e_heh; - mes "Boorah! You Lose!"; - next; - .@win = false; - } else { - //WIN - mes "Damnit, You Win!"; - emotion e_swt2; - next; - .@win = true; - } - - mes .@counter +" of 6"; - if (.@counter == 6) - mes "Say your prayers"; - .@pull = rand(1, 7 - .@counter); - ++.@counter; - next; - if (.@pull > 1) { - emotion e_pif; - mes "*^0000FFClick^000000* whew..."; - continue; - } - if (!.@win) { - specialeffect EF_SUI_EXPLOSION; - mes "*^0000FFClick^000000* *^FF0000BANG^000000*"; - mes "You're dead!"; - emotion e_gg; - Sp = 0; - unitkill getcharid(CHAR_ID_ACCOUNT); - close; - } - specialeffect EF_SUI_EXPLOSION; - mes "*^0000FFClick^000000* *^FF0000BANG^000000*"; - mes "OWWW @#$%^!! THAT HURT LIKE HELL!!"; - emotion e_omg; - next; - mes "Congratulations! You have won..."; - switch (rand(1,10)) { - case 1: setarray .@reward[0], 10,984; break; - case 3: setarray .@reward[0],100,601; break; // 100x Fly Wings - case 4: setarray .@reward[0], 8,603; break; // 8x Old Blue Box - case 5: setarray .@reward[0], 4,617; break; // 4x Old Violet Box - case 6: setarray .@reward[0], 1,616; break; // 1x Old Card Album - case 7: setarray .@reward[0], 10,604; break; // 10x Dead Branch - case 8: setarray .@reward[0], 3,969; break; // 3x Gold - case 10: setarray .@reward[0],20,505; break; // 20x Blue Potion - case 2: - case 9: - setarray .@reward[0], 10,985; - } - mes .@reward[0] +"x "+ getitemname(.@reward[1]) +"!"; - getitem .@reward[1], .@reward[0]; - close; - } - end; -} diff --git a/npc/custom/etc/shifty_assassin.txt b/npc/custom/etc/shifty_assassin.txt deleted file mode 100644 index 4acf7c8ac..000000000 --- a/npc/custom/etc/shifty_assassin.txt +++ /dev/null @@ -1,188 +0,0 @@ -//===== Hercules Script ====================================== -//= Shifty Assassin -//===== By: ================================================== -//= acky -//===== Current Version: ===================================== -//= 1.1.2 -//===== Description: ========================================= -//= Players buy ninjas to assassinate other players -//===== Additional Comments: ================================= -//= 1.1.1 Changed all gmcommand to atcommand as Poki#3 suggested. [Vicious] -//= 1.1.2 Updated WoE Check. [Paradox924X] -//============================================================ - -morocc,148,86,5 script Shifty Assassin 4_F_JOB_ASSASSIN,{ - set $ninja_price,250000; - - freeloop(true); - while (true) { - mes "[Shifty Assassin]"; - mes "What do you want?"; - next; - switch (select("Buy Ninjas", "Assassinate somebody", "Check your Ninjas", getgmlevel() > 90 ? "Add Ninjas" : "", "Cancel")) { - case 1: - mes "[Shifty Assassin]"; - mes "How many ninjas do you want buy?"; - mes "There are ^0000FF" + $ninja_avail + "^000000 ninjas available."; - mes "They cost ^0000FF" + $ninja_price + " zeny ^000000each."; - - set @buy,0; - input @buy; - next; - if ($ninja_avail < 1) { - mes "[Shifty Assassin]"; - mes "There are no ninjas left to buy."; - close; - } - if ($ninja_avail < @buy) { - mes "[Shifty Assassin]"; - mes "There aren't that many ninjas to buy."; - next; - continue; - } - set @price,@buy*$ninja_price; - if (Zeny < @price ) { - mes "[Shifty Assassin]"; - mes "You do not have enough zeny."; - close; - } - - mes "[Shifty Assassin]"; - mes "That will cost you ^0000FF" + @price + " zeny^000000."; - next; - if (select("Continue", "Cancel") != 1) { - callsub(OnExit); - end; - } - Zeny -= @price; - set #ninjas,#ninjas+@buy; - set $ninja_avail,$ninja_avail-@buy; - - mes "[Shifty Assassin]"; - mes "Thank you."; - close; - case 2: - if (agitcheck()) { - // NINJAS BUSY FOR WOE // - mes "[Shifty Assassin]"; - mes "Sorry, all my ninjas are busy doing War of Emperium."; - close; - } - mes "[Shifty Assassin]"; - mes "Enter the name of the target."; - mes "^FF0000Type the name exactly, otherwise I won't be able to find the victim.^000000"; - next; - if (select("Continue", "Cancel") != 1) { - callsub(OnExit); - end; - } - set @name$,"0"; - input @name$; - next; - mes "[Shifty Assassin]"; - mes "Active Ninjas: "+#ninjas; - mes "Resting Ninjas: "+#ninjasr; - mes "How many do you want to send?"; - set @number,0; - input @number; - if (@number < 1) { - mes "[Shifty Assassin]"; - mes "You can't kill anyone without ninjas."; - next; - continue; - } - if (@number > #ninjas) { - mes "[Shifty Assassin]"; - mes "You do not have that many ninjas."; - next; - continue; - } - if (@number > 10) { - mes "[Shifty Assassin]"; - mes "You can only send 10 ninjas max."; - next; - continue; - } - set @chance,rand (1,12); - set #ninjas,#ninjas-@number; - set #ninjas,#ninjas+#ninjasr; - set #ninjasr,0; - if (@number < @chance) { - // FAILED ATTACK // - mes "Sending ninjas now."; - next; - mes "[Shifty Assassin]"; - set @ninjasurvived,rand (1,@number); - set #ninjasr,@number-@ninjasurvived; - mes "Your attack failed and only ^FF0000" + #ninjasr + "^000000 Ninjas survived."; - - announce @name$+" has survived " + strcharinfo(PC_NAME) +"'s Ninja attack.",8; - close; - } - // SUCCESSFUL ATTACK // - mes "Sending ninjas now."; - next; - mes "[Shifty Assassin]"; - set @ninjasurvived,rand (1,@number); - set #ninjasr,@number-@ninjasurvived; - mes "Your attack succeeded but only ^FF0000" + #ninjasr + "^000000 Ninjas survived."; - - atcommand strcharinfo(PC_NAME) + "@kill "+@name$; - announce @name$+" has been assassinated by " + strcharinfo(PC_NAME) +"'s Ninjas.",bc_npc; - close; - case 3: - mes "[Shifty Assassin]"; - mes "You have:"; - mes "^FF0000" + #ninjas + "^000000 Active Ninjas."; - mes "^0000FF" + #ninjasr + "^000000 Resting Ninjas."; - next; - continue; - case 4: - if (getgmlevel() <= 90) - end; - mes "[Shifty Assassin]"; - mes "How many ninjas do you want to make available?"; - next; - set @add,0; - input @add; - set $ninja_avail,$ninja_avail+@add; - mes @add + " ninjas added."; - close; - case 5: - callsub(OnExit); - end; - } - end; - } - -OnExit: - mes "[Shifty Assassin]"; - mes "Goodbye."; - close; - -// TIMER DELAY NINJA ADDER // -OnClock0600: - set $ninja_avail,$ninja_avail+2; - end; -OnClock1200: - set $ninja_avail,$ninja_avail+2; - end; -OnClock1500: - set $ninja_avail,$ninja_avail+2; - end; -OnClock1800: - set $ninja_avail,$ninja_avail+3; - end; -OnClock1900: - set $ninja_avail,$ninja_avail+2; - end; -OnClock2000: - set $ninja_avail,$ninja_avail+2; - end; -OnClock0000: - set $ninja_avail,$ninja_avail+2; - end; -OnInit: - set $ninja_avail,$ninja_avail+1; - end; -} diff --git a/npc/custom/etc/stock_market.txt b/npc/custom/etc/stock_market.txt deleted file mode 100644 index 465840dfe..000000000 --- a/npc/custom/etc/stock_market.txt +++ /dev/null @@ -1,782 +0,0 @@ -//===== Hercules Script ====================================== -//= Stock Market Game -//===== By: ================================================== -//= acky -//===== Current Version: ===================================== -//= 1.3.1 -//===== Description: ========================================= -//= NPC for a stock market game. -//===== Additional Comments: ================================= -//= GM Must activate the NPC before use. -//= Fixed MAJOR exploit. - players could buy for free -//= Low prices likely to rise, High prices likely to drop -//= Small fix by Galeon -//= Lupus: This script lets players make 40,000,000z a day -//= so use it on your own risk -//============================================================ - -- script sharenames FAKE_NPC,{ - end; -OnInit: - // Sets the names of the shares // - set $S1N$,"JIN"; - set $S2N$,"VNG"; - set $S3N$,"SHA"; - set $S4N$,"RGC"; - set $S5N$,"PSC"; - set $S6N$,"GNG"; - set $S7N$,"XRO"; - set $S8N$,"GRM"; - set $S9N$,"DOP"; - set $S10N$,"POR"; - - // Transaction fee // - set $S_Trans,1500; - - // Min & Max buyable // - set $S_BuyMin,1; - set $S_BuyMax,1000000; - end; - - // Average Price (Your start prices) // - set $S_Avg,100; - - // Set times of fluctuation // -OnClock1100: - set $S_LastUpd$,"12:00"; - goto S_Fluc; - end; - -OnClock0000: - set $S_LastUpd$,"00:00"; - goto S_Fluc; - end; - -OnClock0600: - set $S_LastUpd$,"06:00"; - goto S_Fluc; - end; - -OnClock1800: - set $S_LastUpd$,"18:00"; - goto S_Fluc; - end; - -OnClock2100: - set $S_LastUpd$,"21:00"; - goto S_Fluc; - end; - -OnClock0900: - set $S_LastUpd$,"09:00"; - goto S_Fluc; - end; - -OnClock1500: - set $S_LastUpd$,"15:00"; - goto S_Fluc; - end; - -S_Fluc: - set $fluc,rand (-6,6); - set $S1B,$S1; - set $S1,$S1+$fluc; - if ($S1 < 25) set $S1,$S1+3; - if ($S1 < 50) set $S1,$S1+2; - if ($S1 > 150) set $S1,$S1-2; - if ($S1 > 175) set $S1,$S1-3; - if ($S1 < 1) set $S1,1; - - set $fluc,rand (-6,6); - set $S2B,$S2; - set $S2,$S2+$fluc; - if ($S2 < 25) set $S2,$S2+3; - if ($S2 < 50) set $S2,$S2+2; - if ($S2 > 150) set $S2,$S2-2; - if ($S2 > 175) set $S2,$S2-3; - if ($S2 < 1) set $S2,1; - - set $fluc,rand (-6,6); - set $S3B,$S3; - set $S3,$S3+$fluc; - if ($S3 < 25) set $S3,$S3+3; - if ($S3 < 50) set $S3,$S3+2; - if ($S3 > 150) set $S3,$S3-2; - if ($S3 > 175) set $S3,$S3-3; - if ($S3 < 1) set $S3,1; - - set $fluc,rand (-6,6); - set $S4B,$S4; - set $S4,$S4+$fluc; - if ($S4 < 25) set $S4,$S4+3; - if ($S4 < 50) set $S4,$S4+2; - if ($S4 > 150) set $S4,$S4-2; - if ($S4 > 175) set $S4,$S4-3; - if ($S4 < 1) set $S4,1; - - set $fluc,rand (-6,6); - set $S5B,$S5; - set $S5,$S5+$fluc; - if ($S5 < 25) set $S5,$S5+3; - if ($S5 < 50) set $S5,$S5+2; - if ($S5 > 150) set $S5,$S5-2; - if ($S5 > 175) set $S5,$S5-3; - if ($S5 < 1) set $S5,1; - - set $fluc,rand (-6,6); - set $S6B,$S6; - set $S6,$S6+$fluc; - if ($S6 < 25) set $S6,$S6+3; - if ($S6 < 50) set $S6,$S6+2; - if ($S6 > 150) set $S6,$S6-2; - if ($S6 > 175) set $S6,$S6-3; - if ($S6 < 1) set $S6,1; - - set $fluc,rand (-6,6); - set $S7B,$S7; - set $S7,$S7+$fluc; - if ($S7 < 25) set $S7,$S7+3; - if ($S7 < 50) set $S7,$S7+2; - if ($S7 > 150) set $S7,$S7-2; - if ($S7 > 175) set $S7,$S7-3; - if ($S7 < 1) set $S7,1; - - set $fluc,rand (-6,6); - set $S8B,$S8; - set $S8,$S8+$fluc; - if ($S8 < 25) set $S8,$S8+3; - if ($S8 < 50) set $S8,$S8+2; - if ($S8 > 150) set $S8,$S8-2; - if ($S8 > 175) set $S8,$S8-3; - if ($S8 < 1) set $S8,1; - - set $fluc,rand (-6,6); - set $S9B,$S9; - set $S9,$S9+$fluc; - if ($S9 < 25) set $S9,$S9+3; - if ($S9 < 50) set $S9,$S9+2; - if ($S9 > 150) set $S9,$S9-2; - if ($S9 > 175) set $S9,$S9-3; - if ($S9 < 1) set $S9,1; - - set $fluc,rand (-6,6); - set $S10B,$S10; - set $S10,$S10+$fluc; - if ($S10 < 25) set $S10,$S10+3; - if ($S10 < 50) set $S10,$S10+2; - if ($S10 > 150) set $S10,$S10-2; - if ($S10 > 175) set $S10,$S10-3; - if ($S10 < 1) set $S10,1; - end; -} - -prontera,140,181,5 script Stock Market::stockmarket 4_M_MANAGER,{ - // Ensures no trading when default prices have not been set // - set @stotal,$S1+$S2+$S3+$S4+$S5+$S6+$S7+$S8+$S9+$S10; - if (@stotal <= 0) { - mes "[Stock Market]"; - mes "Trading is currently closed."; - if (getgmlevel() > 90) - callsub(OnGMOpen); - close; - } - - freeloop(true); - while (true) { - mes "[Stock Market]"; - mes "Last fluctuation: " + $S_LastUpd$; - - // Loss/Gain in price // - set @S1Update,$S1-$S1B; - set @S2Update,$S2-$S2B; - set @S3Update,$S3-$S3B; - set @S4Update,$S4-$S4B; - set @S5Update,$S5-$S5B; - set @S6Update,$S6-$S6B; - set @S7Update,$S7-$S7B; - set @S8Update,$S8-$S8B; - set @S9Update,$S9-$S9B; - set @S10Update,$S10-$S10B; - - // Makes Loss/Gain Red/Green // - if (@S1Update < 0) set @S1Update$,"^FF0000"+@S1Update+"^000000"; - if (@S1Update > 0) set @S1Update$,"^00FF00+"+@S1Update+"^000000"; - if (@S1Update == 0) set @S1Update$,@S1Update; - - if (@S2Update < 0) set @S2Update$,"^FF0000"+@S2Update+"^000000"; - if (@S2Update > 0) set @S2Update$,"^00FF00+"+@S2Update+"^000000"; - if (@S2Update == 0) set @S2Update$,@S2Update; - - if (@S3Update < 0) set @S3Update$,"^FF0000"+@S3Update+"^000000"; - if (@S3Update > 0) set @S3Update$,"^00FF00+"+@S3Update+"^000000"; - if (@S3Update == 0) set @S3Update$,@S3Update; - - if (@S4Update < 0) set @S4Update$,"^FF0000"+@S4Update+"^000000"; - if (@S4Update > 0) set @S4Update$,"^00FF00+"+@S4Update+"^000000"; - if (@S4Update == 0) set @S4Update$,@S4Update; - - if (@S5Update < 0) set @S5Update$,"^FF0000"+@S5Update+"^000000"; - if (@S5Update > 0) set @S5Update$,"^00FF00+"+@S5Update+"^000000"; - if (@S5Update == 0) set @S5Update$,@S5Update; - - if (@S6Update < 0) set @S6Update$,"^FF0000"+@S6Update+"^000000"; - if (@S6Update > 0) set @S6Update$,"^00FF00+"+@S6Update+"^000000"; - if (@S6Update == 0) set @S6Update$,@S6Update; - - if (@S7Update < 0) set @S7Update$,"^FF0000"+@S7Update+"^000000"; - if (@S7Update > 0) set @S7Update$,"^00FF00+"+@S7Update+"^000000"; - if (@S7Update == 0) set @S7Update$,@S7Update; - - if (@S8Update < 0) set @S8Update$,"^FF0000"+@S8Update+"^000000"; - if (@S8Update > 0) set @S8Update$,"^00FF00+"+@S8Update+"^000000"; - if (@S8Update == 0) set @S8Update$,@S8Update; - - if (@S9Update < 0) set @S9Update$,"^FF0000"+@S9Update+"^000000"; - if (@S9Update > 0) set @S9Update$,"^00FF00+"+@S9Update+"^000000"; - if (@S9Update == 0) set @S9Update$,@S9Update; - - if (@S10Update < 0) set @S10Update$,"^FF0000"+@S10Update+"^000000"; - if (@S10Update > 0) set @S10Update$,"^00FF00+"+@S10Update+"^000000"; - if (@S10Update == 0) set @S10Update$,@S10Update; - - // Displays shares & prices // - mes "^21698F"+$S1N$+"^000000" + " " + $S1 + "z (" + @S1Update$ + ")"; - mes "^21698F"+$S2N$+"^000000" + " " + $S2 + "z (" + @S2Update$ + ")"; - mes "^21698F"+$S3N$+"^000000" + " " + $S3 + "z (" + @S3Update$ + ")"; - mes "^21698F"+$S4N$+"^000000" + " " + $S4 + "z (" + @S4Update$ + ")"; - mes "^21698F"+$S5N$+"^000000" + " " + $S5 + "z (" + @S5Update$ + ")"; - mes "^21698F"+$S6N$+"^000000" + " " + $S6 + "z (" + @S6Update$ + ")"; - mes "^21698F"+$S7N$+"^000000" + " " + $S7 + "z (" + @S7Update$ + ")"; - mes "^21698F"+$S8N$+"^000000" + " " + $S8 + "z (" + @S8Update$ + ")"; - mes "^21698F"+$S9N$+"^000000" + " " + $S9 + "z (" + @S9Update$ + ")"; - mes "^21698F"+$S10N$+"^000000" + " " + $S10 + "z (" + @S10Update$ + ")"; - next; - - // GM Menu link // - if (getgmlevel() > 90) { - if (select("GM Menu", "Normal Menu") == 1) - callsub(OnGMMenu); - } - switch (select("Portfolio", "Buy Shares", "Sell Shares", "Cancel")) { - case 1: - mes "[Stock Market]"; - if (#S1 >= 1) { - set @S1,#S1*$S1; - mes $S1N$ + ": " + #S1 + " x " + $S1 + "z = " + @S1 + "z"; - } - if (#S2 >= 1) { - set @S2,#S2*$S2; - mes $S2N$ + ": " + #S2 + " x " + $S2 + "z = " + @S2 + "z"; - } - if (#S3 >= 1) { - set @S3,#S3*$S3; - mes $S3N$ + ": " + #S3 + " x " + $S3 + "z = " + @S3 + "z"; - } - if (#S4 >= 1) { - set @S4,#S4*$S4; - mes $S4N$ + ": " + #S4 + " x " + $S4 + "z = " + @S4 + "z"; - } - if (#S5 >= 1) { - set @S5,#S5*$S5; - mes $S5N$ + ": " + #S5 + " x " + $S5 + "z = " + @S5 + "z"; - } - if (#S6 >= 1) { - set @S6,#S6*$S6; - mes $S6N$ + ": " + #S6 + " x " + $S6 + "z = " + @S6 + "z"; - } - if (#S7 >= 1) { - set @S7,#S7*$S7; - mes $S7N$ + ": " + #S7 + " x " + $S7 + "z = " + @S7 + "z"; - } - if (#S8 >= 1) { - set @S8,#S8*$S8; - mes $S8N$ + ": " + #S8 + " x " + $S8 + "z = " + @S8 + "z"; - } - if (#S9 >= 1) { - set @S9,#S9*$S9; - mes $S9N$ + ": " + #S9 + " x " + $S9 + "z = " + @S9 + "z"; - } - if (#S10 >= 1) { - set @S10,#S10*$S10; - mes $S10N$ + ": " + #S10 + " x " + $S10 + "z = " + @S10 + "z"; - } - set @total,@S1 + @S2 + @S3 + @S4 + @S5 + @S6 + @S7 + @S8 + @S9 + @S10; - mes "Total value: "+@total+"z"; - next; - continue; - case 2: - mes "[Stock Market]"; - mes "Available shares:"; - mes $S1N$; - mes $S2N$; - mes $S3N$; - mes $S4N$; - mes $S5N$; - mes $S6N$; - mes $S7N$; - mes $S8N$; - mes $S9N$; - mes $S10N$; - next; - if (select("Continue", "Cancel") != 1) - continue; - - mes "Enter the name of the share company"; - mes "Transaction fee of ^FF0000" + $S_Trans + "z^000000 will apply."; - set @buyname$,"0"; - input @buyname$; - - set @buyamount,0; - input @buyamount; - // Checks valid number // - if (@buyamount < $S_BuyMin) { - mes "^FF0000Minimum of " + $S_BuyMin + " shares can be bought at a time.^000000"; - next; - continue; - } - if (@buyamount > $S_BuyMax) { - mes "^FF0000Maximum number of " + $S_BuyMax + " shares can be bought at a time.^000000"; - next; - continue; - } - if (Zeny < $S_Trans) { - callsub(OnNoZeny); - continue; - } - Zeny -= $S_Trans; - - if (@buyname$ == $S1N$) { - set @price,@buyamount*$S1; - if (Zeny < @price) { - callsub(OnNoZeny); - continue; - } - set #S1,#S1+@buyamount; - set @price,@buyamount*$S1; - Zeny -= @price; - mes "Bought " + @buyamount + " " + $S1N$ + " shares."; - mes "Lost ^0000FF"+@price+"z^000000."; - next; - } else if (@buyname$ == $S2N$) { - set @price,@buyamount*$S2; - if (Zeny < @price) { - callsub(OnNoZeny); - continue; - } - set #S2,#S2+@buyamount; - Zeny -= @price; - mes "Bought " + @buyamount + " " + $S2N$ + " shares."; - mes "Lost ^0000FF"+@price+"z^000000."; - next; - } else if (@buyname$ == $S3N$) { - set @price,@buyamount*$S3; - if (Zeny < @price) { - callsub(OnNoZeny); - continue; - } - set #S3,#S3+@buyamount; - Zeny -= @price; - mes "Bought " + @buyamount + " " + $S3N$ + " shares."; - mes "Lost ^0000FF"+@price+"z^000000."; - next; - } else if (@buyname$ == $S4N$) { - set @price,@buyamount*$S4; - if (Zeny < @price) { - callsub(OnNoZeny); - continue; - } - set #S4,#S4+@buyamount; - Zeny -= @price; - mes "Bought " + @buyamount + " " + $S4N$ + " shares."; - mes "Lost ^0000FF"+@price+"z^000000."; - next; - } else if (@buyname$ == $S5N$) { - set @price,@buyamount*$S5; - if (Zeny < @price) { - callsub(OnNoZeny); - continue; - } - set #S5,#S5+@buyamount; - Zeny -= @price; - mes "Bought " + @buyamount + " " + $S5N$ + " shares."; - mes "Lost ^0000FF"+@price+"z^000000."; - next; - } else if (@buyname$ == $S6N$) { - set @price,@buyamount*$S6; - if (Zeny < @price) { - callsub(OnNoZeny); - continue; - } - set #S6,#S6+@buyamount; - Zeny -= @price; - mes "Bought " + @buyamount + " " + $S6N$ + " shares."; - mes "Lost ^0000FF"+@price+"z^000000."; - next; - } else if (@buyname$ == $S7N$) { - set @price,@buyamount*$S7; - if (Zeny < @price) { - callsub(OnNoZeny); - continue; - } - set #S7,#S7+@buyamount; - Zeny -= @price; - mes "Bought " + @buyamount + " " + $S7N$ + " shares."; - mes "Lost ^0000FF"+@price+"z^000000."; - next; - } else if (@buyname$ == $S8N$) { - set @price,@buyamount*$S8; - if (Zeny < @price) { - callsub(OnNoZeny); - continue; - } - set #S8,#S8+@buyamount; - Zeny -= @price; - mes "Bought " + @buyamount + " " + $S8N$ + " shares."; - mes "Lost ^0000FF"+@price+"z^000000."; - next; - } else if (@buyname$ == $S9N$) { - set @price,@buyamount*$S9; - if (Zeny < @price) { - callsub(OnNoZeny); - continue; - } - set #S9,#S9+@buyamount; - Zeny -= @price; - mes "Bought " + @buyamount + " " + $S9N$ + " shares."; - mes "Lost ^0000FF"+@price+"z^000000."; - next; - } else if (@buyname$ == $S10N$) { - set @price,@buyamount*$S10; - if (Zeny < @price) { - callsub(OnNoZeny); - continue; - } - set #S10,#S10+@buyamount; - Zeny -= @price; - mes "Bought " + @buyamount + " " + $S10N$ + " shares."; - mes "Lost ^0000FF"+@price+"z^000000."; - next; - } else { - mes "^FF0000Invalid share name.^000000"; - next; - continue; - } - continue; - case 3: - mes "[Stock Market]"; - mes "Enter the name of the share you wish to sell."; - mes "Transaction fee of ^FF0000" + $S_Trans + "z^000000 will apply."; - if (#S1 > 0) mes "^0000FF"+$S1N$+"^FF0000" + " x " + #S1 + " [" + $S1 + "z]"; - if (#S2 > 0) mes "^0000FF"+$S2N$+"^FF0000" + " x " + #S2 + " [" + $S2 + "z]"; - if (#S3 > 0) mes "^0000FF"+$S3N$+"^FF0000" + " x " + #S3 + " [" + $S3 + "z]"; - if (#S4 > 0) mes "^0000FF"+$S4N$+"^FF0000" + " x " + #S4 + " [" + $S4 + "z]"; - if (#S5 > 0) mes "^0000FF"+$S5N$+"^FF0000" + " x " + #S5 + " [" + $S5 + "z]"; - if (#S6 > 0) mes "^0000FF"+$S6N$+"^FF0000" + " x " + #S6 + " [" + $S6 + "z]"; - if (#S7 > 0) mes "^0000FF"+$S7N$+"^FF0000" + " x " + #S7 + " [" + $S7 + "z]"; - if (#S8 > 0) mes "^0000FF"+$S8N$+"^FF0000" + " x " + #S8 + " [" + $S8 + "z]"; - if (#S9 > 0) mes "^0000FF"+$S9N$+"^FF0000" + " x " + #S9 + " [" + $S9 + "z]"; - if (#S10 > 0) mes "^0000FF"+$S10N$+"^FF0000" + " x " + #S10 + " [" + $S10 + "z]"; - set @sellname$,"0"; - input @sellname$; - set @sellamount,0; - input @sellamount; - if (@sellamount < 1) { - mes "^FF0000Invalid integer.^000000"; - next; - continue; - } - - if (Zeny < $S_Trans) { - callsub(OnNoZeny); - continue; - } - Zeny -= $S_Trans; - if (@sellname$ == $S1N$) { - if (@sellamount > #S1) { - callsub(OnSellTooHigh); - continue; - } - set @price,@sellamount*$S1; - set #S1,#S1-@sellamount; - Zeny += @price; - next; - mes "Sold " + @sellamount + " " + $S1N$ + " shares."; - mes "Earned ^0000FF"+@price+"z^000000."; - next; - } else if (@sellname$ == $S2N$) { - if (@sellamount > #S2) { - callsub(OnSellTooHigh); - continue; - } - set @price,@sellamount*$S2; - set #S2,#S2-@sellamount; - Zeny += @price; - next; - mes "Sold " + @sellamount + " " + $S2N$ + " shares."; - mes "Earned ^0000FF"+@price+"z^000000."; - next; - } else if (@sellname$ == $S3N$) { - if (@sellamount > #S3) { - callsub(OnSellTooHigh); - continue; - } - set @price,@sellamount*$S3; - set #S3,#S3-@sellamount; - Zeny += @price; - next; - mes "Sold " + @sellamount + " " + $S3N$ + " shares."; - mes "Earned ^0000FF"+@price+"z^000000."; - next; - } else if (@sellname$ == $S4N$) { - if (@sellamount > #S4) { - callsub(OnSellTooHigh); - continue; - } - set @price,@sellamount*$S4; - set #S4,#S4-@sellamount; - Zeny += @price; - next; - mes "Sold " + @sellamount + " " + $S4N$ + " shares."; - mes "Earned ^0000FF"+@price+"z^000000."; - next; - } else if (@sellname$ == $S5N$) { - if (@sellamount > #S5) { - callsub(OnSellTooHigh); - continue; - } - set @price,@sellamount*$S5; - set #S5,#S5-@sellamount; - Zeny += @price; - next; - mes "Sold " + @sellamount + " " + $S5N$ + " shares."; - mes "Earned ^0000FF"+@price+"z^000000."; - next; - } else if (@sellname$ == $S6N$) { - if (@sellamount > #S6) { - callsub(OnSellTooHigh); - continue; - } - set @price,@sellamount*$S6; - set #S6,#S6-@sellamount; - Zeny += @price; - next; - mes "Sold " + @sellamount + " " + $S6N$ + " shares."; - mes "Earned ^0000FF"+@price+"z^000000."; - next; - } else if (@sellname$ == $S7N$) { - if (@sellamount > #S7) { - callsub(OnSellTooHigh); - continue; - } - set @price,@sellamount*$S7; - set #S7,#S7-@sellamount; - Zeny += @price; - next; - mes "Sold " + @sellamount + " " + $S7N$ + " shares."; - mes "Earned ^0000FF"+@price+"z^000000."; - next; - } else if (@sellname$ == $S8N$) { - if (@sellamount > #S8) { - callsub(OnSellTooHigh); - continue; - } - set @price,@sellamount*$S8; - set #S8,#S8-@sellamount; - Zeny += @price; - next; - mes "Sold " + @sellamount + " " + $S8N$ + " shares."; - mes "Earned ^0000FF"+@price+"z^000000."; - next; - } else if (@sellname$ == $S9N$) { - if (@sellamount > #S9) { - callsub(OnSellTooHigh); - continue; - } - set @price,@sellamount*$S9; - set #S9,#S9-@sellamount; - Zeny += @price; - next; - mes "Sold " + @sellamount + " " + $S9N$ + " shares."; - mes "Earned ^0000FF"+@price+"z^000000."; - next; - } else if (@sellname$ == $S10N$) { - if (@sellamount > #S10) { - callsub(OnSellTooHigh); - continue; - } - set @price,@sellamount*$S10; - set #S10,#S10-@sellamount; - Zeny += @price; - next; - mes "Sold " + @sellamount + " " + $S10N$ + " shares."; - mes "Earned ^0000FF"+@price+"z^000000."; - next; - } else { - mes "^FF0000Invalid Share Name.^000000"; - next; - } - continue; - case 4: - mes "[Stock Market]"; - mes "Goodbye."; - close; - } - } - end; - -OnSellTooHigh: - mes "^FF0000You don't have that many shares.^000000"; - next; - return; - -OnNoZeny: - mes "^FF0000You do not have enough zeny.^000000"; - next; - return; - - // GM MENU // -OnGMMenu: - freeloop(true); - while (true) { - mes "[Stock Market]"; - mes "Master, do you require anything?"; - switch (select("Fluctuate Market", "Reset Prices", "Nothing")) { - case 1: - set $fluc,rand (-6,6); - set $S1B,$S1; - set $S1,$S1+$fluc; - if ($S1 < 25) set $S1,$S1+3; - if ($S1 < 50) set $S1,$S1+2; - if ($S1 > 150) set $S1,$S1-2; - if ($S1 > 175) set $S1,$S1-3; - if ($S1 < 1) set $S1,1; - - set $fluc,rand (-6,6); - set $S2B,$S2; - set $S2,$S2+$fluc; - if ($S2 < 25) set $S2,$S2+3; - if ($S2 < 50) set $S2,$S2+2; - if ($S2 > 150) set $S2,$S2-2; - if ($S2 > 175) set $S2,$S2-3; - if ($S2 < 2) set $S2,1; - - set $fluc,rand (-6,6); - set $S3B,$S3; - set $S3,$S3+$fluc; - if ($S3 < 25) set $S3,$S3+3; - if ($S3 < 50) set $S3,$S3+2; - if ($S3 > 150) set $S3,$S3-2; - if ($S3 > 175) set $S3,$S3-3; - if ($S3 < 1) set $S3,1; - - set $fluc,rand (-6,6); - set $S4B,$S4; - set $S4,$S4+$fluc; - if ($S4 < 25) set $S4,$S4+3; - if ($S4 < 50) set $S4,$S4+2; - if ($S4 > 150) set $S4,$S4-2; - if ($S4 > 175) set $S4,$S4-3; - if ($S4 < 1) set $S4,1; - - set $fluc,rand (-6,6); - set $S5B,$S5; - set $S5,$S5+$fluc; - if ($S5 < 25) set $S5,$S5+3; - if ($S5 < 50) set $S5,$S5+2; - if ($S5 > 150) set $S5,$S5-2; - if ($S5 > 175) set $S5,$S5-3; - if ($S5 < 1) set $S5,1; - - set $fluc,rand (-6,6); - set $S6B,$S6; - set $S6,$S6+$fluc; - if ($S6 < 25) set $S6,$S6+3; - if ($S6 < 50) set $S6,$S6+2; - if ($S6 > 150) set $S6,$S6-2; - if ($S6 > 175) set $S6,$S6-3; - if ($S6 < 1) set $S6,1; - - set $fluc,rand (-6,6); - set $S7B,$S7; - set $S7,$S7+$fluc; - if ($S7 < 25) set $S7,$S7+3; - if ($S7 < 50) set $S7,$S7+2; - if ($S7 > 150) set $S7,$S7-2; - if ($S7 > 175) set $S7,$S7-3; - if ($S7 < 1) set $S7,1; - - set $fluc,rand (-6,6); - set $S8B,$S8; - set $S8,$S8+$fluc; - if ($S8 < 25) set $S8,$S8+3; - if ($S8 < 50) set $S8,$S8+2; - if ($S8 > 150) set $S8,$S8-2; - if ($S8 > 175) set $S8,$S8-3; - if ($S8 < 1) set $S8,1; - - set $fluc,rand (-6,6); - set $S9B,$S9; - set $S9,$S9+$fluc; - if ($S9 < 25) set $S9,$S9+3; - if ($S9 < 50) set $S9,$S9+2; - if ($S9 > 150) set $S9,$S9-2; - if ($S9 > 175) set $S9,$S9-3; - if ($S9 < 1) set $S9,1; - - set $fluc,rand (-6,6); - set $S10B,$S10; - set $S10,$S10+$fluc; - if ($S10 < 25) set $S10,$S10+3; - if ($S10 < 50) set $S10,$S10+2; - if ($S10 > 150) set $S10,$S10-2; - if ($S10 > 175) set $S10,$S10-3; - if ($S10 < 1) set $S10,1; - - set $S_LastUpd$,"GM Fluctuation"; - mes "Market fluctuated."; - close; - case 2: - callsub(OnGMOpen); - continue; - case 3: - break; - } - break; - } - return; - -OnGMOpen: - if (select("Set prices to...", "Cancel") != 1) { - mes "Farewell."; - close; - } - mes "Are you sure you want to reset?"; - mes "^FF0000All share values will become the same.^000000"; - next; - if (select("Yes", "No") != 1) - return; - set @gmset,0; - input @gmset; - set $S1,@gmset; - set $S2,@gmset; - set $S3,@gmset; - set $S4,@gmset; - set $S5,@gmset; - set $S6,@gmset; - set $S7,@gmset; - set $S8,@gmset; - set $S9,@gmset; - set $S10,@gmset; - set $S1B,@gmset; - set $S2B,@gmset; - set $S3B,@gmset; - set $S4B,@gmset; - set $S5B,@gmset; - set $S6B,@gmset; - set $S7B,@gmset; - set $S8B,@gmset; - set $S9B,@gmset; - set $S10B,@gmset; - mes "All prices changed to " + @gmset + "z."; - close; -} diff --git a/npc/custom/events/cluckers.txt b/npc/custom/events/cluckers.txt deleted file mode 100644 index 7047ca00e..000000000 --- a/npc/custom/events/cluckers.txt +++ /dev/null @@ -1,114 +0,0 @@ -//===== Hercules Script ======================================= -//= Cluck! Cluck! Boom! -//===== By: ================================================== -//= Keale -//===== Current Version: ===================================== -//= 1.2a -//===== Description: ========================================= -//= Click the chicken and try retrieve the item at a low -//= chance. If you fail he will nuke, freeze, stone, -//= stun, or make you fall asleep. -//= The prize is configurable and triggered by the NPC. -//===== Additional Comments: ================================= -//= 1.0 First release. -//= 1.1 Using 'switch rand' instead. -//= 1.2 Cleaned and standardized. [Euphy] -//= 1.2a Switched 'atcommand' to 'unitskilluseid'. -//============================================================ - -prontera,156,219,4 script Cluckers 4_NFCOCK,{ - - set .@GMAccess,80; // GM level required to access NPC - - if (.startcluck) { - specialeffect(EF_HIT3, AREA, playerattached()); - switch(rand(15)) { - case 0: npctalk "CLUUUUUUCK!!!"; unitskilluseid getcharid(CHAR_ID_ACCOUNT),"NPC_SELFDESTRUCTION",1; emotion 23; break; - case 1: npctalk "Cluuuuuck!~"; break; - case 2: unitskilluseid getcharid(CHAR_ID_ACCOUNT),"NPC_SELFDESTRUCTION",1; break; - case 3: sc_start SC_FREEZE,10000,0; break; - case 4: npctalk "CLUUUUUUUUUCK!!!"; unitskilluseid getcharid(CHAR_ID_ACCOUNT),"NPC_SELFDESTRUCTION",1; emotion 23; break; - case 5: sc_start SC_SLEEP,10000,0; break; - case 6: sc_start SC_STONE,10000,0; emotion 29; break; - case 7: npctalk "CLUUUUUUCK!!!"; unitskilluseid getcharid(CHAR_ID_ACCOUNT),"NPC_SELFDESTRUCTION",1; emotion 23; break; - case 8: npctalk "Cluck! CLUUUCK!!"; unitskilluseid getcharid(CHAR_ID_ACCOUNT),"NPC_SELFDESTRUCTION",1; emotion 23; break; - case 9: sc_start SC_STUN,10000,0; break; - case 10: sc_start SC_SLEEP,10000,0; emotion 29; break; - case 11: npctalk "Cluck! Cluck!"; break; - case 12: sc_start SC_STUN,10000,0; break; - case 13: unitskilluseid getcharid(CHAR_ID_ACCOUNT),"NPC_SELFDESTRUCTION",1; break; - default: - if (rand(50) < 4) { - npctalk "WOOF!..........."; - specialeffect(EF_SPHERE, AREA, playerattached()); - announce "[Cluck! Cluck! Boom!] " + strcharinfo(PC_NAME) + " squeezed out the prize! Well done!",0; - getitem $cluck_item_id,$cluck_item_amount; - set .startcluck,0; - } else { - npctalk "Cluck! CLUUUCK!!"; - unitskilluseid getcharid(CHAR_ID_ACCOUNT),"NPC_SELFDESTRUCTION",1; - } - break; - } - end; - } - mes "[Cluckers]"; - if (getgmlevel() >= .@GMAccess) { - mes "Cluck cluck! Cluuuuuck? ^FF0000~Hi GM " + strcharinfo(PC_NAME) + ", Wanna play today?~^000000"; - mes "Cluck cluck... CLUCK! ^FF0000~Just tell me what to do!~^000000"; - next; - while(1) switch(select("Start Event", "Check Prize", "Set Prize", "Not today Cluckers")) { - case 1: - mes "[Cluckers]"; - mes "CLUCK! ^FF0000~Sure thing!~^000000"; - emotion 33; - close2; - announce "[Cluck! Cluck! Boom!] is about to start in Prontera!",bc_blue; - initnpctimer; - end; - case 2: - mes "[Cluckers]"; - mes "Cluck, cluck cluck... Cluck! ^FF0000~The current prize is^000000 ^008000"+ $cluck_item_amount +" "+ getitemname($cluck_item_id) +".^000000"; - next; - break; - case 3: - mes "[Cluckers]"; - mes "Cluck cluck? Cluck??? ^FF0000~What should the prize for winning be? Please input the ID.~^000000"; - input $cluck_item_id; - next; - mes "[Cluckers]"; - mes "Cluck? cluuuck? ^FF0000~How many if this item should I give away?~^000000"; - input $cluck_item_amount; - next; - mes "[Cluckers]"; - mes "Cluck cluck..? Cluck. ^FF0000~So, the prize is^000000 ^008000"+ $cluck_item_amount +" "+ getitemname($cluck_item_id) +"^000000? ^FF0000Great.~^000000"; - emotion 33; - next; - break; - case 4: - mes "[Cluckers]"; - mes "Cluck cluck cluck..."; - close; - } - } - mes "Cluck cluck! Cluuuuuck?"; - mes "Cluck...."; - close; - -OnTimer10000: - announce "Please hurry behind the fountain if you want to play with the crazy chicken!",bc_blue; - end; -OnTimer20000: - announce "Cluckers has eaten one of my items! I'm too scared to retrieve it!",bc_blue; - end; -OnTimer30000: - announce "Click the insane chicken and try squeeze out the item, if you're lucky you'll win! Are you ready?",bc_blue; - end; -OnTimer40000: - announce "GO! Click the chicken to get the prize!",bc_blue; - stopnpctimer; - if (!$cluck_item_id) set $cluck_item_id,512; - if (!$cluck_item_amount) set $cluck_item_amount,1; - set .startcluck,1; - end; -} diff --git a/npc/custom/events/disguise.txt b/npc/custom/events/disguise.txt deleted file mode 100644 index fde5e544a..000000000 --- a/npc/custom/events/disguise.txt +++ /dev/null @@ -1,258 +0,0 @@ -//===== Hercules Script ====================================== -//= Disguise Event -//===== By: ================================================== -//= GmOcean -//===== Current Version: ===================================== -//= 5.1 -//===== Additional Comments: ================================= -//= Note: This script requires PCRE to run properly. -//= 5.0 Last update by GmOcean. -//= 5.1 Cleaned and standardized, mostly. [Euphy] -//= 5.2 Fix a bug that causes this event run indefinitely [AnnieRuru] -//============================================================ - -prontera,160,155,4 script Disguise Event 4_M_NFDEADMAN,{ - - // Currently set to run every two hours. - // To change times, edit the OnClock labels below. - - set .@GMLevel,60; // GM level required to access NPC. - set .@n$,"[^0000FFDisguise NPC^000000]"; - - if (getgmlevel()>=.@GMLevel) { - mes .@n$; - mes "Select an option."; - next; - switch(select("Turn ON/OFF Event", "Event Settings")) { - case 1: - mes .@n$; - if (.EventON) { - mes "The Event is currently: [^0000FFON^000000]"; - mes "Would you like to turn it OFF?"; - } else { - mes "The Event is currently: [^FF0000OFF^000000]"; - mes "Would you like to turn it ON?"; - } - if(select("Yes", "No")==2) close; - if (.EventON) { - set .EventON,0; set .Timer,0; - setnpctimer 0; stopnpctimer; - announce "A GM has decided to turn the Disguise Event off. As a result no further prizes will be given.",bc_map | bc_blue; - deletepset 1; - setnpcdisplay "Disguise Event", 4_M_NFDEADMAN; - close; - } - set .EventON,1; set .Timer,1; setnpctimer 0; initnpctimer; - set .ResetCounter,.ResetCounter+1; - announce "The Disguise Event will begin in 3 minutes.",bc_all | bc_blue; - announce "The Event is being held in Prontera.",bc_all | bc_blue; - close; - case 2: - mes .@n$; - mes "Pick a setting to modify."; - next; - switch(select("Monster Display", "Number of Rounds", "Prize Settings")) { - case 1: - setarray .@r$[0],"Disguise as all monsters.","Disguise as MVPs only."; - mes .@n$; - mes "Choose a disguise rule."; - next; - set .Rule, select(implode(.@r$,":")); - mes .@n$; - mes "The Disguise Rule has been set:"; - mes " > ^0055FF"+.@r$[.Rule-1]+"^000000"; - close; - case 2: - mes .@n$; - mes "Input the number of rounds you want the event to last."; - mes "Current number: [^0000FF"+.Rounds+"^000000]"; - next; - input .@Rounds; - set .Rounds,.@Rounds; - mes .@n$; - mes "The number of rounds has been changed to "+.Rounds+"."; - close; - case 3: - mes .@n$; - mes "Input the Item ID of the prize given each round."; - mes "Current item: [^0000FF"+getitemname(.Prize)+"^000000] (ID #"+.Prize+")"; - next; - input .@Prize; - mes .@n$; - if (getitemname(.@Prize)=="" || getitemname(.@Prize)=="null") { - mes "That item does not exist. Please try again."; - close; - } - set .Prize,.@Prize; - mes "Input the amount to be given."; - next; - input .@amount; - mes .@n$; - if (.@amount<=0 || .@amount>=10000) { - mes "That amount is invalid. Using default ammount of 1."; - set .@amount,1; - next; - mes .@n$; - } - set .PrizeAmt,.@amount; - mes "The Prize has been changed successfully."; - mes "Prize: "+.PrizeAmt+"x [^0000FF"+getitemname(.Prize)+"^000000]"; - close; - } - } - } - if (.EventON) end; - mes .@n$; - mes "Welcome."; - mes "How may I be of assistance?"; - if(select("Information", "Nothing, just passing through.")==2) close; - next; - mes .@n$; - mes "This event is quite simple."; - mes "At the start of the event, I will"; - mes "disguise myself as a random"; - mes "monster. You have to shout"; - mes "that monter's name out loud."; - next; - mes "If you are correct, you will receive"; - mes "a prize. If not, keep trying!"; - mes "That's all that there is to this event."; - close; - -OnInit: - set .EventON,0; - set .Wait,0; - set .Winner,0; - set .ResetCounter,0; - set .Rounds,10; - set .Prize,512; - set .PrizeAmt,1; - set .Rule,1; - setarray .MVP[0], OSIRIS, BAPHOMET, DOPPELGANGER, MISTRESS, GOLDEN_BUG, ORK_HERO, DRAKE, EDDGA, MAYA, MOONLIGHT, - PHARAOH, PHREEONI, ORC_LORD, KNIGHT_OF_WINDSTORM, GARM, DARK_LORD, TURTLE_GENERAL, LORD_OF_DEATH, DRACULA, EVENT_BAPHO, - DARK_SNAKE_LORD, INCANTATION_SAMURAI, PORING_V, AMON_RA, TAO_GUNKA, RSX_0806, BACSOJIN_, B_SEYREN, B_EREMES, B_HARWORD, - B_MAGALETA, B_SHECIL, B_KATRINN, B_YGNIZEM, APOCALIPS_H, LADY_TANEE, THANATOS, DETALE, KIEL_, RANDGRIS, - GLOOMUNDERNIGHT, KTULLANUX, ATROCE, G_MAGALETA_, IFRIT, FALLINGBISHOP, BEELZEBUB_, GOPINICH, MOROCC_, KUBLIN, - S_NYDHOG, BOITATA; - if (RENEWAL){ - setarray .MVP[getarraysize(.MVP)], QUEEN_SCARABA, LOST_DRAGON, LEAK, I_QUEEN_SCARABA; - } - set .Blacklist$, "1003,1006,1017,1021,1022,1027,1043,1075,1136,1137,1168," + - "1171,1172,1173,1181,1187,1210,1217,1218,1222,1223,1224,1225,1226,1227,1228," + - "1233,1284,1407,1411,1414,1495,1501,1900,1996,2000,2001,2002,2003,2004," + - "2005,2006,2007,2011,2012,2025,2028,2029,2030,2031,2032,2033,2034,2035," + - "2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049," + - "2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063," + - "2064,2065,2066,2067,2075,2076,2077,2078,2079,2080,2081,2083,2084,2085," + - "2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099," + - "2100,2101,2012,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113," + - "2114,2115,2116,2117,2118,2119,2120,2121,2123,2124,2125,1496,"; - end; -OnClock0000: -OnClock0200: -OnClock0400: -OnClock0600: -OnClock0800: -OnClock1000: -OnClock1200: -OnClock1400: -OnClock1600: -OnClock1800: -OnClock2000: -OnClock2200: - set .ResetCounter,.ResetCounter+1; - set .EventON,1; - set .Timer,1; - set .Wait,1; - announce "The Disguise Event will begin in 3 minutes.",bc_all | bc_blue; - announce "The Event is being held in Prontera.",bc_all | bc_blue; - setnpctimer 0; - initnpctimer; - end; -OnTimer10000: - if (.Timer || .Change) end; - set .Wait,0; - goto iDisguise; - end; -OnTimer30000: - if (.Timer) end; - set .Change,0; - setnpcdisplay "Disguise Event", 4_M_NFDEADMAN; - npctalk "You took too long to guess what I was. Please wait 10 seconds while I disguise again."; - specialeffect EF_DETECT2; - set $MonsterName$,""; - deletepset 1; - stopnpctimer; - setnpctimer 0; - ++.RoundCount; - if (.RoundCount >= .Rounds) { - setnpcdisplay "Disguise Event", 4_M_NFDEADMAN; - .RoundCount = 0; - .Change = 0; - .EventON = 0; - npctalk "Thank you all for playing. That was the last round of the Disguise Event. Come play again later."; - end; - } - initnpctimer; - end; -OnTimer60000: - if (.Timer!=1) end; - announce "The Disguise Event will begin in 2 minutes.",bc_all | bc_blue; - announce "The Event is being held in Prontera.",bc_all | bc_blue; - end; -OnTimer120000: - if (.Timer!=1) end; - announce "The Disguise Event will begin 1 minute.",bc_all | bc_blue; - announce "The Event is being held in Prontera.",bc_all | bc_blue; - end; -OnTimer180000: - if (.Timer!=1) end; - announce "The Disguise Event has begun!",bc_all | bc_blue; - announce "The Event is being held in Prontera.",bc_all | bc_blue; - set .Timer,0; stopnpctimer; - setnpctimer 0; initnpctimer; -iDisguise: - if (.Rule==1) { - set .Winner,0; - set .@monster, rand(SCORPION, PINGUICULA); - if (compare(","+.Blacklist$+"," , ","+.@monster+",")) goto iDisguise; - if (.@monster==.LastMonster) goto iDisguise; - set .LastMonster,.@monster; - set $MonsterName$,getmonsterinfo(.@monster,0); - } - if (.Rule==2) { - set .Winner,0; - set .@monster, rand(getarraysize(.MVP)); - set $MonsterName$,getmonsterinfo(.MVP[.@monster],0); - } - deletepset 1; - defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect"; - activatepset 1; - if (.Rule==1) setnpcdisplay "Disguise Event",.@monster; - if (.Rule==2) setnpcdisplay "Disguise Event",.MVP[.@monster]; - set .Change,1; - setnpctimer 0; - end; -iCorrect: - if (.Winner) { - dispbottom "Someone has already won this round."; - end; - } - set .Winner,1; - set .RoundCount,.RoundCount+1; - deletepset 1; - activatepset 1; - getitem .Prize,.PrizeAmt; - announce strcharinfo(PC_NAME)+" is correct! I was disguised as: "+$MonsterName$+"",bc_map | bc_blue; - if (.RoundCount>=.Rounds) { - setnpcdisplay "Disguise Event", 4_M_NFDEADMAN; - set .RoundCount,0; set .Change,0; set .EventON,0; - setnpctimer 0; stopnpctimer; - npctalk "Thank you all for playing. That was the last round of the Disguise Event. Come play again later."; - end; - } - setnpcdisplay "Disguise Event", 4_M_NFDEADMAN; - set .Change,0; - setnpctimer 0; - end; -} diff --git a/npc/custom/events/hallow06.txt b/npc/custom/events/hallow06.txt deleted file mode 100644 index 7ecfdb817..000000000 --- a/npc/custom/events/hallow06.txt +++ /dev/null @@ -1,121 +0,0 @@ -//===== Hercules Script ====================================== -//= Custom Halloween Event 2006 -//===== By: ================================================== -//= Stryker -//===== Current Version: ===================================== -//= 1.2 -//===== Description: ========================================= -//= Halloween Event Script -//===== Additional Comments: ================================= -//= 1.1 - Added trick to script -//= 1.2 fixed bugs, optimized. Now uses 1 var instead of 3 [Lupus] -//============================================================ - -prontera,151,190,5 script Hallows' Eve Event 1_M_SIGNMCNT,{ - mes "[Hallows' Eve Event]"; - if(Class == Job_Novice){ - mes "I am sorry but you have to got a job to complete the event."; - emotion e_swt,1; - close; - } - if(EVENT_HALWN06&1 && EVENT_HALWN06&2){ - mes "I am sorry but you have already completed the event."; - emotion e_sry; - close; - } - mes "Greetings fellow lively human."; - next; - mes "[Hallows' Eve Event]"; - mes "Halloween is upon us and it is almost time to adventure out into places few dare go."; - next; - mes "[Hallows' Eve Event]"; - mes "Trick or treat, which do you prefer?"; - next; - if (select("Trick", "Treat") == 1) { - mes "[Hallows' Eve Event]"; - if(EVENT_HALWN06&2){ - mes "I'm sorry but you have already had a trick. Why don't you go pick a treat now."; - emotion e_sry; - close; - } - mes "Give me a min..."; - next; - set BaseExp,BaseExp+BaseLevel*1000; - set EVENT_HALWN06,EVENT_HALWN06|2; - - mes "[Hallows' Eve Event]"; - mes "Here is your treat. Your Base EXP has been slightly increased."; - next; - mes "[Hallows' Eve Event]"; - mes "I hope you enjoy your trick and Happy Halloween!"; - close; - } - - mes "[Hallows' Eve Event]"; - if(EVENT_HALWN06&1){ - mes "I'm sorry but you have already had a treat. Why don't you go pick a trick now."; - emotion e_sry; - close; - } - if(!(EVENT_HALWN06&4)){ - mes "Great! This shall be so much fun."; - next; - mes "[Hallows' Eve Event]"; - mes "I will be sending you on a scavenger hunt for items."; - next; - mes "[Hallows' Eve Event]"; - mes "Bring back all the necessary items, and I will create you a treat."; - next; - mes "[Hallows' Eve Event]"; - mes "Not just any normal treat either that you can eat, but it is something you can wear on your head."; - next; - mes "[Hallows' Eve Event]"; - mes "But with all things made, some items are required first."; - mes "The list:"; - mes "1 Hat,"; - mes "30 Pumpkin, and"; - mes "20 Black Piece of Cloth"; - next; - mes "[Hallows' Eve Event]"; - mes "Hurry along now."; - set EVENT_HALWN06,EVENT_HALWN06|4; - close; - } - mes "Did you get the items I requested or do you need to see the list again?"; - next; - switch (select("Got'em", "Don't Have", "See List")) { - case 1: - mes "[Hallows' Eve Event]"; - if((countitem(Hat) < 1) || (countitem(Pumpkin) < 30) || (countitem(Piece_Of_Black_Cloth) < 20)){ - mes "You don't have enough items. Come back when you do."; - emotion e_sry; - close; - } - delitem 2220,1; - delitem 535,30; - delitem 7205,20; - getitem 5134,1; - set EVENT_HALWN06,EVENT_HALWN06|1; - mes "Good job! I hope you are happy with your item."; - emotion e_grat; - next; - mes "[Hallows' Eve Event]"; - mes "Enjoy the rest of your halloween."; - emotion e_scissors,1; - close; - case 2: - mes "[Hallows' Eve Event]"; - mes "Go back out and search for them. Would you like to view the list?"; - next; - if (select("No", "Yes") == 1) - close; - // Fall through - case 3: - mes "[Hallows' Eve Event]"; - mes "I require the following items:"; - mes "1 Hat,"; - mes "30 Pumpkin, and"; - mes "20 Black Piece of Cloth."; - close; - } -} diff --git a/npc/custom/events/mushroom_event.txt b/npc/custom/events/mushroom_event.txt deleted file mode 100644 index b9c54c09e..000000000 --- a/npc/custom/events/mushroom_event.txt +++ /dev/null @@ -1,60 +0,0 @@ -//===== Hercules Script ====================================== -//= Find the Mushroom -//===== By: ================================================== -//= Mysterious -//===== Current Version: ===================================== -//= 3.6a -//===== Description: ========================================= -//= Find the Mushroom - random amount of Mushrooms spawns in random maps. -//= Players need to find these mushrooms and kill them to gain prizes! -//===== Additional Comments: ================================= -//= 3.0 Fully Functional with Rewritten script. [Mysterious] -//= 3.6a Slightly edited. [Euphy] -//============================================================ - -prontera,142,228,6 script Find the Mushroom BLACK_MUSHROOM,{ - mes "[ Find The Mushroom ]"; - if (!.status) - mes "There is no event at the moment!"; - else { - mes "There are "+.Spawn+" Mushrooms left in "+.Map$+"!"; - mes "Find and kill the mushrooms to gain "+getitemname(.Prize)+"!"; - } - if (.status || getgmlevel() < .GM) close; - mes "Start the event?"; - next; - if(select("- No", "- Yes") == 1) close; - donpcevent strnpcinfo(NPC_NAME)+"::OnMinute10"; - mes "[ Find The Mushroom ]"; - mes "Event started!"; - close; - -OnInit: - set .Prize,512; // Reward item ID - set .Amount,10; // Reward item amount - set .GM,60; // GM level required to access NPC - setarray .maps$[0],"izlude","geffen","morocc","prontera"; // Possible maps - end; - -OnMinute10: // Start time (every hour) - if (.status) end; - set .status,1; - set .Spawn,rand(1,10); // How many Mushrooms should spawn? - set .Map$,.maps$[rand(getarraysize(.maps$))]; - killmonster .Map$,"All"; - monster .Map$,0,0,"Please don't kill me!",1084,.Spawn,strnpcinfo(NPC_NAME)+"::OnMobKilled"; - announce "Find the Mushroom : Total of "+.Spawn+" Mushrooms have been spawned in "+.Map$+"!",0; - sleep 2500; - announce "Find the Mushroom : Every Mushroom you kill will give you "+getitemname(.Prize)+"!",0; - end; - -OnMobKilled: - set .Spawn, .Spawn - 1; - getitem .Prize, .Amount; - if (.Spawn) announce "[ "+strcharinfo(PC_NAME)+" ] has killed a Mushroom. There are now "+.Spawn+" Mushroom(s) left.",bc_map; - else { - announce "The Find the Mushroom Event has ended. All the Mushrooms have been killed.",0; - set .status,0; - } - end; -} diff --git a/npc/custom/events/uneasy_cemetery.txt b/npc/custom/events/uneasy_cemetery.txt deleted file mode 100644 index a2e746f20..000000000 --- a/npc/custom/events/uneasy_cemetery.txt +++ /dev/null @@ -1,136 +0,0 @@ -//===== Hercules Script ====================================== -//= Uneasy Prontera Cemetery Quest -//===== By: ================================================== -//= Lupus -//===== Current Version: ===================================== -//= 1.2a (Tested and fully working!) -//===== Description: ========================================= -//= A periodical quest of the Uneasy Cemetery (Kill undead / Prevent their appearance) -//= Every day, at the midnight Prontera receive a wave of Undeads. -//= They come from Uneasy Cemetery of Prontera. To protect the players -//= from the undeads terror you may either kill the enemy. Or supply Mother Mathana -//= with needed amount of Holy Water. Every citizen can take his part in the -//= saving of Prontera city. After some days of quiet life... the Cemetery strikes back. -//===== Additional Comments: ================================= -//= 1.1 More advanced ver. Added some bonus the the one who'd kill the last walking undead -//= 1.2 Added coords to the script to make label OmMobDead working -//= 1.2a Changed item names to item IDs. [Samuray22] -//============================================================ - -prontera,3,3,3 script Uneasy_Check FAKE_NPC,{ - end; - -OnHour00: - set $UNEASY_DL,$UNEASY_DL-1; - set $UNEASY_BL,$UNEASY_BL+30; //add need of HW for 30 bottles per day - if ($UNEASY_BL>666) set $UNEASY_BL,666; //keep needed bottles not <=666 - if ($UNEASY_DL < 0) goto L_Start_Undead; -//The Cemetery is OK yet. - disablenpc "Mother Mathana"; - end; -OnInit: - if ($UNEASY_DL >= 0) disablenpc "Mother Mathana"; - end; - -OnHour06: - killmonster "prontera", "Uneasy_Check::OnZombieDead"; //The Sun kills undead in the morning - end; - -OnHour01: - if ($@UNEASY_MOB > 0) mapannounce "prontera","[Mother Mathana]: In the name of Odin, please finish these roaming undead leftovers!",0; - end; - -OnZombieDead: - set $@UNEASY_MOB,$@UNEASY_MOB-1; - if ($@UNEASY_MOB>0) end; - set $UNEASY_DL,0; - set $UNEASY_H$,strcharinfo(PC_NAME); - if (Sex == SEX_MALE) - mapannounce "prontera","[Mother Mathana]: Brave "+$UNEASY_H$+" has just killed the last undead in Prontera!",0; - else - mapannounce "prontera","[Mother Mathana]: Lady "+$UNEASY_H$+" has just killed the last undead in Prontera!",0; - set JobExp,JobExp+100; - set BaseExp,BaseExp+50; - end; - -L_Start_Undead: - killmonster "prontera", "Uneasy_Check::OnZombieDead"; //kills any left monsters - enablenpc "Mother Mathana"; -//call some monsters in the city - set $@UNEASY_MOB, 65; - areamonster "prontera",0,0,0,0,"Zombie",1015,30,"Uneasy_Check::OnZombieDead"; -//in the Cemetery - monster "prontera",268,349,"Zombie",1015,30,"Uneasy_Check::OnZombieDead"; - monster "prontera",269,350,"Ghoul",1036,5,"Uneasy_Check::OnZombieDead"; -//announce - mapannounce "prontera","[Mother Mathana]: The cememtery has become restless! In the name of Odin, hurry to the Sanctuary! Save the city of Prontera!",0; -} - -prontera,257,313,5 script Mother Mathana 1_F_PRIEST,{ - mes "[Mother Mathana]"; - if ($UNEASY_DL <= 0) goto L_Undead_Walk; - mes "I'm afraid there's something wrong with our old cemetery..."; - if ($UNEASY_H$==strcharinfo(PC_NAME)) mes "But thanks to you, "+$UNEASY_H$+", we'll be able to sleep " + $UNEASY_DL + " nights!"; - if ($UNEASY_H$!=strcharinfo(PC_NAME)) mes "But thanks to "+$UNEASY_H$+"'s support, we've got " + $UNEASY_DL + " easy nights!"; - emotion 0; - close; - -L_Undead_Walk: - if ($UNEASY_DL == 0) mes "THEY could return tomorrow's night again!"; - if ($UNEASY_DL == 0 && $UNEASY_H$==strcharinfo(PC_NAME)) mes "Thank you, "+$UNEASY_H$+"! Now we'll manage to rest till the next midnight!"; - if ($UNEASY_DL == 0 && $UNEASY_H$!=strcharinfo(PC_NAME)) mes "But due to "+$UNEASY_H$+"'s help we'll manage to rest till the next midnight!"; - mes "To calm down the restless cemetery, we should pour all these graves with the Holy Water. But our sisters and broters have run out of it."; - mes "Could you supply us with Holy Water?"; - next; - switch (select("Yes, have all my Holy Water!", "Nope, I need it.", "I don't have any.")) { - case 1: - if (countitem(Holy_Water) < 1) - break; // Not enough - set $UNEASY_BL,$UNEASY_BL-countitem(Holy_Water); - delitem 523,countitem(Holy_Water); - - if ($UNEASY_BL > 0) { - mes "[Mother Mathana]"; - mes "Thank you, good "+strcharinfo(PC_NAME)+", but we still need " + $UNEASY_BL + " more Holy Water bottles."; - close; - } - //set quiet days!!! no more undead for this period! - set $UNEASY_DL,5+((0-$UNEASY_BL)/30); - set $UNEASY_H$,strcharinfo(PC_NAME); - mes "[Mother Mathana]"; - mes "Thank you, "+$UNEASY_H$+"! Now we've got enough Holy Water!"; - next; - mes "[Mother Mathana]"; - mes "Upon pouring the cemetery with that water we'll get " + $UNEASY_DL + " safe nights!"; - next; - killmonster "prontera", "Uneasy_Check::OnZombieDead"; //kills any left monsters - mes "[Mother Mathana]"; - mes "See, "+ $UNEASY_H$ +"? They all are gone now!"; - next; - mes "[Mother Mathana]"; - mes "Our Church is going to thank you personally..."; - next; - if (Sex == SEX_MALE) - mapannounce "prontera","[Mother Mathana]: In the name of Odin we declare handsom "+$UNEASY_H$+" as a Prontera savior!",0; - else - mapannounce "prontera","[Mother Mathana]: In the name of Odin we declare beautiful "+$UNEASY_H$+" as a Prontera savior!",0; - mes "[Mother Mathana]"; - mes "In the name of Odin we bless you and decently present a modest gift just from Mareusis' wine-cellar."; - getitem Blue_Potion,1; - set JobExp,JobExp+100; - set BaseExp,BaseExp+50; - close; - case 2: - mes "[Mother Mathana]"; - mes "I'm afraid the old cemetery is going out of control soon... Please, get us all the Holy Water you can get."; - close; - case 3: - break; // Not enough - } - // Not enough - mes "[Mother Mathana]"; - mes "Alas! We still need " + $UNEASY_BL + " more bottles of Holy Water... Why don't you go and ask other people for some extra Holy Water?"; - mes "The old cemetery is going out of control soon..."; - mes "Please, in the name of Odin, help Prontera city."; - close; -} diff --git a/npc/custom/events/valentinesdayexp.txt b/npc/custom/events/valentinesdayexp.txt deleted file mode 100644 index 33339dcd9..000000000 --- a/npc/custom/events/valentinesdayexp.txt +++ /dev/null @@ -1,276 +0,0 @@ -//===== Hercules Script ====================================== -//= Valentine Event Script + EXP bonus -//===== By: ================================================== -//= Lupus (based on Muad_Dib's work) -//===== Current Version: ===================================== -//= 1.1 -//===== Description: ========================================= -// Close to other official stValentine event (added white chocolate) -// Custom: Handmade choco gives some EXP bonuses to married people -//===== Additional Comments: ================================= -//= WARNING!! To use this event, disable original valentinesday.txt -//= You can use this event from 12 till 16 February 8) [Lupus] -//= 1.1 Removed Duplicates [Silent] -//============================================================ - -// Tine - Valentine Event Chocolate Even Guide ------------------ -prontera,156,172,4 script Tine 1_M_MERCHANT,{ -// Debug info for item effects and tricky conditions 8) -// mes "@dsv: "+@dsv; -// mes "ispartneron()=="+ispartneron(); -// mes "sex == "+Sex; -// if(@dsv == gettime(GETTIME_HOUR)+1) mes "@dsv == gettime(GETTIME_HOUR)+1"; - - mes "[Tine]"; - mes "The legend says that on 14th February... on the Day of Saint Valentine..."; - mes "Only in Run-Midgard kingdom..."; - next; - specialeffect EF_HITBODY; - mes "[Tine]"; - mes "Some married chocolate lovers almost double their experience at trainings!"; - mes "But everything isn't so simply..."; - next; - if (select("Wow! Tell me more!", "Marri... what?") == 2) { - mes "[Tine]"; - mes "Are you a single?"; - mes "Today is a great date to ask your beloved half for marriage!"; - next; - mes "[Tine]"; - mes "The Marriage fee is ridiculous low these days!"; - close; - } - mes "[Tine]"; - mes "The magic effect posesses only handmade chocolate from grand-grand-grand-whoever recipes!"; - next; - mes "[Tine]"; - mes "It being known that Black Handmade Chocolate works on married guys... And the White one on the married girls!"; - mes "If you lose your wedding ring... then alas, it won't work on you."; - next; - mes "[Tine]"; - mes "On having a Chocolate, you should put off your ring then... put it back... And if your partner is online, then magc would last till the next hour!"; - next; - mes "[Tine]"; - mes "Rumors bark that guys and gals have +50% EXP bonuses on FIVE different races of the monsters... Exluding bloody bosses, of course."; - next; - mes "[Tine]"; - mes "There's a fameous confectioner in the Castle of Prontera! He's the one you need."; - close; - -OnInit: - //559,Hand-made_Chocolate - setitemscript 559,"{ itemheal 50,50; if(Sex==0 || @dsv == gettime(GETTIME_HOUR)+1 || ispartneron()==0)end; set @dsv,gettime(GETTIME_HOUR)+1; specialeffect(EF_MAGNUS, AREA, playerattached()); }"; - //560,Hand-made_White_Chocolate - setitemscript 560,"{ itemheal 50,50; if(Sex || @dsv == gettime(GETTIME_HOUR)+1 || ispartneron()==0)end; set @dsv,gettime(GETTIME_HOUR)+1; specialeffect(EF_MAGNUS, AREA, playerattached()); }"; - - //2634,Wedding_Ring_M,Wedding Ring,5,,10,0,,0,,0,127918079,7,1,136,,0,0,0,{ skill 334,1; skill 335,1; skill 336,1; } - setitemscript 2634,"{ skill 334,1; skill 335,1; skill 336,1; if(@dsv == gettime(GETTIME_HOUR)+1 && ispartneron()){ bonus2 bExpAddRace,5,50; bonus2 bExpAddRace,6,50; bonus2 bExpAddRace,7,50; bonus2 bExpAddRace,8,50; bonus2 bExpAddRace,1,50; } }"; - //2635,Wedding_Ring_F,Wedding Ring,5,,10,0,,0,,0,127918079,7,0,136,,0,0,0,{ skill 334,1; skill 335,1; skill 336,1; } - setitemscript 2635,"{ skill 334,1; skill 335,1; skill 336,1; if(@dsv == gettime(GETTIME_HOUR)+1 && ispartneron()){ bonus2 bExpAddRace,0,50; bonus2 bExpAddRace,9,50; bonus2 bExpAddRace,2,50; bonus2 bExpAddRace,3,50; bonus2 bExpAddRace,4,50; } }"; - end; -} - -// Stephen - Valentine Event Chocolate seller ------------------ -alberta,26,243,4 script Stephen#val1 1_M_MERCHANT,{ - mes "[Stephen]"; - mes "Guess what I've got?"; - mes "A tasty treat not easily found in Rune-Midgard...."; - next; - mes "[Stephen]"; - mes "Chocolate!"; - mes "That's right, don't you love chocolate.... I do."; - mes "And you are in luck, because I'm selling them for only 5,000 zeny a piece!"; - next; - if (select("I want some chocolate!", "No thanks.") != 1) { - mes "[Stephen]"; - mes "You don't want any chocolate?"; - mes "I'm telling you! You'll regret it!"; - mes "You better get some now... you won't come across Chocolate like this ever again!"; - mes "Think it over and visit me again sometime."; - close; - } - mes "[Stephen]"; - mes "Hah!"; - mes "I knew it!"; - mes "But I can't sell you more then 5 at once....but, if you really need more...."; - mes "you can come back again."; - mes "So how many do you want?"; - next; - set @needmon,0; - input @flag_num; - if (@flag_num <= 0) goto L_NONE; - if (@flag_num > 5) goto L_ERR; - set @needmon,@flag_num*5000; - if (Zeny < @needmon) goto L_NOTENO; - Zeny -= @needmon; - getitem 558,@flag_num; - mes "[Stephen]"; - mes "There you go!"; - mes "You can give that to someone as a gift, or enjoy it yourself!"; - mes "Mmm....sweet chocolate..."; - mes "Visit me anytime...!"; - close; - -L_ERR: - mes "[Stephen]"; - mes "I'm sorry but I can't give you that many."; -L_NONE: - close; - -L_NOTENO: - mes "[Stephen]"; - mes "I'm sorry but it seems you can't afford to buy these of me."; - close; -} - -// Jainie -- Gives information about Valentine Event ------------------------ -alberta,29,243,4 script Jainie#val1 1_M_INNKEEPER,{ - mes "[Jainie]"; - mes "You know what? The chocolate that my boyfriend sells are from me!"; - mes "I made them by myself. Now I need some Milk for my special White Chocolate."; - next; - mes "[Jainie]"; - mes "You know ... In cetain countries, there's a tradition of presenting chocolates to a person that you love..."; - mes "They call it ^3355FFValentine's Day^000000."; - next; - mes "[Jainie]"; - mes "So I gave him my delicious chocolate..."; - mes "And then he made me cook a lot more..."; - mes "And now he is selling them to everyone."; - mes "I guess he really enjoyed it."; - mes "But, I do feel good when people buy something I have made."; - next; - mes "[Jainie]"; - mes "It would be great if you bought some too..."; - mes "I will be making white chocolates for a while so..."; - next; - if (select("I want some white chocolate!", "No thanks.") != 1) { - mes "[Jainie]"; - mes "You don't like white chocolate?"; - mes "Then buy some Stephen's black one!"; - close; - } - mes "[Jainie]"; - mes "I can't sell you more then 5 at once....but, if you really need more...."; - mes "you can come back again."; - mes "So how many do you want? 1 portion is 4500z + 1 Milk."; - next; - set @needmon,0; - input @flag_num; - if (@flag_num == 0) goto L_NONE; - if (@flag_num > 5) goto L_ERR; - set @needmon,@flag_num*4500; - if (Zeny < @needmon) goto L_NOTENO; - if (countitem(Milk) < @flag_num) goto L_NOMILK; - Zeny -= @needmon; - delitem 519,@flag_num; - getitem 561,@flag_num; - mes "[Jainie]"; - mes "There you go!"; - mes "You can give that to someone as a gift, or enjoy it yourself!"; - mes "Mmm... sweet chocolate..."; - mes "Visit me anytime...!"; - close; - -L_ERR: - mes "[Jainie]"; - mes "I'm sorry but I can't give you that many."; -L_NONE: - close; - -L_NOTENO: - mes "[Jainie]"; - mes "I'm sorry but it seems you can't afford to buy these of me."; - close; - -L_NOMILK: - mes "[Jainie]"; - mes "You need "+@flag_num+" Milk for "+@flag_num+" portions of my special White Chocolate..."; - close; -} - -// Carl Orleans -- Valentine Event Chocolate maker ------------------ -prt_castle,54,34,4 script Carl Orleans#val1 1_M_01,{ - mes "[Carl Orleans]"; - mes "Yes? What can I cook for you?"; - next; - switch (select("Black handmade Chocolate, please", "I want a White handmade Chocolate...", "I'm lost, sorry to bother you.")) { - case 1: - mes "[Carl Orleans]"; - mes "Well, I just might be able to fulfill your needs..."; - next; - if (countitem(Chocolate)<3) { - mes "[Carl Orleans]"; - mes "I'm sorry you do not have enough Chocolate Bars to do this."; - if(rand(2))mes "They say Stephen from Alberta used to sell good Chocolate."; - close; - } - delitem 558,3; - mes "[Carl Orleans]"; - mes "You got 3 pieces of pure chocolate I see."; - mes "Give them to me..."; - next; - mes "[Carl Orleans]"; - mes "Ok, now I will only create my special handmade chocolates if you promise to use it wisely."; - next; - mes "[Carl Orleans]"; - mes "....Hmmmmmm....."; - mes "Well..."; - next; - getitem 559,1; - mes "[Carl Orleans]"; - mes "Here."; - if(rand(2))close; - mes "I hope you give it to someone special, because its a special chocolate."; - mes "As you know... only I can create this."; - next; - mes "[Carl Orleans]"; - mes "Enjoy."; - close; - case 2: - mes "[Carl Orleans]"; - mes "Well, I just might be able to fulfill your needs..."; - next; - if (countitem(White_Chocolate)<3) { - mes "[Carl Orleans]"; - mes "I'm sorry you do not have enough White Chocolate Bars to do this."; - if(rand(2))mes "They say Jainie from Alberta used to sell good White Chocolate."; - close; - } - delitem 561,3; - mes "[Carl Orleans]"; - mes "You got 3 pieces of pure white chocolate I see."; - mes "Give them to me..."; - next; - mes "[Carl Orleans]"; - mes "Ok, now I will only create my special handmade chocolates if you promise to use it wisely."; - next; - mes "[Carl Orleans]"; - mes "....Hmmmmmm....."; - mes "Well..."; - next; - getitem 560,1; - mes "[Carl Orleans]"; - mes "Here."; - if(rand(2))close; - mes "I hope you give it to someone special, because its a special chocolate."; - mes "As you know... only I can create this."; - next; - mes "[Carl Orleans]"; - mes "Enjoy."; - close; - case 3: - mes "[Carl Orleans]"; - mes "Oh.. well, if you want me to make some of my special handmade Chocolate...."; - mes "You will need to give me at least ^0000FF 3 Chocolates^000000 or ^0000FF 3 White Chocolates^000000."; - if(rand(2))close; - next; - mes "[Carl Orleans]"; - mes "That's right, only ^0000FF 3 Chocolates^000000 or ^0000FF 3 White Chocolates^000000."; - mes "Bring them to me and you'll get what you came for."; - if(rand(2))close; - next; - mes "[Carl Orleans]"; - mes "See You."; - close; - } -} diff --git a/npc/custom/events/xmas_rings_event.txt b/npc/custom/events/xmas_rings_event.txt deleted file mode 100644 index 633f09cf7..000000000 --- a/npc/custom/events/xmas_rings_event.txt +++ /dev/null @@ -1,190 +0,0 @@ -//===== Hercules Script ====================================== -//= Karachun Event (Xmas Rings Quest) -//===== By: ================================================== -//= Lupus (1.0) -//===== Current Version: ===================================== -//= 1.2 -//===== Description: ========================================= -//= Custom event: Karachun (from 8 Dec till 8 Jan), X-Mas, HNY -//===== Additional Comments: ================================= -//= 1.0 Tested, fully working. 1.0a a few typos fix -//= 1.1 Readded Mdef +1 and Luk +1 to Santa's Hat [Lupus] -//= 1.2 Fixed double quotes not being escaped [brianluau] -//============================================================ - -prontera,156,174,4 script Snower 4_M_06,{ - mes "[Snower]"; - if(Q_XMSRINGS==2){ - mes "Oh.. is it true? You've helped my sis Sneewy? Thank you."; - }else if(Q_XMSRINGS==3){ - mes "Snoowy's sent me a bird with a message. She told me about your help..."; - mes "I'll tell you a secret of the magic rings."; - emotion e_no1; - next; - mes "[Snower]"; - mes "They have magic power only from 8 December till 8 January."; - next; - mes "[Snower]"; - mes "By the way, just put on Santa's Hat to discover their true power."; - next; - mes "[Snower]"; - mes "If you put on both rings their power would be doubled."; - mes "Have a nice day!"; - close; - }else{ - mes "Hi! Two my sisters and I are preparing gifts for the whole 3 holidays!"; - } - emotion e_sob; - next; - switch (select("Where are your sisters?", "What holidays?", "What gifts?", "May I help you?")) { - case 1: - mes "[Snower]"; - mes "My younger sis Sneewy's left to some faraway land to prepare gifts for their poor children... I don't know where. You should ask my elder sis and her birdies."; - next; - mes "[Snower]"; - mes "My elder sis? Her name's Snoowy. She's sailed to some green island... She's talking about some gifts for dolphins or something..."; - close; - case 2: - mes "[Snower]"; - mes "The whole three holidays? Well they come one after another!"; - mes "^000080The Christmas^000000, ^FF0000Karachun^000000 and ^008000New Year Eve^000000!"; - next; - mes "[Snower]"; - mes "^FF0000Karachun^000000? Heh... This is an old pagans festival. They used to celebrate it before the appearance of HNY and XMas, you know."; - next; - break; // Quest - case 3: - mes "[Snower]"; - mes "My sisters say that all the gifts should look the same way. Or else some children might fight for fancy ones!"; - next; - mes "[Snower]"; - mes "Would you like me to wrap your fancy gift boxes with a gray paper?"; - next; - if (select("Wrap them, please!", "No, thanks.") != 1) - break; // Quest - set @prizes, countitem(Gift_Box_1)+countitem(Gift_Box_2)+countitem(Gift_Box_3)+countitem(Gift_Box_4); - if( @prizes == 0){ - mes "[Snower]"; - mes "I don't see any gifts in fancy boxes on you..."; - if(countitem(Gift_Box))mes "You've got only gray boxes."; - close; - } - delitem 664,countitem(Gift_Box_1); - delitem 665,countitem(Gift_Box_2); - delitem 666,countitem(Gift_Box_3); - delitem 667,countitem(Gift_Box_4); - getitem 644,@prizes; - - mes "[Snower]"; - mes "*shuffle* Here you go."; - next; - break; - case 4: - break; // Quest - } - - // Quest - mes "[Snower]"; - mes "I wish you find my sisters ASAP... They need help."; - if(Q_XMSRINGS==0) set Q_XMSRINGS,1; - close; - -OnInit: -//Santa's Hat - setitemscript 2236,"{ bonus bMdef,1; bonus bLuk,1; if(isequipped(2636,2637)){if(@xmr == gettime(GETTIME_MINUTE))end; set @xmr,gettime(GETTIME_MINUTE); specialeffect(EF_RAINBOW, AREA, playerattached()); end;} if(isequipped(2636)){if(@xmr == gettime(GETTIME_MINUTE))end; set @xmr,gettime(GETTIME_MINUTE); specialeffect(EF_SPHERE, AREA, playerattached());} if(isequipped(2637)){if(@xmr == gettime(GETTIME_MINUTE))end; set @xmr,gettime(GETTIME_MINUTE); specialeffect(EF_ANGEL2, AREA, playerattached());}}"; -//Gold Xmas Ring - setitemscript 2636,"{ bonus bLoseSPWhenUnequip,30; if(isequipped(2236)==0)end; if(getskilllv(\"AL_HEAL\")){skill \"TF_HIDING\",4+isequipped(2637);}else{skill \"AL_HEAL\",1+4*isequipped(2637);} }"; -//Silver Xmas Ring - setitemscript 2637,"{ bonus bDamageWhenUnequip,40; if(isequipped(2236)==0)end; if(getskilllv(\"AL_TELEPORT\")){skill \"MC_IDENTIFY\",1;}else{skill \"AL_TELEPORT\",1+isequipped(2636);} }"; - end; -} - -louyang,224,249,4 script Sneewy 4_F_KID3,{ - mes "[Sneewy]"; - if(Q_XMSRINGS==0){ - mes "Hi! I'm waithing for my sister's birdy with mail..."; - emotion e_sob; - close; - } - if(Q_XMSRINGS==1){ - mes "I wish I had 4 more gray Gift Boxes for native children..."; - emotion e_sob; - next; - mes "[Sneewy]"; - mes "Oh, hello. Has my brother Snower told you everything?"; - next; - if (select("Here are your 4 Gift Boxes", "I don't know any Snowhatevers...") != 1) { - mes "[Sneewy]"; - mes "Pity... I've got a magic Santa's ring... I'd exchange it for 4 Gift Boxes..."; - emotion e_swt; - close; - } - - mes "[Sneewy]"; - if(countitem(Gift_Box)<4){ - mes "Gimme 4 gifts for poor kids... Wait, you haven't got 4 of them!"; - emotion e_sry; - close; - } - set Q_XMSRINGS,2; - delitem 644,4; - getnameditem 2637,strcharinfo(PC_NAME); - emotion e_kis2; - mes "Thank you! Here's my li'l something for you!"; - next; - mes "[Sneewy]"; - mes "By the way, if you put on 2 different rings then your holidays leveling would be easier!"; - close; - } - emotion e_thx; - mes "Thanks again! No children will meet the holidays without the gifts!"; - close; -} - -izlu2dun,133,160,2 script Snoowy 4_F_06,{ - mes "[Snoowy]"; - if(Q_XMSRINGS==0){ - mes "Helloooou! Do you know my bro and sis? How so? My brother Snower's well known in Prontera!! Just ask any child there."; - emotion e_hmm; - close; - } - if(Q_XMSRINGS==1){ - mes "Darn... How could poor children be more important than the marine folks.. Am I wrong?"; - next; - mes "[Snoowy]"; - mes "Errr. Helloou there. My sister Sneewy's sent me a birdie message. The letter was wet and I couldn't read anything but some ending letters of her address..."; - next; - mes "[Snoowy]"; - mes "Look, it's something like 'yang' in the very end... Hmm... She must be misspelled 'Al Doo Boryang'..."; - close; - } - if(Q_XMSRINGS==2){ - mes "You've helped my sis? It's just great!"; - next; - mes "[Snoowy]"; - mes "But I too need 3 more gifts for my marine folk friends..."; - next; - if (select("Have these gifts!", "I need a li'l something in return") != 1) { - mes "[Snoowy]"; - mes "I'd exchange a GOLD magic ring for 3 gift boxes..."; - emotion e_swt; - close; - } - mes "[Snoowy]"; - if(countitem(Gift_Box)<3){ - mes "Oops!! You haven't got 3 gray gift boxes on you."; - emotion e_sry; - close; - } - set Q_XMSRINGS,3; - delitem 644,3; - getnameditem 2636,strcharinfo(PC_NAME); - emotion e_kis; - mes "Thaank yoouu! Have this magic ring!"; - close; - } - emotion e_thx; - mes "Oh... the whole marine folk send you their thanks! They love presents so much!!!"; - if(rand(2))mes "Didn't you know that Santa's Hat reveals the real power of the rings?"; - close; -} diff --git a/npc/custom/healer.txt b/npc/custom/healer.txt deleted file mode 100644 index 9e0d4abe4..000000000 --- a/npc/custom/healer.txt +++ /dev/null @@ -1,78 +0,0 @@ -//===== Hercules Script ====================================== -//= Healer -//===== By: ================================================== -//= Euphy -//===== Current Version: ===================================== -//= 1.2 -//===== Description: ========================================= -//= Basic healer script. -//===== Additional Comments: ================================= -//= 1.0 Initial script. -//= 1.1 Aligned coordinates with @go. -//= 1.2 Fix variables and character stuck at healing -//============================================================ - -- script Healer FAKE_NPC,{ - - .@price = 0; // Zeny required for heal - .@Buffs = 0; // Also buff players? (1: yes / 0: no) - .@Delay = 0; // Heal delay, in seconds - - if (@HD > gettimetick(2)) end; - if (.@price) { - message strcharinfo(PC_NAME),"Healing costs "+.@price+" Zeny."; - if (Zeny < .@price) end; - if(select("^0055FFHeal^000000", "^777777Cancel^000000") == 2) close; - Zeny -= .@price; - } - specialeffect(EF_HEAL2, AREA, playerattached()); percentheal 100,100; - if (.@Buffs) { - specialeffect(EF_INCAGILITY, AREA, playerattached()); sc_start SC_INC_AGI,240000,10; - specialeffect(EF_BLESSING, AREA, playerattached()); sc_start SC_BLESSING,240000,10; - } - if (.@Delay) @HD = gettimetick(2)+.@Delay; - end; -} - - -// Duplicates -//============================================================ -alberta,25,240,6 duplicate(Healer) Healer#alb 4_PORING -aldebaran,135,118,6 duplicate(Healer) Healer#alde 4_PORING -amatsu,200,79,4 duplicate(Healer) Healer#ama 4_PORING -ayothaya,207,169,6 duplicate(Healer) Healer#ayo 4_PORING -comodo,184,158,6 duplicate(Healer) Healer#com 4_PORING -einbech,57,36,6 duplicate(Healer) Healer#einbe 4_PORING -einbroch,57,202,6 duplicate(Healer) Healer#einbr 4_PORING -geffen,115,72,6 duplicate(Healer) Healer#gef 4_PORING -gonryun,156,122,6 duplicate(Healer) Healer#gon 4_PORING -hugel,89,150,6 duplicate(Healer) Healer#hug 4_PORING -izlude,125,118,5 duplicate(Healer) Healer#izl 4_PORING -jawaii,250,139,4 duplicate(Healer) Healer#jaw 4_PORING -lighthalzen,152,100,6 duplicate(Healer) Healer#lhz 4_PORING -louyang,226,103,4 duplicate(Healer) Healer#lou 4_PORING -manuk,272,144,6 duplicate(Healer) Healer#man 4_PORING -mid_camp,203,289,6 duplicate(Healer) Healer#mid 4_PORING -moc_ruins,72,164,4 duplicate(Healer) Healer#moc 4_PORING -morocc,153,97,6 duplicate(Healer) Healer#mor 4_PORING -moscovia,220,191,4 duplicate(Healer) Healer#mos 4_PORING -niflheim,212,182,5 duplicate(Healer) Healer#nif 4_PORING -payon,179,106,4 duplicate(Healer) Healer#pay 4_PORING -prontera,162,193,4 duplicate(Healer) Healer#prt 4_PORING -rachel,125,116,6 duplicate(Healer) Healer#rac 4_PORING -splendide,201,153,4 duplicate(Healer) Healer#spl 4_PORING -thor_camp,249,74,4 duplicate(Healer) Healer#thor 4_PORING -umbala,105,148,3 duplicate(Healer) Healer#umb 4_PORING -veins,217,121,4 duplicate(Healer) Healer#ve 4_PORING -xmas,143,136,4 duplicate(Healer) Healer#xmas 4_PORING -yuno,164,45,4 duplicate(Healer) Healer#yuno 4_PORING - -// Duplicates (Renewal) -//============================================================ -brasilis,194,221,6 duplicate(Healer) Healer#bra 4_PORING -dewata,195,187,4 duplicate(Healer) Healer#dew 4_PORING -dicastes01,201,194,4 duplicate(Healer) Healer#dic 4_PORING -ecl_in01,45,60,4 duplicate(Healer) Healer#ecl 4_PORING -malangdo,132,114,6 duplicate(Healer) Healer#mal 4_PORING -malaya,205,205,6 duplicate(Healer) Healer#ma 4_PORING -mora,55,152,4 duplicate(Healer) Healer#mora 4_PORING diff --git a/npc/custom/item_signer.txt b/npc/custom/item_signer.txt deleted file mode 100644 index 6c12926e5..000000000 --- a/npc/custom/item_signer.txt +++ /dev/null @@ -1,132 +0,0 @@ -//===== Hercules Script ====================================== -//= Sign Your Items -//===== By: ================================================== -//= Lupus -//===== Current Version: ===================================== -//= 1.1a -//===== Description: ========================================= -//= Write you name on your rare equipment or weapon ^_- -//===== Additional Comments: ================================= -//= 1.1 Cleaned and edited for general use. [Euphy] -//= 1.1a Added 'disable_items' command. [Euphy] -//============================================================ - -prt_in,24,61,7 script Perchik 1_M_01,{ - setarray .@item[0],644,3; // Item requirements: <ID>,<Count>{,...} (0 to disable) - setarray .@cost[0],0,5000; // Zeny requirements: <base price>,<price per refine> - - disable_items; - mes "[Perchik]"; - mes "I can ^0055FFsign your name^000000 on almost any rare item you hold."; - next; - if(select("Tell me more...", "Sign my items, please!") == 1) { - mes "[Perchik]"; - mes "I can put your name on any slotless equipment or weapon."; - emotion e_ic; - next; - mes "[Perchik]"; - if (getarraysize(.@item) || getarraysize(.@cost)) { - mes "For my work I accept:"; - if (getarraysize(.@item)) for(set .@i,0; .@i<getarraysize(.@item); set .@i,.@i+2) - mes " ~ "+.@item[.@i+1]+"x "+getitemname(.@item[.@i]); - if (.@cost[0]) mes " ~ "+.@cost[0]+" Zeny"; - if (.@cost[1]) mes " ~ "+.@cost[1]+" Zeny per refine"; - } - else mes "I work for free, but..."; - next; - emotion e_cry; - mes "[Perchik]"; - mes "Alas, I have 12 hungry children"; - mes "and a very angry wife."; - next; - mes "[Perchik]"; - mes "Or it was 12 angry children"; - mes "and a very hungry wife..."; - emotion e_hmm; - close; - } - mes "[Perchik]"; - mes "Show me your items to sign..."; - next; - setarray .@pos$[1],"Upper Headgear","Armor","Left hand","Right hand","Garment","Footgear","Left Accessory","Right Accessory","Mid Headgear","Lower Headgear"; - set .@menu$,""; - for (set .@i,1; .@i<=10; set .@i,.@i+1) { - if (getequipisequiped(.@i)) - set .@menu$, .@menu$+.@pos$[.@i]+" [^0055FF"+getequipname(.@i)+"^000000]"; - set .@menu$, .@menu$+":"; - } - set .@part, select(.@menu$); - set .@id, getequipid(.@part); - set .@ref, getequiprefinerycnt(.@part); - mes "[Perchik]"; - if (!getequipisequiped(.@part)) { - mes "Nothing is equipped there!"; - emotion e_wah; - close; - } - for(set .@i,0; .@i<4; set .@i,.@i+1) - set .@slot[.@i], getequipcardid(.@part,.@i); - if (.@slot[0]==255 || .@slot[0]==254 || .@slot[0]<0) { - mes "Alas, this item's already signed."; - mes "I would never touch a master's work."; - emotion e_hmm; - close; - } - if (.@slot[0]>4000 && .@slot[0]<5000) { - mes "A card? Here?!"; - mes "As I said before, I don't sign items with cards."; - emotion e_hmm; - close; - } - if (getiteminfo(.@id, ITEMINFO_SLOTS) > 0) { - mes "Sorry, I don't sign slotted items."; - emotion e_sry; - close; - } - getinventorylist; - for(set .@i,0; .@i<@inventorylist_count; set .@i,.@i+1) - if (@inventorylist_expire[.@i] != 0) { - mes "Sorry, I don't sign rental items!"; - emotion e_hmm; - close; - } - set .@price, .@cost[0]+(.@cost[1]*.@ref); - if (getarraysize(.@item) || .@price) { - mes "I will need:"; - if (getarraysize(.@item)) for(set .@i,0; .@i<getarraysize(.@item); set .@i,.@i+2) { - mes " ~ "+.@item[.@i+1]+"x "+getitemname(.@item[.@i]); - if (countitem(.@item[.@i]) < .@item[.@i+1]) set .@nr,1; - } - if (.@price) mes " ~ "+.@price+" Zeny"; - } - mes "Shall I sign your ^0055FF"+getitemname(.@id)+"^000000?"; - next; - if(select("Ok!", "Leave")==2) { - mes "[Perchik]"; - mes "See you..."; - emotion e_yawn; - close; - } - mes "[Perchik]"; - if (Zeny < .@price || .@nr) { - mes "I don't work for 'thanks'."; - emotion e_sry; - close; - } - if (!countitem2(.@id,1,.@ref,0,.@slot[0],.@slot[1],.@slot[2],.@slot[3])) { - mes "Where is "+getitemname(@id)+"...?"; - npctalk "You're a snoozy cheater!"; - logmes "CHEATER: Tried to sign an item not having it: "+getitemname(@id); - emotion e_wah; - close; - } - if (.@price) Zeny -= .@price; - if (getarraysize(.@item)) for(set .@i,0; .@i<getarraysize(.@item); set .@i,.@i+2) - delitem .@item[.@i], .@item[.@i+1]; - delitem2 .@id,1,1,.@ref,0,.@slot[0],.@slot[1],.@slot[2],.@slot[3]; - mes "Done!"; - emotion e_proud; - getitem2 .@id,1,1,.@ref,0,254,0,getcharid(CHAR_ID_CHAR)&0xffff,(getcharid(CHAR_ID_CHAR)>>16)&0xffff; - equip .@id; - close; -} diff --git a/npc/custom/itembind.txt b/npc/custom/itembind.txt deleted file mode 100644 index 7d95afdfc..000000000 --- a/npc/custom/itembind.txt +++ /dev/null @@ -1,134 +0,0 @@ -//===== Hercules Script ======================================= -//= Item Bind Script -//===== By: ================================================== -//= Akinari -//===== Compatible With: ===================================== -//= Revision 17351+ (rAthena) -//= Revision 12949+ (Hercules) -//===== Description: ========================================= -//= Item Bind Script -//= Allows users to pay a price to make an item bound to -//= Account, Character, or Guild -//============================================================ - -prontera,144,174,4 script Bound Items 4_M_JP_MID,{ - - mes "I can bind your items to your account, guild, or character"+((.bindprice)?" for a ^0000FF"+.bindprice+"^000000 zeny fee":"")+"."; - next; - mes "With this, you can rest assured your items are safe."; - next; - mes "What would you like to do?"; - if(select("Bind", "Unbind") == 1) { - if(Zeny < .bindprice) { - mes "You don't have enough zeny to bind an item."; - close; - } - mes "What kind of bind?"; - .@boundtype = 1 << (select("Account", "Guild", "Character")-1); - if(.@boundtype == 2 && (!getcharid(CHAR_ID_GUILD) || getguildmaster(getcharid(CHAR_ID_GUILD)) != strcharinfo(PC_NAME))) { - mes "In order for me to bind an item to a guild you must be the master of one."; - close; - } - getinventorylist(); - for(.@i = 0; .@i < @inventorylist_count; .@i++) { - //We only show the items that you allow to be bound - //Allows equipment (default) or non-rental item - if (@inventorylist_bound[.@i] || @inventorylist_expire[.@i]) - continue; - .@itemtype = getiteminfo(@inventorylist_id[.@i], ITEMINFO_TYPE); - if (((.allowbind & 1) != 0 && (.@itemtype == IT_WEAPON || .@itemtype == IT_ARMOR)) - || ((.allowbind & 2) != 0 && (.@itemtype == IT_HEALING || .@itemtype == IT_USABLE || .@itemtype == IT_DELAYCONSUME || .@itemtype == IT_CASH)) - || ((.allowbind & 4) != 0 && (.@itemtype == IT_ETC || .@itemtype == IT_CARD || .@itemtype == IT_PETEGG || .@itemtype == IT_PETARMOR || .@itemtype == IT_AMMO)) - ) { - set .@bindlist$, .@bindlist$ + ":" + getitemname(@inventorylist_id[.@i]) + " - " + @inventorylist_id[.@i]; - set .@bindlist[.@j],.@i; - .@j++; - } - } - .@item = .@bindlist[select(.@bindlist$)-2]; - next; - mes "Before I continue, I want you to know I can't tell the difference between multiple items. If you have a specific item you want bounded, please remove any duplicates from inventory."; - if(select("I understand, continue", "Wait a minute") == 2) { - next; - mes "I'll be here when you're ready."; - close; - } - next; - mes "Are you sure you'd like to bind your "+ getitemname(@inventorylist_id[.@item]) +" to your "+.boundtypes$[.@boundtype]+"?"; - if(select("Yes", "No") == 1) { - Zeny -= .bindprice; - delitem2 @inventorylist_id[.@item],@inventorylist_amount[.@item],@inventorylist_identify[.@item],@inventorylist_refine[.@item],@inventorylist_attribute[.@item],@inventorylist_card1[.@item],@inventorylist_card2[.@item],@inventorylist_card3[.@item],@inventorylist_card4[.@item]; - getitembound2 @inventorylist_id[.@item],@inventorylist_amount[.@item],@inventorylist_identify[.@item],@inventorylist_refine[.@item],@inventorylist_attribute[.@item],@inventorylist_card1[.@item],@inventorylist_card2[.@item],@inventorylist_card3[.@item],@inventorylist_card4[.@item],.@boundtype; - mes "All done!"; - if(.logbinds) - logmes "Bound "+ @inventorylist_amount[.@item]+" "+@inventorylist_id[.@item]+" as "+.boundtypes$[.@boundtype]+" type."; - } - } else { - if(!countbound()) { - mes "You don't have any bound items in your inventory. Not much I can do here."; - close; - } - countbound(2); - if(.unbindprice) { - mes "Unbinding an item has a fee of ^0000FF"+.unbindprice+"^000000 zeny."; - if(Zeny < .unbindprice) { - mes "You don't have enough to unbind an item."; - close; - } - } - getinventorylist(); - for(.@i = 0; .@i < @inventorylist_count; .@i++) { - if(@inventorylist_bound[.@i]) { - set .@bindlist$, .@bindlist$ + ":" + getitemname(@inventorylist_id[.@i]) + " - " + @inventorylist_id[.@i]; - set .@bindlist[.@j],.@i; - .@j++; - } - } - .@item = .@bindlist[select(.@bindlist$)-2]; - next; - for(.@i = 0; .@i < getarraysize(@bound_items); .@i++) { - if(@inventorylist_id[.@item] == @bound_items[.@i] && - (!getcharid(CHAR_ID_GUILD) || getguildmaster(getcharid(CHAR_ID_GUILD)) != strcharinfo(PC_NAME)) - ) { - mes "I will only unbind guild bound items that the guild master requests."; - close; - } - } - mes "Before I continue, I want you to know I can't tell the difference between multiple items. If you have a specific item you want unbounded, please remove any duplicates from inventory."; - if(select("I understand, continue", "Wait a minute") == 2) { - next; - mes "I'll be here when you're ready."; - close; - } - next; - mes "Are you sure you'd like to unbind your "+ getitemname(@inventorylist_id[.@item]) +"?"; - if(select("Yes", "No") == 1) { - Zeny -= .unbindprice; - delitem2 @inventorylist_id[.@item],@inventorylist_amount[.@item],@inventorylist_identify[.@item],@inventorylist_refine[.@item],@inventorylist_attribute[.@item],@inventorylist_card1[.@item],@inventorylist_card2[.@item],@inventorylist_card3[.@item],@inventorylist_card4[.@item]; - getitem2 @inventorylist_id[.@item],@inventorylist_amount[.@item],@inventorylist_identify[.@item],@inventorylist_refine[.@item],@inventorylist_attribute[.@item],@inventorylist_card1[.@item],@inventorylist_card2[.@item],@inventorylist_card3[.@item],@inventorylist_card4[.@item]; - mes "All done!"; - if(.logbinds) - logmes "Unbound "+ @inventorylist_amount[.@item]+" "+@inventorylist_id[.@item]+"."; - } - } - close; - -OnInit: - //* Configuration *\\ - //Price - .bindprice = 0; - .unbindprice = 100000; - - //What to allow to be bound - Add as necessary - //1 = Equipment - 2 = Consumables - 4 = Etc - .allowbind = 1; - - //Log binds via NPC? - .logbinds = 1; - - //Other stuff - .boundtypes$[1] = "account"; - .boundtypes$[2] = "guild"; - .boundtypes$[4] = "character"; - end; -} diff --git a/npc/custom/itemmall.txt b/npc/custom/itemmall.txt deleted file mode 100644 index 7e1aa1199..000000000 --- a/npc/custom/itemmall.txt +++ /dev/null @@ -1,42 +0,0 @@ -//===== Hercules Script ====================================== -//= Shop Street -//===== By: ================================================== -//= Masao -//===== Current Version: ===================================== -//= 1.0 -//===== Description: ========================================= -//= Street shops in Prontera. -//============================================================ - -prontera,147,240,5 shop Armor 4W_M_03,2304:10000,2306:20000,2308:20000,2310:50000,2311:50000,2313:50000,2315:75000,2317:100000,2322:20000,2326:60000,2331:75000,2342:100000,2353:75000,2364:150000,2367:100000,2399:50000 -prontera,147,242,5 shop Shield 4W_M_03,2102:10000,2106:60000,2108:60000,2110:85000,2114:30000,2116:30000,2123:50000,2124:50000 -prontera,147,244,5 shop Footgear 4W_M_03,2404:10000,2406:20000,2409:30000,2412:50000,2417:50000,2418:50000,2424:50000,2425:20000 -prontera,147,246,5 shop Mace 4W_M_03,1502:10000,1505:20000,1511:20000,1514:-1,1517:-1,1520:50000,1522:100000,1523:25000,1528:50000,1529:50000,1531:50000 -prontera,147,248,5 shop Knuckle 4_M_ROKI,1802:20000,1804:50000,1806:60000,1808:75000,1810:70000,1812:60000,1813:100000,1814:100000,1822:150000 -prontera,147,250,5 shop Whips 4_M_ROKI,1951:10000,1953:20000,1955:30000,1962:20000,1963:50000,1972:10000,1974:10000,1976:50000 -prontera,147,252,5 shop Instruments 4_M_ROKI,1902:10000,1904:20000,1906:-1,1908:50000,1913:50000,1914:50000,1915:50000,1916:50000,1917:50000 -prontera,147,254,5 shop Books 4_M_ROKI,1550:30000,1551:60000,1552:51000,1559:25000,1561:75000,1564:25000,1568:70000,1569:70000,1570:70000,1571:70000,1572:50000 -prontera,147,256,5 shop Guns 4_M_CATMAN1,13103:60000,13105:100000,13106:200000,13101:10000,13150:6000,13152:30000,13153:50000,13155:60000,13156:100000,13154:30000,13159:250000,13157:150000,13161:300000,13162:500000 -prontera,147,258,5 shop Fuuma Shuriken 4_M_CATMAN1,7522:500,7521:500,7523:500 -prontera,147,260,5 shop One-Handed Swords 4_M_CATMAN1,1108:10000,1117:10000,1120:100000,1124:50000,1130:100000,1131:50000,1133:50000,1138:200000,1139:200000,1145:-1,1149:50000 -prontera,147,262,5 shop Two-Handed Swords 4_M_CATMAN1,1155:50000,1158:90000,1163:120000,1164:50000,1165:50000,1166:75000,1168:50000,1169:500000,1172:200000,1175:75000 -prontera,147,264,5 shop Spears 4_M_JOB_BLACKSMITH,1405:20000,1408:50000,1415:100000,1417:75000,1421:75000,1422:25000 -prontera,147,238,1 shop Dagger 4_M_JOB_BLACKSMITH,1208:20000,1211:20000,1217:20000,1223:50000,1231:75000,1235:75000,1236:75000,1237:75000 -prontera,164,264,4 shop Axes 4_M_JOB_BLACKSMITH,1302:10000,1306:20000,1307:45000,1309:75000,1352:20000,1355:30000,1358:75000,1363:50000,1364:50000,1365:50000,1366:50000,1371:100000 -prontera,164,262,4 shop Accessories 4_M_JOB_BLACKSMITH,2621:-1,2622:-1,2624:30000,2618:10000,2625:30000,2626:30000,2674:10000,2648:50000,2649:50000,2627:-1,2701:75000 -prontera,164,260,4 shop Bows 4_M_JOB_BLACKSMITH,1702:20000,1705:50000,1708:20000,1720:50000,1723:75000,1724:75000,1725:75000 -prontera,164,258,4 shop Staffs / Rods 4_M_JOB_BLACKSMITH,1602:20000,1605:20000,1608:20000,1611:45000,1618:85000,1620:85000,1622:50000,1624:50000,1625:50000,1626:50000 -prontera,164,256,4 shop Garments 4_M_YOUNGKNIGHT,2504:10000,2506:40000,2507:82000,2508:56000,2514:50000,2518:60000,2519:60000,2528:85000,2531:10000,2553:10000 -prontera,164,254,4 shop Katars 4_M_YOUNGKNIGHT,1251:50000,1253:100000,1255:75000,1261:125000,1262:20000,1263:20000,1265:100000,1275:100000,1276:100000,1277:100000,1278:100000 -prontera,164,252,4 shop Lower Headgear 4_M_YOUNGKNIGHT,2218:10000,5054:30000,2267:5000,5107:100000,2265:5000,2266:50000,2269:50000,2270:50000 -prontera,164,250,4 shop Middle Headgear 4_M_YOUNGKNIGHT,2201:5000,2203:4000,2205:3500,2212:5000,2225:10000,2229:50000,2231:50000,2234:50000,2235:50000,2281:25000,2292:50000,2296:50000 -prontera,164,248,4 shop Upper Headgear 4_M_YOUNGKNIGHT,2210:1000,2211:1000,2213:10000,2214:20000,2217:10000,2221:5000,2223:10000,2246:75000,2256:75000,2264:100000,2280:20000,2299:30000 -prontera,164,246,4 shop Headgear 01 4_M_REIDIN_KURS,5380:40000,5382:40000,2269:5000,2270:5000,5107:15000,5110:15000,2247:30000:5206:10000,2245:30000,2286:35000,2296:15000,2258:45000,5161:200000,5104:40000,2295:20000,5026:30000,5032:100000,5038:30000,5229:65000,5227:65000,5228:65000,5198:50000,5058:300000,5253:80000,5252:60000,5296:100000,5231:300000,5232:300000,5233:300000,5230:300000,5234:300000,5076:50000 -prontera,164,244,4 shop Headgear 02 4_M_REIDIN_KURS,5059:100000,5235:75000,5236:75000,5237:75000,5293:150000,5303:35000,5304:65000,5312:65000,5315:45000,5317:45000,5319:75000,5320:120000,5323:588888,5336:50000,5337:50000,5338:50000,5339:50000,5346:50000 -prontera,164,242,4 shop Headgear 03 4_M_REIDIN_KURS,5181:300000,5102:500000,5016:75000,5349:150000,5013:700000,5022:500000,5171:1250000,5135:500000,5029:50000,5033:65000,5040:100000,5047:35000,5065:65000,5068:50000,5074:50000,5084:75000,5086:150000,5108:350000,5121:100000,5133:50000,5137:100000,5138:150000,5140:55000,5146:75000,5151:75000,5152:150000,5170:150000,5173:75000,5174:75000,5175:75000,5184:50000,5185:45000,5187:75000,5188:50000,5191:25000,5192:25000,5193:25000,5194:25000,5195:25000,5196:25000,5197:25000 -prontera,164,240,4 shop Headgear 04 4_M_REIDIN_KURS,5200:75000,5205:100000,5211:75000,5226:50000,5238:75000,5239:75000,5240:75000,5241:75000,5242:75000,5243:50000,5325:75000,5254:100000,5255:65000,5257:50000,5297:100000,2202:45000,5258:35000,5298:50000,5276:50000,5273:50000,5275:50000,5274:50000,5259:50000,5271:250000,5272:50000,5284:50000,5286:75000,5288:50000,5289:50000,5291:55000,5292:55000,5294:55000,5352:50000,5324:100000,5359:50000,5360:50000 -prontera,164,238,4 shop Headgear 05 4_M_REIDIN_KURS,5340:50000,5341:50000,5342:50000,5343:50000,5344:50000,5345:50000,5354:50000,5355:50000,5361:65000,5365:50000,5373:75000,5374:350000,5379:50000,5383:60000,5384:88888,5390:88888,5388:50000,5411:50000,5393:75000,5397:35000,5399:50000,5800:175000,5801:300000,5802:150000 -prontera,151,284,4 shop Ammunition 4_M_MASKMAN,1766:50,1755:20,1750:10,1754:20,1761:20,1752:20,1760:20,1759:20,1772:100,1757:30,1770:20,1769:30,1765:40,1763:30,1762:30,1767:30,1764:30,1751:20,1768:30,1753:30,1756:30,1758:30,1771:1000,13200:50,13202:100,13201:300,13206:500,13203:500,13207:500,13204:500,13205:500,13252:50,13254:500,13251:100,13253:300,13250:50,13256:50,13259:50,13258:50,13255:50,13257:50 -prontera,153,284,4 shop Alchemist Dealer 4_M_MASKMAN,715:600,716:600,717:600,1025:200,7136:500,7135:500,7137:500,7138:500,7139:500 -prontera,155,284,4 shop Street Dealer 4_M_MASKMAN,678:5000,505:-1,506:40,610:4000,545:150,546:600,547:1650 -prontera,157,284,4 shop Sheepy Gonzales 4_F_KHELLY,12028:1000,12262:500,12016:750 diff --git a/npc/custom/jobmaster.txt b/npc/custom/jobmaster.txt deleted file mode 100644 index 4b56a36e5..000000000 --- a/npc/custom/jobmaster.txt +++ /dev/null @@ -1,262 +0,0 @@ -//===== Hercules Script ====================================== -//= Job Master -//===== By: ================================================== -//= Euphy -//===== Current Version: ===================================== -//= 1.4 -//===== Description: ========================================= -//= A fully functional job changer. -//===== Additional Comments: ================================= -//= 1.1 Fixed reset on Baby job change. [Euphy] -//= 1.2 Added Expanded Super Novice support and initial Kagerou/Oboro support. [Euphy] -//= 1.3 Kagerou/Oboro added. [Euphy] -//= 1.4 Improved legibility (renamed variables, replaced -// numbers with constants; Changed syntax to match -// Hercules standards; Fixed status point exploit upon -// Baby Novice job change. [Haru] -//============================================================ - -prontera,153,193,6 script Job Master 2_F_MAGICMASTER,{ - function Job_Menu; function A_An; - - mes "[Job Master]"; - if (Class > Job_Soul_Linker) { - mes "No more jobs are available."; - close; - } - if (checkfalcon() || checkcart() || checkmount() || hascashmount()) { - mes "Please remove your "+((checkfalcon())?"falcon":"")+((checkcart())?"cart":"")+((checkmount() || hascashmount())?"mount":"") - +" before proceeding."; - close; - } - if (.skill_point_check && SkillPoint > 0) { - mes "Please use all your skill points before proceeding."; - close; - } - - .@eac = eaclass(); - .@base = .third_classes ? roclass(.@eac&EAJ_UPPERMASK) : Class; - if (.@base >= Job_Knight && .@base <= Job_Crusader2) { - if (BaseLevel < .rebirth_blevel || JobLevel < .rebirth_jlevel) { - .@blvl = .rebirth_blevel - BaseLevel; - .@jlvl = .rebirth_jlevel - JobLevel; - mes "You need " - + (BaseLevel < .rebirth_blevel ? ((.rebirth_blevel - BaseLevel) +" more base levels "+ (JobLevel < .rebirth_jlevel ? "and " : "")) : "") - + (JobLevel < .rebirth_jlevel ? (.rebirth_jlevel - JobLevel) +" more job levels " : "") - + "to continue."; - close; - } - if (Class > Job_Crusader2) { - mes "Switch to third class?"; - next; - Job_Menu(roclass(.@eac|EAJL_THIRD)); - close; - } - while (true) { - mes "Select an option."; - next; - .@choice = select(" ~ ^0055FFRebirth^000000", (.third_classes ? " ~ ^FF0000Third Class^000000":""), " ~ ^777777Cancel^000000"); - if (.@choice == 3) - close; - mes "[Job Master]"; - mes "Are you sure?"; - next; - if (.@choice == 1) - Job_Menu(Job_Novice_High); - else - Job_Menu(roclass(.@eac|EAJL_THIRD)); - mes "[Job Master]"; - } - } - .@job1 = roclass(.@eac|EAJL_2_1); - .@job2 = roclass(.@eac|EAJL_2_2); - if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) { - .@newclass = roclass(.@eac|EAJL_THIRD); - .@required_jlevel = 99; - } else if (Class == Job_Ninja || Class == Job_Gunslinger) { - .@newclass = .@job1; - .@required_jlevel = 70; - } - if (.@newclass && .third_classes) { - if (BaseLevel < .rebirth_blevel || JobLevel < .@required_jlevel) { - mes "You need " - + (BaseLevel < .rebirth_blevel ? ((.rebirth_blevel - BaseLevel) +" more base levels "+ (JobLevel < .@required_jlevel ? "and " : "")) : "") - + (JobLevel < .@required_jlevel ? (.@required_jlevel - JobLevel) +" more job levels " : "") - + "to continue."; - close; - } - mes "Switch to "+jobname(.@newclass)+"?"; - next; - Job_Menu(.@newclass); - close; - } - if (.@eac&EAJL_2) - if (.@eac&(EAJL_UPPER|EAJL_BABY) || roclass(.@eac|EAJL_UPPER) == -1) { - mes "No more jobs are available."; - close; - } - if ((.@eac&EAJ_BASEMASK) == EAJ_NOVICE) { - if (JobLevel < .jobchange_first) { - mes "A job level of "+.jobchange_first+" is required to change into the 1st Class."; - } else if (Class == Job_Novice_High && .linear_jobchange && lastJob) { - mes "Switch classes now?"; - next; - Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER)); - } else if (Class == Job_Novice) { - Job_Menu(Job_Swordman, Job_Mage, Job_Archer, Job_Acolyte, Job_Merchant, Job_Thief, - Job_SuperNovice, Job_Taekwon, Job_Gunslinger, Job_Ninja, Job_Baby); - } else if (Class == Job_Novice_High) { - Job_Menu(Job_Swordman_High, Job_Mage_High, Job_Archer_High, Job_Acolyte_High, Job_Merchant_High, Job_Thief_High); - } else if (Class == Job_Baby) { - Job_Menu(Job_Baby_Swordman, Job_Baby_Mage, Job_Baby_Archer, Job_Baby_Acolyte, Job_Baby_Merchant, Job_Baby_Thief, - Job_Super_Baby); - } else { - mes "An error has occurred."; - } - close; - } - if (roclass(.@eac|EAJL_2_1) == -1 || roclass(.@eac|EAJL_2_2) == -1) { - mes "No more jobs are available."; - } else if (!(.@eac&EAJL_2) && JobLevel < .jobchange_second) { - mes "A job level of "+.jobchange_second+" is required to change into the 2nd Class."; - } else if (.linear_jobchange && lastJob && (.@eac&EAJL_UPPER)) { - mes "Switch classes now?"; - next; - Job_Menu(lastJob+Job_Novice_High); - } else { - Job_Menu(.@job1, .@job2); - } - close; - -function Job_Menu { - while (true) { - if (getargcount() > 1) { - mes "Select a job."; - .@menu$ = ""; - for (.@i = 0; .@i < getargcount(); ++.@i) - .@menu$ += " ~ "+jobname(getarg(.@i))+":"; - .@menu$ += " ~ ^777777Cancel^000000"; - next; - .@newjob = getarg(select(.@menu$)-1, 0); - if (!.@newjob) close; - if ((.@newjob == Job_SuperNovice || .@newjob == Job_Super_Baby) && BaseLevel < .supernovice_level) { - mes "[Job Master]"; - mes "A base level of "+.supernovice_level+" is required to turn into a "+jobname(.@newjob)+"."; - close; - } - mes "[Job Master]"; - mes "Are you sure?"; - next; - } else { - .@newjob = getarg(0); - } - if (select(" ~ Change into ^0055FF"+ jobname(.@newjob) +"^000000 class", " ~ ^777777"+(getargcount() > 1 ? "Go back": "Cancel")+"^000000") == 1) { - mes "[Job Master]"; - mes "You are now "+A_An(jobname(.@newjob))+"!"; - if (.@newjob == Job_Novice_High && .linear_jobchange) - lastJob = Class; // Note: This is incompatible with the Valkyrie rebirth script. - jobchange .@newjob; - if (.@newjob == Job_Novice_High) - resetlvl(1); - if (.@newjob == Job_Baby) { - resetlvl(4); - SkillPoint = 0; - } - specialeffect(EF_ANGEL2, AREA, playerattached()); - specialeffect(EF_ELECTRIC, AREA, playerattached()); - if (.platinum) - callsub Get_Platinum; - close; - } - if (getargcount() == 1) - return; - mes "[Job Master]"; - } - end; -} - -function A_An { - setarray .@vowels$, "a", "e", "i", "o", "u"; - .@firstletter$ = strtolower(charat(getarg(0), 0)); - for (.@i = 0; .@i < getarraysize(.@vowels); ++.@i) { - if (.@vowels$[.@i] == .@firstletter$) - return "an "+getarg(0); - } - return "a "+getarg(0); -} - -Get_Platinum: - skill NV_FIRSTAID, 1, 0; - if (BaseClass == Job_Novice) { - if (Class != Job_SuperNovice) - skill NV_TRICKDEAD, 1, 0; - } else if (BaseClass == Job_Swordman) { - skill SM_MOVINGRECOVERY, 1, 0; - skill SM_FATALBLOW, 1, 0; - skill SM_AUTOBERSERK, 1, 0; - } else if (BaseClass == Job_Mage) { - skill MG_ENERGYCOAT, 1, 0; - } else if (BaseClass == Job_Archer) { - skill AC_MAKINGARROW, 1, 0; - skill AC_CHARGEARROW, 1, 0; - } else if (BaseClass == Job_Acolyte) { - skill AL_HOLYLIGHT, 1, 0; - } else if (BaseClass == Job_Merchant) { - skill MC_CARTREVOLUTION, 1, 0; - skill MC_CHANGECART, 1, 0; - skill MC_LOUD, 1, 0; - } else if (BaseClass == Job_Thief) { - skill TF_SPRINKLESAND, 1, 0; - skill TF_BACKSLIDING, 1, 0; - skill TF_PICKSTONE, 1, 0; - skill TF_THROWSTONE, 1, 0; - } - - if (BaseJob == Job_Knight) { - skill KN_CHARGEATK, 1, 0; - } else if (BaseJob == Job_Priest) { - skill PR_REDEMPTIO, 1, 0; - } else if (BaseJob == Job_Wizard) { - skill WZ_SIGHTBLASTER, 1, 0; - } else if (BaseJob == Job_Blacksmith) { - skill BS_UNFAIRLYTRICK, 1, 0; - skill BS_GREED, 1, 0; - } else if (BaseJob == Job_Hunter) { - skill HT_PHANTASMIC, 1, 0; - } else if (BaseJob == Job_Assassin) { - skill AS_SONICACCEL, 1, 0; - skill AS_VENOMKNIFE, 1, 0; - } else if (BaseJob == Job_Crusader) { - skill CR_SHRINK, 1, 0; - } else if (BaseJob == Job_Monk) { - skill MO_KITRANSLATION, 1, 0; - skill MO_BALKYOUNG, 1, 0; - } else if (BaseJob == Job_Sage) { - skill SA_CREATECON, 1, 0; - skill SA_ELEMENTWATER, 1, 0; - skill SA_ELEMENTGROUND, 1, 0; - skill SA_ELEMENTFIRE, 1, 0; - skill SA_ELEMENTWIND, 1, 0; - } else if (BaseJob == Job_Rogue) { - skill RG_CLOSECONFINE, 1, 0; - } else if (BaseJob == Job_Alchemist) { - skill AM_BIOETHICS, 1, 0; - } else if (BaseJob == Job_Bard) { - skill BA_PANGVOICE, 1, 0; - } else if (BaseJob == Job_Dancer) { - skill DC_WINKCHARM, 1, 0; - } - return; - -OnInit: - .rebirth_blevel = 99; // Minimum base level to reborn OR change to third class - .rebirth_jlevel = 50; // Minimum base job level to reborn OR change to third class - .jobchange_first = 10; // Minimum job level to turn into 1st class - .jobchange_second = 40; // Minimum job level to turn into 2nd class - .third_classes = 1; // Enable third classes/Extended Classes? (1: yes / 0: no) - .supernovice_level = 45; // Minimum base level to turn into Super Novice - .linear_jobchange = 1; // Enforce linear class changes? (1: yes / 0: no) - .skill_point_check = 1; // Force player to use up all skill points? (1: yes / 0: no) - .platinum = 1; // Get platinum skills automatically? (1: yes / 0: no) - end; -} diff --git a/npc/custom/platinum_skills.txt b/npc/custom/platinum_skills.txt deleted file mode 100644 index 3cd85f873..000000000 --- a/npc/custom/platinum_skills.txt +++ /dev/null @@ -1,61 +0,0 @@ -//===== Hercules Script ====================================== -//= Platinum Skills -//===== By: ================================================== -//= Keichii, DarkChild -//===== Current Version: ===================================== -//= 2.8 -//===== Description: ========================================= -//= Single NPC that assigns quests skills for all classes -//===== Additional Comments: ================================= -//= 2.0 Added advanced classes by ShadowLady. -//= 2.1 Added baby clases by Midas -//= 2.2 Simplified Job Checks [Silentdragon] -//= 2.3 Thehell? Cleaned up script removed the nastiness. Also added rebirth skills. [Spre] -//= 2.4 Added Advanced skills. [Spre] -//= 2.5 Added dialog for if the user is none of the listed jobs. [Kisuka] -//= 2.6 Fixed 2nd advanced classes not being able to get their advanced skills. [Ancyker] -//= 2.7 Rewrote to give all correct skills to all proper classes. [Paradox924X] -//= 2.8 Clustered conditionals replaced with switch to include all Upper types. [Euphy] -//============================================================ - -prontera,128,200,6 script Platinum Skill NPC 4_F_MAID,{ - mes "[Platinum Skill NPC]"; - mes "I can give you the special skills available to your job."; - mes "Would you like these skills now?"; - next; - if (select("Yes Please", "No") == 2) { - mes "[Platinum Skill NPC]"; - mes "Have a nice day... >.>"; - close; - } - skill 142,1,0; - switch(BaseClass) { - case 0: if (Class !=23) skill 143,1,0; break; - case 1: skill 144,1,0; skill 145,1,0; skill 146,1,0; break; - case 2: skill 157,1,0; break; - case 3: skill 147,1,0; skill 148,1,0; break; - case 4: skill 156,1,0; break; - case 5: skill 153,1,0; skill 154,1,0; skill 155,1,0; break; - case 6: skill 149,1,0; skill 150,1,0; skill 151,1,0; skill 152,1,0; break; - default: break; - } - switch(BaseJob) { - case 7: skill 1001,1,0; break; - case 8: skill 1014,1,0; break; - case 9: skill 1006,1,0; break; - case 10: skill 1012,1,0; skill 1013,1,0; break; - case 11: skill 1009,1,0; break; - case 12: skill 1003,1,0; skill 1004,1,0; break; - case 14: skill 1002,1,0; break; - case 15: skill 1015,1,0; skill 1016,1,0; break; - case 16: skill 1007,1,0; skill 1008,1,0; skill 1017,1,0; skill 1018,1,0; skill 1019,1,0; break; - case 17: skill 1005,1,0; break; - case 18: skill 238,1,0; break; - case 19: skill 1010,1,0; break; - case 20: skill 1011,1,0; break; - default: break; - } - mes "[Platinum Skill NPC]"; - mes "There you go!"; - close; -} diff --git a/npc/custom/quests/bandit_beard.txt b/npc/custom/quests/bandit_beard.txt deleted file mode 100644 index 9f9e509f4..000000000 --- a/npc/custom/quests/bandit_beard.txt +++ /dev/null @@ -1,231 +0,0 @@ -//===== Hercules Script ====================================== -//= Bandit Beard Quest -//===== By: ================================================== -//= Mega Man Expert & Lupus -//===== Current Version: ===================================== -//= 1.3 -//===== Description: ========================================= -//= A harmless quest for a simply item w/o any bonuses "Bandit Beard" -//===== Additional Comments: ================================= -//= Fully working. -//= 1.0 First release -//= 1.1 Fixed some exploits, bugs and typos. Optimized 8) [Lupus] -//= 1.1b fixed some typos -//= 1.2 fixed donpcevent label [Lupus] -//= 1.3 Removed duplicates [L0ne_W0lf] -//============================================================ - -umbala,126,129,4 script Bearded Man#bandit 2_M_PHARMACIST,{ - if(BEARD_QUEST == 4 ) goto L_MAKE; - if(BEARD_QUEST >= 5 ) goto L_DONE; - if(BEARD_QUEST >= 1 ) goto L_THREAD; - - mes "[Bearded Man]"; - mes "Beards! Get your wonderful beards!"; - mes "Would you like a beard?"; - next; - if (select("Yes, I'd like some facial hair!", "No thanks, thats gross!") != 1) { - mes "[Bearded Man]"; - mes "Fine, be that way!"; - emotion 7; - close; - } - - mes "[Bearded Man]"; - mes "HoHo~ So you want some whiskers."; - emotion 18; - mes "Well I would give you my beards but there not cheap."; - mes "Matter of fact I have only one left..."; - mes "but I'm not selling it."; - mes "But don't get mad! I can make you one."; - next; - set BEARD_QUEST,1; -L_THREAD: - mes "[Bearded Man]"; - mes "I would need some ^8080FFThread^000000 for the Beard."; - mes "Talk to my friend in Izlude for some ^8080FFThread^000000."; - next; - - mes "[Bearded Man]"; - mes "Also I would need you to get me some things for the beard."; - mes "They are:"; -L_List: - mes "^8080FFElastic Band^000000"; - mes "^8080FF5 Animal Skins^000000"; - mes "^8080FFBlack Dye Stuff^000000"; - mes "^8080FFGranpa Beard^000000"; - mes "^8080FF100 sticky Mucus^000000"; - mes "^8080FFCounteragent^000000"; - mes " and one ^8080FF2 Carat Diamond^000000"; - close; - -L_DONE: - mes "[Bearded Man]"; - mes "Sorry, I can only make one per person."; - mes "We don't want too many beards now. Right?"; - emotion 29; - close; - -L_MAKE: - mes "[Bearded Man]"; - mes "Let's make you your beard!"; - next; - if(countitem(Flexible_String) < 1 || countitem(Animals_Skin) < 1 || countitem(Black_Dyestuffs) < 1 || countitem(Granpa_Beard) < 1 || - countitem(Sticky_Mucus) < 100 || countitem(Counteragent) < 1 || countitem(Crystal_Jewel_) < 1) goto L_NOITEMS; - delitem 7200, 1; - delitem 919, 1; - delitem 983, 1; - delitem 2241, 1; - delitem 938, 100; - delitem 973, 1; - delitem 731, 1; - mes "^8080FF~You see him cutting and sewing the beard together~^000000"; - next; - mes "^8080FF~He hands you the finished beard~^000000"; - next; - getitem 2237, 1; - set BEARD_QUEST, 5; - mes "[Bearded Man]"; - mes "Have a nice day!"; - emotion 29; - close; - -L_NOITEMS: - mes "[Bearded Man]"; - mes "What the hell! I can't make a beard without the items!"; - mes "Here is the list again:"; - emotion 23; - goto L_List; -} - -//Master Tailor---------- -izlude_in,123,175,4 script Master Tailor#bandit 1_M_04,{ - mes "[Master Tailor]"; - mes "Good evening! I am the Master Tailor!"; - if(BEARD_QUEST != 1 ) close; - - next; - mes "[Master Tailor]"; - mes "What? A Bearded Man sent you..."; - mes "Well I'm sorry to say that I am out of ^8080FFThread^000000."; - mes "But I have the address to where I get the shipments."; - mes "It is in Al de Baran Karfa Inc. warehouse area."; - mes "The address is: Al de Baran 59, 221"; - mes "See you later."; - set BEARD_QUEST, 2; - close; -} -// Karfa Thread Clerk--- -aldeba_in,70,179,5 script Karfa Clerk#bandit 4_F_KAFRA5,{ - mes "[Karfa Clerk]"; - if(BEARD_QUEST == 3 ) goto L_REPEAT; - if(BEARD_QUEST > 3 ) goto L_DONE; - - mes "What can I do for you?"; - next; - if(BEARD_QUEST == 2 ) goto L_Delivery; - - if (select("What's in the boxes?", "Nothing.") != 1) - close; - mes "[Karfa Clerk]"; - mes "They're empty."; - close; - -L_Delivery: - - mes "[Karfa Clerk]"; - mes "Sorry but we have not received any ^8080FFThread^000000."; - mes "Our shipments have been put off until its safe."; - mes "You see we get our ^8080FFThread^000000 from Alberta and a monsters keeps attacking our merchants."; - next; - mes "[Karfa Clerk]"; - mes "Now this monsters has not been doing this before."; - mes "It may have to do with the warmer months."; - mes "Please help us out!"; - set BEARD_QUEST,3; - next; - mes "[Karfa Clerk]"; -L_REPEAT: - mes "Oh by the way, that Thread Merchant is somewhere around Alberta 60 and 100..."; -L_DONE: - mes "Thank You!"; - close; -} - -//Thread Merchant ------ -alberta,65,123,6 script Man#bandit 4_M_03,{ - if(BEARD_QUEST == 3 && $@beardMobD) goto L_KILLED; - if(BEARD_QUEST > 3) goto L_DONE; - - mes "[Thread Merchant]"; - mes "ARGGG!! I can never get my stuff to Al de Baran!"; - mes "I keep getting mobbed by some bugs."; - mes "They steal all my supplies and ^8080FFThread^000000."; - next; - mes "[Thread Merchant]"; - - if(BEARD_QUEST != 3) mes "What am I to do?"; - if(BEARD_QUEST != 3) close; - - if($@beardmob > 0) mes "Kill! Kill them already!!!"; - if($@beardmob > 0) close; - mes "Are you here to help me?"; - emotion 1; - next; - if (select("Yes", "No") != 1) { - mes "[Thread Merchant]"; - mes "What to do..."; - close; - } - mes "[Thread Merchant]"; - mes "Oh thank the Gods!"; - mes "If you can only just kill the bugs I would be able to make my delivery."; - next; - mes "[Thread Merchant]"; - mes "Oh NO! Here they come!!"; - emotion 19; - donpcevent "BRDQ_MOBS::OnStart"; - close; - -L_KILLED: - set $@beardMobD,0; - mes "[Thread Merchant]"; - mes "Thank you for killing the Thief Bugs."; - mes "As a token of my gratitude here is a box full of ^8080FFThread^000000."; - set BEARD_QUEST,4; - close; - -L_DONE: - mes "[Thread Merchant]"; - mes "Thank you again!"; - emotion 15; - close; -} - -//mobsummons ------- -alberta,1,1,1 script BRDQ_MOBS FAKE_NPC,{ -OnStart: - set $@beardmob,10; - set $@beardMobD,0; - monster "alberta",65,120,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",66,120,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",67,120,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",68,120,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",66,121,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",67,121,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",68,121,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",66,122,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",67,122,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",68,122,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - end; -OnDie: - set $@beardmob, $@beardmob - 1; - if($@beardmob > 0) end; - set $@beardMobD,1; - end; -OnClock1201: -OnClock0001: - set $@beardmob,0; - set $@beardMobD,0; - end; -} diff --git a/npc/custom/quests/berzebub.txt b/npc/custom/quests/berzebub.txt deleted file mode 100644 index 5590a1911..000000000 --- a/npc/custom/quests/berzebub.txt +++ /dev/null @@ -1,62 +0,0 @@ -//===== Hercules Script ====================================== -//= Berzebub Card Quest -//===== By: ================================================== -//= jabs -//===== Current Version: ===================================== -//= 1.1 -//===== Description: ========================================= -//= Quest to get the Berzebub Card -//===== Additional Comments: ================================= -//= 1.1 Fixed ingredients. Was too exploitable [Lupus] -//= 1.2 Optimized. [Euphy] -//============================================================ - -prontera,165,178,0 script Old Woman 8_F_GRANDMOTHER,{ - - setarray .@items[0],714,25,1061,100,1095,200,618,10,1551,2,1614,1,727,20; - set .@n$,"[Old Woman]"; - - mes .@n$; - if(BerzQuest == 1) { - mes "Hey, I remember you! I already told you that you may only complete this quest once."; - close; } - mes "Greeting, lad. I found a really nifty item while I was picking mushrooms near Glast Heim."; - next; - if(select("Keep Talking", "Leave")==2) goto M_Leave; - - mes .@n$; - mes "I have never seen an item like this before. I am told it can be placed inside any accessory with a slot available."; - next; - mes .@n$; - mes "If you're interested in this item, I'll tell you what you need for me to make you one of your own. I can only give one of these to each player, so once you finish this quest, you may not do it again."; - next; - if(select("Tell me more about it", "Nah, I don't care about it")==2) goto M_Leave; - - mes .@n$; - mes "I believe the item is called a ^FF0000Berzebub Card^000000. It makes you cast spells really fast!"; - next; - mes .@n$; - mes "I need all of the following items:"; - for(set .@i,0; .@i<getarraysize(.@items); set .@i,.@i+2) { - mes " ~ "+.@items[.@i+1]+"x "+getitemname(.@items[.@i]); - if (countitem(.@items[.@i]) < .@items[.@i+1]) set .@nr,1; } - next; - if(select("I have all of that!", "I'll get those ASAP")==2) goto M_Leave; - - mes .@n$; - if (.@nr) { - mes "You lie! Get out of here and get those items, you sorry excuse for a rock star."; - close; } - for(set .@i,0; .@i<getarraysize(.@items); set .@i,.@i+2) - delitem .@items[.@i], .@items[.@i+1]; - getitem 4145,1; - set BerzQuest, 1; - mes "Congratulations! You have all the items. Here is your ^FF0000Berzebub Card^000000, as promised."; - emotion e_grat; - close; - -M_Leave: - mes .@n$; - mes "Such a great item I have right here..."; - close; -} diff --git a/npc/custom/quests/dead_branch.txt b/npc/custom/quests/dead_branch.txt deleted file mode 100644 index 7ae12a60c..000000000 --- a/npc/custom/quests/dead_branch.txt +++ /dev/null @@ -1,95 +0,0 @@ -//===== Hercules Script ====================================== -//= Dead Branch (+Bloody Branch) Quest -//===== By: ================================================== -//= GM-Yevon -//===== Current Version: ===================================== -//= 1.1 -//===== Description: ========================================= -// Simple item trade-in quest, a person can get a Dead Branch -// by simply providing the items: Log x3 (7201), Wooden Heart x1 (7189), -// Trunk x5 (1019), and Wooden Gnarl x1 (7222). -//===== Additional Comments: ================================= -//= 1.1 Optimized, added Bloody Branch with 0.01% chance [Lupus] -//============================================================ - -niflheim,204,179,3 script Mister Mobry 2_M_MOLGENSTEIN,{ - - mes "[Mister Mobry]"; - mes "Trees possess spirits you know..."; - next; - - mes "[Mister Mobry]"; - mes "In fact I know a secret about these spirits that can in some way... perhaps aid you..."; - next; - - mes "[Mister Mobry]"; - mes "I can create a spirited branch... That is, if you can provide me with the correct materials..."; - next; - while (true) { - switch (select("What Do I Need?", "Where Can I find this Crap?", "Make me a Dead Branch!", "Forget it...")) { - case 1: - mes "[Mister Mobry]"; - mes "Mwehehe... I see you want to control tree spirits am I right? Ok... I need:"; - mes "^1354453 Logs^000000"; - mes "^1354451 Wooden Heart^000000"; - mes "^1354455 Trunk^000000"; - mes "^1354451 Wooden Gnarl^000000"; - next; - continue; - case 2: - mes "[Mister Mobry]"; - mes "You can find the following items from certain monsters heheh..."; - mes "^135445Logs can be found off of Tree Golems.^000000"; - mes "^135445Wooden Hearts the essence of Tree Golems.^000000"; - mes "^135445Trunks? Seriously, think wood...^000000"; - mes "^135445Wooden Gnarl... Gibbet...^000000"; - next; - continue; - case 3: - mes "[Mister Mobry]"; - mes "Well...let us see what you brought me..."; - next; - if (countitem(Log)<3) { - mes "[Mister Mobry]"; - mes "^135445Logs^000000 are the body... I need more of them."; - mes "Get me three logs and I'll make you the spirit..."; - close; - } - if (countitem(Heart_Of_Tree)<1) { - mes "[Mister Mobry]"; - mes "The ^135445Wooden Heart^000000 is the essence of the spirit."; - mes "Get me one wooden heart and I'll make you the spirit..."; - close; - } - if (countitem(Wooden_Block)<5) { - mes "[Mister Mobry]"; - mes "What? You couldn't even find ^1354455 Trunks^000000?"; - mes "Kill Elder Willows or something... Geez... no trunks heh... pathetic."; - close; - } - if (countitem(Tree_Knot)<1) { - mes "[Mister Mobry]"; - mes "How can I make one without a ^135445Wooden Gnarl^000000?"; - mes "I said Gibbet... they are all around this place..."; - close; - } - delitem 7201,3; - delitem 7189,1; - delitem 1019,5; - delitem 7222,1; - mes "[Mister Mobry]"; - mes "Heh... Hope you have fun with the tree spirits... Careful now..."; - mes "Heh... careful now? What do I care if you di..... Never mind."; - if (rand(1000)==0) { - getitem Bloody_Dead_Branch,1; //Bloody Branch - close; - } - getitem Branch_Of_Dead_Tree,1; //Dead Branch - close; - case 4: - mes "[Mister Mobry]"; - mes "No spirit for you... then go!"; - close; - } - } -} diff --git a/npc/custom/quests/elvenear.txt b/npc/custom/quests/elvenear.txt deleted file mode 100644 index 02e650e78..000000000 --- a/npc/custom/quests/elvenear.txt +++ /dev/null @@ -1,62 +0,0 @@ -//===== Hercules Script ====================================== -//= Daily Job Quest For Elven Ears -//===== By: ================================================== -//= someone -//===== Current Version: ===================================== -//= 1.2 -//===== Description: ========================================= -//= Elven Ears (require 75+ Base Level) -//===== Additional Comments: ================================= -//= Optimized [Lupus], 1.1 misc fix -//= 1.2 Fixed exploit [Lupus] -//============================================================ - -geffen,127,49,5 script Elven Ears Quest 4_M_02,{ - mes "[Elven Ears Quest]"; - mes "Hi, today's quest is...."; - mes "Ah, the ^61B031Elven Ears ^000000Quest!"; - next; - switch (select("Requirements", "Make Item", "Cancel")) { - case 1: - mes "[Elven Ears Quest]"; - mes "Ok all you have to do is collect:"; - mes "^362ED61 Kitty Band^000000"; - mes "^362ED620 Elder Pixie Mustaches^000000"; - mes "and ^362ED620 Animal Skin^000000"; - next; - if (select("Accept", "Leave") != 1) { - mes "[Elven Ears quest]"; - mes "Maybe another time?"; - close; - } - mes "[Elven Ears Quest]"; - mes "When you are done, bring the items to me. Ok good luck finding those items."; - close; - case 2: - mes "[Elven Ears quest]"; - mes "Good good, let me just check"; - next; - if (countitem(Cat_Hairband) < 1 || countitem(Elder_Pixies_Beard) < 20 || countitem(Animals_Skin) < 20) { - mes "[Elven Ears Quest]"; - mes "You don't have the requirements."; - mes "Please come back another time..."; - close; - } - delitem 2213,1; - delitem 1040,20; - delitem 919,20; - mes "[Elven Ears quest]"; - mes "Give me a second....."; - next; - getitem 2286,1; - mes "[Elven Ears Quest]"; - mes "Ok done!"; - close; - case 3: - mes "[Elven Ears quest]"; - mes "Aw, what a shame"; - mes "Giving up already?"; - mes "Oh well maybe you will participate in tommorow's quest."; - close; - } -} diff --git a/npc/custom/quests/event_6_new_hats.txt b/npc/custom/quests/event_6_new_hats.txt deleted file mode 100644 index 50110ff52..000000000 --- a/npc/custom/quests/event_6_new_hats.txt +++ /dev/null @@ -1,389 +0,0 @@ -//===== Hercules Script ====================================== -//= Custom Quest For New Headgears -//===== By: ================================================== -//= RedxSwordxHero, Lupus -//===== Current Version: ===================================== -//= 1.4b -//===== Description: ========================================= -//= 4 brothers give you quests to get 6 new hats (missing -//= from official quests) -//= Use this custom quest instead of event_32_new_hats.txt -//= -Bongun Hat -//= -Poring Hat, Sphinx Hat -//= -Kafra Band, Panda Hat -//= -Crescent Hairpin -//===== Additional Comments: ================================= -//= Event New Hats by RedxSwordxHero -//= Ported and improved with timers [Lupus] -//= Thanks to x[tsk],fixed all item requirements to iRO specs exept -//= for hats which cannot be made on the real server. [Lupus] -//= 1.2 removed already existing official hat quests [Lupus] -//= 1.3 Spiffed up the NPC coords and their appearance [Lupus] -//= 1.4 Fixed exploits. 1.4a fixed wrong item ID [Lupus] -//============================================================ - -prt_in,130,66,5 script Zac 4_M_BIBI,{ - mes "[Zac]"; - mes "I am the oldest and strongest of the 4 brothers that makes all the newer hats. You will need to bring me the correct items for each hat, so I can make them."; - next; - mes "[Zac]"; - mes "I provide 1 hat and my brothers provides the other 5."; - next; - switch (select("Join", "Information", "Cancel")) { - case 1: - mes "[Zac]"; - mes "What hat do you want me to make?"; - next; - switch (select("Bongun Hat")) { - case 1: - mes "[Zac]"; - mes "Let me check the items you have brought here."; - next; - if (countitem(Amulet) < 10) { - mes "[Zac]"; - mes "Oh, dear. You need 10 Amulets..."; - close; - } - if (countitem(Cobaltblue_Dyestuffs) < 1) { - mes "[Zac]"; - mes "Oh, dear. You need 1 Cobaltblue Dyestuffs..."; - close; - } - if (countitem(Munak_Turban) < 1) { - mes "[Zac]"; - mes "Oh, dear. You need 1 Munak Hat..."; - close; - } - delitem Amulet,10;//Items: Amulet, - delitem Cobaltblue_Dyestuffs,1;//Items: Cobaltblue Dyestuff, - delitem Munak_Turban,1; //Items: Munak Hat, - mes "[Zac]"; - mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Bongun Hat for you right away. Please Wait a Moment."; - next; - mes "[Zac]"; - mes "Tah Dah! ^FF0000Bongun Hat^000000...! Please Take it!"; - getitem Bongun_Hat,1;//Items: Bongun Hat, - next; - mes "[Zac]"; - mes "I liked that, I look forward to making more. Thank you."; - close; - } - break; - case 2: - mes "[Zac]"; - mes "Which hat materials do you wish to know?"; - next; - switch (select("Bongun Hat")) { - case 1: - mes "[Zac]"; - mes "You need 10 Amulets, 1 Cobaltblue Dyestuffs and 1 Munak Hat for Bongun Hat."; - close; - } - break; - case 3: - mes "[Zac]"; - mes "Stop by some other time with the right materials, so I can make the hats for you."; - close; - } -} - -prt_in,162,131,5 script Blac 4_M_JOB_HUNTER,{ - mes "[Blac]"; - mes "I am the youngest and sexiest of the 4 brothers that makes all the newer hats. You will need to bring me the correct items for each hat, so I can make them."; - next; - mes "[Blac]"; - mes "I provide 1 hat and my brothers provides the other 5."; - next; - switch (select("Join", "Information", "Cancel")) { - case 1: - mes "[Blac]"; - mes "What hat do you want me to make?"; - next; - switch (select("Crescent Hairpin")) { - case 1: - mes "[Blac]"; - mes "Let me check the items you have brought here."; - next; - if (countitem(Heart_Hair_Pin) < 1) { - mes "[Blac]"; - mes "Oh, dear. You need 1 Heart Hairpin..."; - close; - } - if (countitem(Steel) < 10) { - mes "[Blac]"; - mes "Oh, dear. You need 10 Steels..."; - close; - } - delitem Heart_Hair_Pin,1;//Items: Heart Hairpin, - delitem Steel,10; //Items: Steel, - mes "[Blac]"; - mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Crescent Hairpin for you right away. Please Wait a Moment."; - next; - mes "[Blac]"; - mes "Tah Dah! ^FF0000Crescent Hairpin^000000...! Please Take it!"; - getitem First_Moon_Hair_Pin,1;//Items: Cresent Hairpin, - next; - mes "[Blac]"; - mes "I liked that, I look forward to making more. Thank you."; - close; - } - break; - case 2: - mes "[Blac]"; - mes "Which hat materials do you wish to know?"; - next; - switch (select("Crescent Hairpin")) { - case 1: - mes "[Blac]"; - mes "You need 1 Heart Hairpin and 10 Steels for Crescent Hairpin."; - close; - } - break; - case 3: - mes "[Blac]"; - mes "Stop by some other time with the right materials, so I can make the hats for you."; - close; - } -} - -prt_in,53,56,5 script Jac 1_M_PAY_ELDER,{ - mes "[Jac]"; - mes "I am the 2nd oldest and calmest of the 4 brothers that makes all the newer hats. You will need to bring me the correct items for each hat, so I can make them."; - next; - mes "[Jac]"; - mes "I provide 2 hats and my brothers provides the other 4."; - next; - switch (select("Join", "Information", "Cancel")) { - case 1: - mes "[Jac]"; - mes "What hat do you want me to make?"; - next; - switch (select("Kafra Band", "Panda Hat")) { - case 1: - mes "[Jac]"; - mes "Let me check the items you have brought here."; - next; - if (countitem(Silk_Ribbon) < 1) { - mes "[Jac]"; - mes "Oh, dear. You need 1 Silk Ribbon..."; - close; - } - if (countitem(Wild_Flower) < 1) { - mes "[Jac]"; - mes "Oh, dear. You need 1 Wild Flower..."; - close; - } - delitem Silk_Ribbon,1;//Items: Silk Ribbon, - delitem Wild_Flower,1; //Items: Wild Flower, - mes "[Jac]"; - mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Kafra Band for you right away. Please Wait a Moment."; - next; - mes "[Jac]"; - mes "Tah Dah! ^FF0000Kafra Band^000000...! Please Take it!"; - getitem Kafra_Band,1;//Items: Kafra's Band, - next; - mes "[Jac]"; - mes "I liked that, I look forward to making more. Thank you."; - close; - case 2: - mes "[Jac]"; - mes "Let me check the items you have brought here."; - next; - if (countitem(Steel) < 10) { - mes "[Jac]"; - mes "Oh, dear. You need 10 Steels..."; - close; - } - if (countitem(Bears_Foot) < 200) { - mes "[Jac]"; - mes "Oh, dear. You need 200 Bear Footskins..."; - close; - } - delitem Steel,10;//Items: Steel, - delitem Bears_Foot,200; //Items: Bears Footskin, - mes "[Jac]"; - mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Panda Hat for you right away. Please Wait a Moment."; - next; - mes "[Jac]"; - mes "Tah Dah! ^FF0000Panda Hat^000000...! Please Take it!"; - getitem Panda_Cap,1;//Items: Panda Hat, - next; - mes "[Jac]"; - mes "I liked that, I look forward to making more. Thank you."; - close; - } - break; - case 2: - mes "[Jac]"; - mes "Which hat materials do you wish to know?"; - next; - switch (select("Kafra Band", "Panda Hat")) { - case 1: - mes "[Jac]"; - mes "You need 1 Silk Ribbon and 1 Wild Flower for Kafra Band."; - close; - case 2: - mes "[Jac]"; - mes "You need 10 Steels and 200 Bear Footskins for Panda Hat."; - close; - } - break; - case 3: - mes "[Jac]"; - mes "Stop by some other time with the right materials, so I can make the hats for you."; - close; - } -} - -prt_in,45,113,5 script Pac 4_M_GEF_SOLDIER,{ - mes "[Pac]"; - mes "I am 3rd oldest and wisest of the 4 brothers that makes all the newer hats. You will need to bring me the correct items for each hat so I can make them."; - next; - mes "[Pac]"; - mes "I provide 2 hats and my brothers provides the other 4."; - next; - switch (select("Join", "Information", "Cancel")) { - case 1: - mes "[Pac]"; - mes "What hat do you want me to make?"; - next; - switch (select("Poring Hat", "Sphinx Hat")) { - case 1: - mes "[Pac]"; - mes "Let me check the items you have brought here."; - next; - if (countitem(Poring_Doll) < 1) { - mes "[Pac]"; - mes "Oh, dear. You need 1 Poring Doll..."; - close; - } - if (countitem(Jellopy) < 300) { - mes "[Pac]"; - mes "Oh, dear. You need 300 Jellopys..."; - close; - } - delitem Poring_Doll,1;//Items: Poring Doll, - delitem Jellopy,300;//Items: Jellopy, - mes "[Pac]"; - mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Poring Hat for you right away. Please Wait a Moment."; - next; - mes "[Pac]"; - mes "Tah Dah! ^FF0000Poring Hat^000000...! Please Take it!"; - getitem Poring_Hat,1;//Items: Poring Hat, - next; - mes "[Pac]"; - mes "I liked that, I look forward to making more. Thank you."; - close; - case 2: - mes "[Pac]"; - mes "Let me check the items you have brought here."; - next; - if (countitem(Steel) < 25) { - mes "[Pac]"; - mes "Oh, dear. You need 25 Steels..."; - close; - } - if (countitem(Darkgreen_Dyestuffs) < 1) { - mes "[Pac]"; - mes "Oh, dear. You need 1 DarkGreen Dyestuffs..."; - close; - } - if (countitem(Lemon_Dyestuffs) < 1) { - mes "[Pac]"; - mes "Oh, dear. You need 1 Lemon Dyestuffs..."; - close; - } - if (countitem(Transparent_Cloth) < 150) { - mes "[Pac]"; - mes "Oh, dear. You need 150 Fabric..."; - close; - } - if (countitem(Gold) < 2) { - mes "[Pac]"; - mes "Oh, dear. You need 2 Gold Bar's..."; - close; - } - delitem Steel,25;//Items: Steel, - delitem Darkgreen_Dyestuffs,1;//Items: Darkgreen Dyestuff, - delitem Lemon_Dyestuffs,1;//Items: Lemon Dyestuffs, - delitem Transparent_Cloth,150;//Items: Fabric, - delitem Gold,2; //Items: Gold, - mes "[Pac]"; - mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Sphinx Hat for you right away. Please Wait a Moment."; - next; - mes "[Pac]"; - mes "Tah Dah! ^FF0000Sphinx Hat^000000...! Please Take it!"; - getitem Spinx_Helm,1;//Items: Sphinx Hat, - next; - mes "[Pac]"; - mes "I liked that, I look forward to making more. Thank you."; - close; - } - break; - case 2: - mes "[Pac]"; - mes "Which hat materials do you wish to know?"; - next; - switch (select("Poring Hat", "Sphinx Hat")) { - case 1: - mes "[Pac]"; - mes "You need 1 Poring Doll and 300 Jellopys for Poring Hat."; - close; - case 2: - mes "[Pac]"; - mes "You need 25 Steels, 1 DarkGreen Dyestuffs, 1 Lemon Dyestuffs, 150 Fabric and 2 Gold Bar's for Sphinx Hat."; - close; - } - break; - case 3: - mes "[Pac]"; - mes "Stop by some other time with the right materials, so I can make the hats for you."; - close; - } -} - - -//these scripts make our brothers to appear and disappear in order -- script EDZac FAKE_NPC,{ -OnInit: -OnMinute15: - disablenpc "Zac"; - end; -OnMinute01: - if(rand(2)) end; - enablenpc "Zac"; - end; -} - -- script EDJac FAKE_NPC,{ -OnInit: -OnMinute30: - disablenpc "Jac"; - end; -OnMinute16: - if(rand(2)) end; - enablenpc "Jac"; - end; -} - -- script EDPac FAKE_NPC,{ -OnInit: -OnMinute45: - disablenpc "Pac"; - end; -OnMinute31: - if(rand(2)) end; - enablenpc "Pac"; - end; -} - -- script EDBlac FAKE_NPC,{ -OnInit: -OnMinute00: - disablenpc "Blac"; - end; -OnMinute46: - if(rand(2)) end; - enablenpc "Blac"; - end; -} diff --git a/npc/custom/quests/hunting_missions.txt b/npc/custom/quests/hunting_missions.txt deleted file mode 100644 index 5ba860ed4..000000000 --- a/npc/custom/quests/hunting_missions.txt +++ /dev/null @@ -1,320 +0,0 @@ -//===== Hercules Script ====================================== -//= Hunting Missions -//===== By: ================================================== -//= Euphy -//===== Current Version: ===================================== -//= 1.4b -//===== Description: ========================================= -//= Random hunting missions. -//= Rewards are based on quest difficulty. -//===== Additional Comments: ================================= -//= 1.0 Initial script. -//= 1.1 Small improvements and fixes. -//= 1.2 Added party support and replaced blacklists with an -//= SQL query, both thanks to AnnieRuru. -//= 1.3 Re-added a blacklist adapted for the SQL query. -//= 1.3a Added mission reset options. -//= 1.4 Fix ranking table using new SQL database [ossi0110] -//= 1.4a Fix a bug when a character has deleted, that account -//= can't do mission. [AnnieRuru] -//= 1.4b Update to follow author's method on fixing -//= character deletion bug [AnnieRuru] -//============================================================ - -prontera,152,187,6 script Hunting Missions 4_F_EDEN_MASTER,{ -function Chk; function Cm; - mes "[Hunting Missions]"; - mes "Hello, "+strcharinfo(PC_NAME)+"!"; - if (!#Mission_Delay) { - next; - mes "[Hunting Missions]"; - mes "I can't find any records..."; - mes "You must be new here!"; - emotion e_omg; - next; - callsub Mission_Info; - emotion e_go; - set #Mission_Delay,1; - close; - } - mes rand(2)?"Working hard, as always...":"Not slacking, I hope..."; - mes "Is there anything I can help"; - mes "you with?"; - mes " "; - mes "^777777~ You've completed ^0055FF"+Mission_Total+"^777777 mission"+((Mission_Total == 1)?"":"s")+". ~^000000"; - next; - switch(select(((!Mission0)?" ~ New Mission::":": ~ Mission Status: ~ Abandon Mission")+": ~ Information: ~ Mission Shop: ~ View Top Hunters: ~ ^777777Cancel^000000")) { - case 1: - mes "[Hunting Missions]"; - if ( #Mission_Count ) { - mes "You've started a mission"; - mes "on another character."; - if ( !@hm_char_del_check ) { - if ( !query_sql( "SELECT 1 FROM `char_reg_num_db` WHERE `key` = 'Mission0' AND `char_id` IN ( SELECT `char_id` FROM `char` WHERE `account_id` = "+ getcharid(CHAR_ID_ACCOUNT) +" )", .@dummy ) ) { - next; - mes "[Hunting Missions]"; - mes "I can't seem to find any records"; - mes "for that character, though..."; - mes "One moment, please."; - emotion e_hmm; - set #Mission_Count, 0; - } - set @hm_char_del_check, 1; - } - close; - } - if (#Mission_Delay > gettimetick(2) && .Delay) { - set .@i, #Mission_Delay-gettimetick(2); - if (.@i > 3600) set .@j$, (.@i/3600)+" hour"+(((.@i/3600) == 1)?"":"s"); - else if (.@i > 60) set .@j$, (.@i/60)+" minute"+(((.@i/60) == 1)?"":"s"); - else set .@j$, (.@i)+" second"+((.@i == 1)?"":"s"); - mes "I'm afraid you'll have to wait "+.@j$+" before taking another mission."; - close; - } - mes "You must hunt:"; - query_sql("SELECT ID FROM `mob_db` WHERE left(Sprite, 4) != 'meta' AND left(Sprite, 2) != 'E_' AND ~Mode & 32 AND EXP > 0 AND MVP1id = 0 AND DropCardid > 4000 AND DropCardid < 5000 AND ID < 2000 AND instr('"+.Blacklist$+"',ID) = 0 ORDER BY rand() LIMIT "+.Quests, .@mob); - for (set .@i,0; .@i<.Quests; set .@i,.@i+1) { - setd "Mission"+.@i, .@mob[.@i]; - setd "Mission"+.@i +"_",0; - } - set #Mission_Count, rand(.Count[0],.Count[1]); - callsub Mission_Status; - next; - mes "[Hunting Missions]"; - mes "Report back when"; - mes "you've finished."; - mes "Good luck!"; - close; - case 2: - mes "[Hunting Missions]"; - mes "Mission status:"; - callsub Mission_Status; - close; - case 3: - mes "[Hunting Missions]"; - mes "Do you really want to"; - mes "abandon your mission?"; - if (.Reset < 0 && .Delay) - mes "Your delay time will not be reset."; - else if (.Reset > 0) - mes "It will cost "+Cm(.Reset)+" Zeny."; - next; - switch(select(" ~ Abandon...", " ~ ^777777Cancel^000000")) { - case 1: - if (.Reset > 0) { - if (Zeny < .Reset) { - mes "[Hunting Missions]"; - mes "You don't have enough"; - mes "Zeny to drop this mission."; - emotion e_sry; - close; - } - Zeny -= .Reset; - emotion e_cash; - } - mes "[Hunting Missions]"; - mes "Alright, I've dropped"; - mes "your current mission."; - specialeffect(EF_STORMKICK4, AREA, playerattached()); - for(set .@i,0; .@i<.Quests; set .@i,.@i+1) { - setd "Mission"+.@i,0; - setd "Mission"+.@i+"_",0; - } - set #Mission_Count,0; - if (.Reset < 0 && .Delay) set #Mission_Delay, gettimetick(2)+(.Delay*3600); - close; - case 2: - mes "[Hunting Missions]"; - mes "I knew you were kidding!"; - mes "Keep up the good work."; - emotion e_heh; - close; - } - case 4: - callsub Mission_Info; - close; - case 5: - mes "[Hunting Missions]"; - mes "You have ^0055FF"+#Mission_Points+"^000000 Mission Points."; - mes "Use them well!"; - callshop "mission_shop",1; - npcshopattach "mission_shop"; - end; - case 6: - mes "[Hunting Missions]"; - mes "The top hunters are:"; - query_sql("SELECT char_id AS id, (SELECT `name` FROM `char` WHERE char_id = id),`value` FROM `char_reg_num_db` WHERE `key` = 'Mission_Total' ORDER BY `value` DESC LIMIT 5",.@id,.@name$,.@val); - for(set .@i,0; .@i<5; set .@i,.@i+1) - mes " [Rank "+(.@i+1)+"] "+((.@name$[.@i] == "")?"^777777none":"^0055FF"+.@name$[.@i]+"^000000 : ^FF0000"+.@val[.@i]+" pt.")+"^000000"; - close; - case 7: - mes "[Hunting Missions]"; - mes "Nothing? Okay..."; - emotion e_hmm; - close; - } - -Mission_Status: - set @f,0; - deletearray .@j[0], getarraysize(.@j); - for(set .@i,0; .@i<.Quests; set .@i,.@i+1) { - set .@j[.@i], getd("Mission"+.@i); - set .@j[.Quests], .@j[.Quests]+strmobinfo(3,.@j[.@i]); - set .@j[.Quests+1], .@j[.Quests+1]+(strmobinfo(6,.@j[.@i])/(getbattleflag("base_exp_rate")/100)*.Modifier[0]); - set .@j[.Quests+2], .@j[.Quests+2]+(strmobinfo(7,.@j[.@i])/(getbattleflag("job_exp_rate")/100)*.Modifier[1]); - mes " > "+Chk(getd("Mission"+.@i+"_"),#Mission_Count)+strmobinfo(1,.@j[.@i])+" ("+getd("Mission"+.@i+"_")+"/"+#Mission_Count+")^000000"; - } - - // Reward formulas: - set .@Mission_Points, 3+(.@j[.Quests]/.Quests/6); - set .@Base_Exp, #Mission_Count*.@j[.Quests+1]/5; - set .@Job_Exp, #Mission_Count*.@j[.Quests+2]/5; - set .@zeny, #Mission_Count*.Quests*.@j[.@i]*.Modifier[2]; - - next; - mes "[Hunting Missions]"; - mes "Mission rewards:"; - mes " > Mission Points: ^0055FF"+.@Mission_Points+"^000000"; - mes " > Base Experience: ^0055FF"+Cm(.@Base_Exp)+"^000000"; - mes " > Job Experience: ^0055FF"+Cm(.@Job_Exp)+"^000000"; - mes " > Zeny: ^0055FF"+Cm(.@zeny)+"^000000"; - if (@f) { set @f,0; return; } - next; - mes "[Hunting Missions]"; - mes "Oh, you're done!"; - mes "Good work."; - mes "Here's your reward."; - emotion e_no1; - specialeffect(EF_ANGEL, AREA, playerattached()); - specialeffect(EF_TRUESIGHT, AREA, playerattached()); - set #Mission_Points, #Mission_Points+.@Mission_Points; - set BaseExp, BaseExp+.@Base_Exp; - set JobExp, JobExp+.@Job_Exp; - Zeny += .@zeny; - for(set .@i,0; .@i<.Quests; set .@i,.@i+1) { - setd "Mission"+.@i,0; - setd "Mission"+.@i+"_",0; - } - set #Mission_Count,0; - if (.Delay) set #Mission_Delay, gettimetick(2)+(.Delay*3600); - set Mission_Total, Mission_Total+1; - if (Mission_Total == 1) query_sql("INSERT INTO `char_reg_num_db` (`char_id`,`key`,`index`,`value`) VALUES ("+getcharid(CHAR_ID_CHAR)+",'Mission_Total','0',1)"); - else query_sql("UPDATE `char_reg_num_db` SET `value` = "+Mission_Total+" WHERE `char_id` = "+getcharid(CHAR_ID_CHAR)+" AND `key` = 'Mission_Total'"); - close; - -Mission_Info: - mes "[Hunting Missions]"; - mes "If you so choose, I can assign"; - mes "you a random hunting quest."; - mes "Some are easier than others, but"; - mes "the rewards increase with difficulty."; - next; - mes "[Hunting Missions]"; - mes "Missions points are shared"; - mes "amongst all your characters."; - if (.Delay) mes "Delay time is, too."; - mes "You can't take missions on"; - mes "multiple characters at once."; - next; - mes "[Hunting Missions]"; - mes "You can start a quest"; - if (.Delay) mes "every "+((.Delay == 1)?"hour.":.Delay+" hours."); - else mes "whenever you want."; - mes "That's everything~"; - return; - -function Chk { - if (getarg(0) < getarg(1)) { set @f,1; return "^FF0000"; } - else return "^00FF00"; } - -function Cm { - set .@str$, getarg(0); - for(set .@i,getstrlen(.@str$)-3; .@i>0; set .@i,.@i-3) - set .@str$, insertchar(.@str$,",",.@i); - return .@str$; } - -OnBuyItem: - set @cost,0; - for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1) - for(set .@j,0; .@j<getarraysize(.Shop); set .@j,.@j+2) - if (@bought_nameid[.@i] == .Shop[.@j]) { - set @cost, @cost+(.Shop[.@j+1]*@bought_quantity[.@i]); - break; - } - mes "[Hunting Missions]"; - if (@cost > #Mission_Points) mes "You don't have enough Mission Points."; - else { - for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1) { - getitem @bought_nameid[.@i], @bought_quantity[.@i]; - dispbottom "Purchased "+@bought_quantity[.@i]+"x "+getitemname(@bought_nameid[.@i])+"."; - } - set #Mission_Points, #Mission_Points-@cost; - mes "Deal completed."; - emotion e_cash; - } - set @cost,0; - deletearray @bought_nameid[0], getarraysize(@bought_nameid); - deletearray @bought_quantity[0], getarraysize(@bought_quantity); - close; - -OnNPCKillEvent: - if (!getcharid(CHAR_ID_PARTY) || !.Party) { - if (!#Mission_Count || !Mission0) end; - for (set .@i, 0; .@i<.Quests; set .@i,.@i+1) { - if (strmobinfo(1,killedrid) == strmobinfo(1,getd("Mission"+.@i))) { - if (getd("Mission"+.@i+"_") < #Mission_Count) { - dispbottom "[Hunting Mission] Killed "+(set(getd("Mission"+.@i+"_"),getd("Mission"+.@i+"_")+1))+" of "+#Mission_Count+" "+strmobinfo(1,killedrid)+"."; - end; - } - } - } - } else if (.Party) { - set .@mob, killedrid; - getmapxy(.@map1$, .@x1, .@y1, UNITTYPE_PC); - getpartymember getcharid(CHAR_ID_PARTY),1; - getpartymember getcharid(CHAR_ID_PARTY),2; - for(set .@i,0; .@i<$@partymembercount; set .@i,.@i+1) { - if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) { - attachrid $@partymemberaid[.@i]; - if (#Mission_Count && Mission0 && Hp > 0) { - getmapxy(.@map2$, .@x2, .@y2, UNITTYPE_PC); - if ((.@map1$ == .@map2$ || .Party == 1) && (distance(.@x1,.@y1,.@x2,.@y2) <= 30 || .Party < 3)) { - for(set .@j,0; .@j<.Quests; set .@j,.@j+1) { - if (strmobinfo(1,.@mob) == strmobinfo(1,getd("Mission"+.@j))) { - if (getd("Mission"+.@j+"_") < #Mission_Count) { - dispbottom "[Hunting Mission] Killed "+(set(getd("Mission"+.@j+"_"),getd("Mission"+.@j+"_")+1))+" of "+#Mission_Count+" "+strmobinfo(1,.@mob)+"."; - break; - } - } - } - } - } - } - } - } - end; - -OnInit: - set .Delay,12; // Quest delay, in hours (0 to disable). - set .Quests,4; // Number of subquests per mission (increases rewards). - set .Party,3; // Party options: 0 (exclude party kills), 1 (include party kills), 2 (same map only), 3 (screen area only) - set .Reset,-1; // Reset options: -1 (abandoning mission sets delay time), 0 (no delay time), [Zeny] (cost to abandon mission, no delay time) - setarray .Count[0], // Min and max monsters per subquest (increases rewards). - 40,70; - setarray .Modifier[0], // Multipliers for Base Exp, Job Exp, and Zeny rewards. - getbattleflag("base_exp_rate")/100,getbattleflag("job_exp_rate")/100,60; - setarray .Shop[0], // Reward items: <ID>,<point cost> (about 10~20 points per hunt). - 512,1,513,1,514,1,538,5,539,5,558,10,561,10; - set .Blacklist$, // Blacklisted mob IDs. - "1062,1088,1183,1186,1200,1212,1220,1221,1234,1235,"+ - "1244,1245,1250,1268,1290,1293,1294,1296,1298,1299,"+ - "1300,1301,1303,1304,1305,1306,1308,1309,1311,1313,"+ - "1515,1588,1618,1676,1677,1678,1679,1796,1797,1974,"+ - "1975,1976,1977,1978,1979"; - - npcshopdelitem "mission_shop",512; - for(set .@i,0; .@i<getarraysize(.Shop); set .@i,.@i+2) - npcshopadditem "mission_shop", .Shop[.@i], .Shop[.@i+1]; - end; -} -- shop mission_shop FAKE_NPC,512:-1 diff --git a/npc/custom/quests/jewel_case.txt b/npc/custom/quests/jewel_case.txt deleted file mode 100644 index 509819626..000000000 --- a/npc/custom/quests/jewel_case.txt +++ /dev/null @@ -1,62 +0,0 @@ -//===== Hercules Script ====================================== -//= Jewel Case Quest -//===== By: ================================================== -//= Lupus -//===== Current Version: ===================================== -//= 1.0 -//===== Description: ========================================= -//= A quest for players at base level 99, -//= with Jewel Case as a reward. -//============================================================ - -lighthalzen,108,229,2 script La Fenn 4_M_JPNOJI,{ - mes "[La Fenn]"; - if(BaseLevel<99) { - if(Q_99LVL) { - mes "You... You got younger!!! But you are defenitely YOU!"; - mes "I couldn't think you were able to meet my condition..."; - emotion e_hmm; - next; - mes "[La Fenn]"; - mes "Here is your prize. It's yours for good."; - set Q_99LVL,0; - getitem Accessory_Box,1; //Jewel Case - emotion e_grat; - } else { - mes callfunc("F_Hi"); - mes "..."; - emotion e_yawn; - next; - mes "[La Fenn]"; - mes "I've got a riddle for a strong man of 2nd Class and 99 Base Level."; - mes "*Yawn* If you meet some, please tell them about my riddle."; - } - close; - } - if(BaseLevel==99 && Upper==0) { - if(Q_99LVL) { - mes "Now go forth and get younger!"; - mes "If you solve my riddle, then I'll give you a magical Jewel Case with a rare accessory."; - } else { - mes callfunc("F_Hi")+" The Hero!"; - if(BaseExp<1000000) { - mes "Now you're strong."; - mes "But... not quite strong for my riddle."; - if(rand(2)) { - mes "Kill "+((1000000-BaseExp)/3765+1)+" more Seals and return."; - } else { - mes "Kill "+((1000000-BaseExp)/81+1)+" more Poporings and come back."; - } - } else { - mes "Now you're REALLY strong."; - mes "And if you get younger than now I'll give you my treasure."; - set Q_99LVL,1; - emotion e_no1; - } - } - close; - } - emotion e_hmm; - mes "..."; - close; -} diff --git a/npc/custom/quests/kaho_balmung.txt b/npc/custom/quests/kaho_balmung.txt deleted file mode 100644 index f08ece027..000000000 --- a/npc/custom/quests/kaho_balmung.txt +++ /dev/null @@ -1,48 +0,0 @@ -//===== Hercules Script ====================================== -//= Balmung & Lord Kaho's Horns Quest -//===== By: ================================================== -//= MagicalTux -//===== Current Version: ===================================== -//= 1.1 -//===== Description: ========================================= -//= Custom quests for Balmung and Lord Kaho's Horns. -//= WARNING: The quests are very easy, so be careful! -//===== Additional Comments: ================================= -//= 1.1 Cleaned and optimized. [Euphy] -//============================================================ - -prontera,158,356,4 script Royal Messenger 8W_SOLDIER,{ - setarray .@Req1[0],1161,999,120,984,10,996,10,994,10,995,10,997,10; - setarray .@Req2[0],5013,2298,1,1001,10,996,10,994,10,995,10,997,10; - - mes "[Royal Messenger]"; - mes "Welcome to Prontera."; - mes "I am the messenger in charge of the Royal Quests."; - next; - if(select("Listen...", "Walk away")==2) close; - mes "[Royal Messenger]"; - mes "There are two quests."; - mes "Choose the one you like."; - next; - set .@i, select("Balmung", "Lord Kaho's Horns", "^777777Never mind.^000000"); - mes "[Royal Messenger]"; - if (.@i==3) { - mes "Have a nice day."; - close; } - mes "You will need the following items:"; - for(set .@j,1; .@j<13; set .@j,.@j+2) { - mes " ~ "+getd(".@Req"+.@i+"["+(.@j+1)+"]")+"x ^0055FF"+getitemname(getd(".@Req"+.@i+"["+.@j+"]"))+"^000000"; - if (!.@nr && countitem(getd(".@Req"+.@i+"["+.@j+"]")) < getd(".@Req"+.@i+"["+(.@j+1)+"]")) set .@nr,1; } - mes " ~ 1,000,000z"; - next; - mes "[Royal Messenger]"; - if (.@nr || Zeny < 1000000) { - mes "Come back when you meet all the requirements."; - close; } - for(set .@j,1; .@j<13; set .@j,.@j+2) - delitem getd(".@Req"+.@i+"["+.@j+"]"), getd(".@Req"+.@i+"["+(.@j+1)+"]"); - Zeny -= 1000000; - mes "I see you already have all the items you need. Here's your "+getitemname(getd(".@Req"+.@i+"[0]"))+", as promised."; - getitem getd(".@Req"+.@i+"[0]"),1; - close; -} diff --git a/npc/custom/quests/kahohorn.txt b/npc/custom/quests/kahohorn.txt deleted file mode 100644 index 4d37c9530..000000000 --- a/npc/custom/quests/kahohorn.txt +++ /dev/null @@ -1,67 +0,0 @@ -//===== Hercules Script ====================================== -//= Lord Kaho's Horns Quest -//===== By: ================================================== -//= -//===== Current Version: ===================================== -//= 1.1 -//===== Description: ========================================= -//= Custom quest for Lord Kaho's Horns. -//===== Additional Comments: ================================= -//= 1.1 Optimized, and fixed some requirements. [Euphy] -//============================================================ - -geffen,115,107,5 script Lord Kaho's Servant 1_M_PUBMASTER,{ - - setarray .@items[0],7005, 968, 923, 734, 724,2268,7036,7020,5053,7018,741,742,743,750,751,752,753,754; - setarray .@Drops[0],1272,1087,1039,1260,1046,1115,1252,1147,1038,1059; - set .@n$, "[Lord Kaho's Servant]"; - - mes .@n$; - mes "I worked myself to death trying to fulfill Lord Kaho's ridiculous expectations for a headgear!"; - mes "Now that I've finally found the formula for the perfect headgear, I'm willing to share my time and talents."; - next; - mes .@n$; - mes "You need the following to get the Kaho horns:"; - mes "3x ^0055FFEmperium^000000"; - next; - mes .@n$; - mes "Oh yeah..."; - mes "I also forgot to mention these..."; - next; - mes .@n$; - for(set .@i,0; .@i<10; set .@i,.@i+1) - mes "1x ^0055FF"+getitemname(.@items[.@i])+"^000000 (from "+strmobinfo(1,.@Drops[.@i])+")"; - next; - mes .@n$; - mes "We're not done yet, sweetie..."; - mes "I'm a big fan of dolls, so you need to bring me these cuties!"; - for(set .@i,10; .@i<18; set .@i,.@i+1) - mes "1x ^0055FF"+getitemname(.@items[.@i])+"^000000"; - next; - mes .@n$; - mes "Finally, I've worked hard to make these horns for my master with all the items mentioned above..."; - mes "Please include ^0055FF5 million Zeny^000000 for my efforts."; - next; - mes .@n$; - mes "Are you ready for me to make this special item?"; - next; - if(select("Sure am!", "These requirements are unfathomable!")==2) { - mes .@n$; - mes "What I had to go through was more unfathomable..."; - mes "If you succeed in getting these items, you will have incredible strength!"; - close; } - mes .@n$; - for(set .@i,0; .@i<18; set .@i,.@i+1) - if (!countitem(.@items[.@i])) { set .@nr,1; break; } - if (.@nr || countitem(Emperium) < 3 || Zeny < 5000000) { - mes "I can't afford to make this if you don't bring all materials needed. Please understand this is to benefit heroes such as yourself!"; - close; } - for(set .@i,0; .@i<18; set .@i,.@i+1) - delitem .@items[.@i],1; - delitem 714,3; - Zeny -= 5000000; - mes "Wow! You are brave indeed!"; - getitem 5013,1; - mes "Enjoy being God of Rune-Midgard!"; - close; -} diff --git a/npc/custom/quests/kings_items.txt b/npc/custom/quests/kings_items.txt deleted file mode 100644 index 991112286..000000000 --- a/npc/custom/quests/kings_items.txt +++ /dev/null @@ -1,77 +0,0 @@ -//===== Hercules Script ====================================== -//= Event King Items -//===== By: ================================================== -//= $ephiroth -//===== Current Version: ===================================== -//= 1.1 -//===== Description: ========================================= -//= Grand Circlet Quest combined with Excalibur Quest. -//===== Additional Comments: ================================= -//= 2006/09/27: 1.0 Release and fully working. [$ephiroth] -//= 1.1 Optimized. [Euphy] -//============================================================ - -prt_castle,80,170,4 script King of Prontera 1_M_PRON_KING,{ - mes "[King of Prontera]"; - mes "Hello, can you help me?"; - next; - if(select("Sure, what can I do?", "Sorry, I'm busy.")==2) { - mes "[King of Prontera]"; - mes "Ok, that's fine, I'm sure someone else will help."; - close; } - mes "[King of Prontera]"; - mes "Thank you. Well, my daughter next to me is a little rowdy..."; - mes "If you get her these items I'm sure she'll calm down."; - mes "I'll give you my crown or my sword as a reward."; - next; - setarray .@items1[0],5007,742,30,741,50,753,20,732,1,710,20,629,20; - setarray .@items2[0],1137,2254,1,2282,1,714,1; - switch(select("What do you need?", "I have the items!", "Forget it.")) { - case 1: - for(set .@i,1; .@i<3; set .@i,.@i+1) { - mes "[King of Prontera]"; - mes "If you could get me:"; - for(set .@j,1; .@j<getarraysize(getd(".@items"+.@i)); set .@j,.@j+2) - mes " ~ ^0055FF"+getd(".@items"+.@i+"["+(.@j+1)+"]")+"^000000x "+getitemname(getd(".@items"+.@i+"["+.@j+"]")); - mes "I'll give my "+((.@i)?"sword.":"crown."); - if (.@i==2) close; - next; } - case 2: - mes "[King of Prontera]"; - mes "What item do you want?"; - next; - set .@i, select("Crown", "Sword"); - for(set .@j,1; .@j<getarraysize(getd(".@items"+.@i)); set .@j,.@j+2) - if (countitem(getd(".@items"+.@i+"["+.@j+"]")) < getd(".@items"+.@i+"["+(.@j+1)+"]")) set .@nr,1; - mes "[King of Prontera]"; - if (.@nr) { - mes "You're missing something."; - mes "Come back after you get ALL the items."; - close; } - for(set .@j,1; .@j<getarraysize(getd(".@items"+.@i)); set .@j,.@j+2) - delitem getd(".@items"+.@i+"["+.@j+"]"), getd(".@items"+.@i+"["+(.@j+1)+"]"); - getitem getd(".@items"+.@i+"[0]"),1; - mes "THANK YOU SOO MUCH!!"; - mes "This will surely calm her down."; - mes "As promised, here is my "+((.@i==1)?"crown.":"sword."); - close; - case 3: - mes "[King of Prontera]"; - mes "Ok, that's fine, I'm sure someone else will help."; - close; - } -} - -prt_castle,84,170,4 script King's Daughter 1_M_SIZ,{ - mes "[King's Daughter]"; - mes "Hmph, I hate my dad right now!!"; - next; - if(select("Why?", "Whatever...")==2) { - mes "[King's Daughter]"; - mes "FINE THEN! Hmph!!"; - close; } - mes "[King's Daughter]"; - mes "Well, he won't give me what I want!!"; - mes "He's the King of Prontera. He should be able to get me ANYTHING!!!"; - close; -} diff --git a/npc/custom/quests/may_hats.txt b/npc/custom/quests/may_hats.txt deleted file mode 100644 index d4103874f..000000000 --- a/npc/custom/quests/may_hats.txt +++ /dev/null @@ -1,176 +0,0 @@ -//===== Hercules Script ====================================== -//= Quests: Bird Nest, Lion Mask, Skeleton Manteau, -//= Fashion Hip Sack & Sales Banner -//===== By: ================================================== -//= Lupus -//===== Current Version: ===================================== -//= 1.01 -//===== Description: ========================================= -//= Custom quest for some RO mobile game bonus items -//===== Additional Comments: ================================= -//= 1 May, 2006 -//= 1.01 translated the rest of dialogues -//============================================================ - -gonryun,187,140,4 script Yakima 4_F_EINWOMAN,{ - mes "[Yakima]"; - mes callfunc("F_Hi"); - mes "I can make some items for you."; - mes "They are quite rare novadays..."; - specialeffect EF_HITBODY; - next; - switch (select("Bird Nest", "Lion Mask", "Skeleton Manteau", "Fashion Hip Sack", "Sales Banner", "Leave")) { - case 1: - mes "[Yakima]"; - mes "Oh.. it's an excellent item for any beast hunter."; - emotion e_rock; - next; - mes "[Yakima]"; - mes "For the hat I'll need:"; - mes "1 Sombrero,"; - mes "920 Feathers of Birds and"; - mes "310 Bills of Birds."; - next; - mes "[Yakima]"; - mes "Do you have all the items?"; - next; - if (select("Yeah.", "Nay." != 1)) - break; - if(countitem(Sombrero) < 1 || countitem(Feather_Of_Birds) < 920 || countitem(Bill_Of_Birds) < 310) goto l_noitem;//Items: Sombrero, Feather_of_Birds, Bill_of_Birds, - delitem Sombrero,1;//Items: Sombrero, - delitem Feather_Of_Birds,920;//Items: Feather_of_Birds, - delitem Bill_Of_Birds,310;//Items: Bill_of_Birds, - getitem Bird_Nest,1;//Items: Bird_Nest, - mes "[Yakima]"; - mes "Thank you very very much!"; - mes callfunc("F_Bye"); - close; - case 2: - mes "[Yakima]"; - mes "Bingo! Many people are afraid of lions... to the muteness..."; - emotion e_slur; - next; - mes "[Yakima]"; - mes "For the hat I'll need:"; - mes "1 Tiger Mask,"; - mes "10 Tiger's Footskins,"; - mes "30 Tiger Skins and"; - mes "300 Tiger Panties."; - next; - mes "[Yakima]"; - mes "Do you have all the items?"; - next; - if (select("Yeah.", "Nay." != 1)) - break; - if(countitem(Tiger_Mask) < 1 || countitem(Tiger_Footskin) < 10 || countitem(Tigers_Skin) < 30 || countitem(Tiger_Skin_Panties) < 300) goto l_noitem;//Items: Tiger_Mask, Tiger_Skin, Tiger_Footskin, Tiger_Panty, - delitem Tiger_Mask,1;//Items: Tiger_Mask, - delitem Tiger_Footskin,10;//Items: Tiger_Footskin, - delitem Tigers_Skin,30;//Items: Tiger_Skin, - delitem Tiger_Skin_Panties,300;//Items: Tiger_Panty, - getitem Lion_Mask,1;//Items: Lion_Mask, - mes "[Yakima]"; - mes "Thank you very very much!"; - mes callfunc("F_Bye"); - close; - case 3: - mes "[Yakima]"; - mes "I wish I sold this filthy manteau faster..."; - mes "Guess it isn't so plain as it looks... Hmm."; - emotion e_wah; - next; - mes "[Yakima]"; - mes "I'm giving it almost for free:"; - mes "10 Old Manteaus,"; - mes "3 Skull Rings,"; - mes "2 Manteau[1] and"; - mes "1 Ragamuffin Manteau."; - next; - mes "[Yakima]"; - mes "Do you have all the items?"; - next; - if (select("Yeah.", "Nay." != 1)) - break; - if(countitem(Ragamuffin_Cape) < 1 || countitem(Manteau_) < 2 || countitem(Skul_Ring) < 3 || countitem(Old_Manteau) < 10) goto l_noitem;//Items: Ragamuffin_Manteau, Manteau_, Skull_Ring, Old_Manteau, - delitem Ragamuffin_Cape,1;//Items: Ragamuffin_Manteau, - delitem Manteau_,2;//Items: Manteau_, - delitem Skul_Ring,3;//Items: Skull_Ring, - delitem Old_Manteau,10;//Items: Old_Manteau, - getitem Skeletons_Cape,1;//Items: Skeleton_Manteau, - mes "[Yakima]"; - mes "Thank you very very much!"; - mes callfunc("F_Bye"); - close; - case 4: - mes "[Yakima]"; - mes "It's a fresh style! Ancessory and a bag all in one! You'd get +2 STR... It's different from that sabby nest!"; - mes "It fits to Merchant classonly."; - emotion e_heh; - next; - mes "[Yakima]"; - mes "Now my stock is full of those bags... So I'll make it from 3 flower things and a rough piece of clothes:"; - mes "3 Romantic Flowers,"; - mes "3 Fancy Flowers,"; - mes "2 Flower Rings and"; - mes "3 Pirate Bandanas."; - next; - mes "[Yakima]"; - mes "Do you have all the items?"; - next; - if (select("Yeah.", "Nay." != 1)) - break; - if(countitem(Centimental_Flower) < 3 || countitem(Fancy_Flower) < 3 || countitem(Flower_Ring) < 2 || countitem(Pirate_Bandana)<3 ) goto l_noitem;//Items: Romantic_Flower, Fancy_Flower, Flower_Ring, - delitem Centimental_Flower,3;//Items: Romantic_Flower, - delitem Fancy_Flower,3;//Items: Fancy_Flower, - delitem Flower_Ring,2;//Items: Flower_Ring, - delitem Pirate_Bandana,3;//Items: Pirate_Bandana - getitem Fashionable_Sack,1;//Items: Fashion_Hip_Sack, - mes "[Yakima]"; - mes "Thank you very very much!"; - mes callfunc("F_Bye"); - close; - case 5: - mes "[Yakima]"; - mes "Well, well, well... this sign fits any class from a certain level!"; - mes "Your foes'd be dazzled!"; - emotion e_no1; - next; - mes "[Yakima]"; - mes "Well... we construct it from some common items:"; - mes "1 Scarlet Dyestuffs,"; - mes "1 Orange Dyestuffs,"; - mes "2 Stop Posts,"; - mes "3 Clown Noses,"; - mes "180 Fig Leaves and"; - mes "20 Solid Peaches."; - next; - mes "[Yakima]"; - mes "Do you have all the items?"; - next; - if (select("Yeah.", "Nay." != 1)) - break; - if(countitem(Scarlet_Dyestuffs) < 1 || countitem(Orange_Dyestuffs) < 1 || countitem(Stop_Post) < 2 || countitem(Pierrot_Nose) < 3 || countitem(Leaf_Clothes) < 180 || countitem(Hard_Peach) < 20) goto l_noitem;//Items: Scarlet_Dyestuff, Orange_Dyestuff, Stop_Post, Clown_Nose, Fig_Leaf, Solid_Peach, - delitem Scarlet_Dyestuffs,1;//Items: Scarlet_Dyestuff, - delitem Orange_Dyestuffs,1;//Items: Orange_Dyestuff, - delitem Stop_Post,2;//Items: Stop_Post, - delitem Pierrot_Nose,3;//Items: Clown_Nose, - delitem Leaf_Clothes,180;//Items: Fig_Leaf, - delitem Hard_Peach,20;//Items: Solid_Peach, - getitem Sales_Signboard,1;//Items: Sales_Banner, - mes "[Yakima]"; - mes "Thank you very very much!"; - mes callfunc("F_Bye"); - close; - case 6: - break; - } - mes "[Yakima]"; - mes callfunc("F_Bye"); - close; - -l_noitem: - mes "[Yakima]"; - mes "You are lack of items. Please, get all the items."; - emotion e_sry; - close; - -} diff --git a/npc/custom/quests/quest_shop.txt b/npc/custom/quests/quest_shop.txt deleted file mode 100644 index 739b53c02..000000000 --- a/npc/custom/quests/quest_shop.txt +++ /dev/null @@ -1,230 +0,0 @@ -//===== Hercules Script ====================================== -//= Euphy's Quest Shop -//===== By: ================================================== -//= Euphy -//===== Current Version: ===================================== -//= 1.6a -//===== Description: ========================================= -//= A dynamic quest shop based on Lunar's, with easier config. -//= Includes support for multiple shops & cashpoints. -//= Item Preview script by ToastOfDoom. -//===== Additional Comments: ================================= -//= 1.0 Initial script. -//= 1.2 Added category support. -//= 1.3 More options and fixes. -//= 1.4 Added debug settings. -//= 1.5 Replaced categories with shop IDs. -//= 1.6 Added support for purchasing stackables. -//= 1.6a Added support for previewing costumes and robes. -//============================================================ - -// Shop NPCs -- supplying no argument displays entire menu. -// callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}}; -//============================================================ -prontera,164,203,6 script Quest Shop#1 4_M_MOCASS2,{ callfunc "qshop"; } - - -// Script Core -//============================================================ -- script quest_shop FAKE_NPC,{ -function Add; function Chk; function Slot; function A_An; -OnInit: - freeloop(1); - -// ----------------------------------------------------------- -// Basic shop settings. -// ----------------------------------------------------------- - - set .Announce,1; // Announce quest completion? (1: yes / 0: no) - set .ShowSlot,1; // Show item slots? (2: all equipment / 1: if slots > 0 / 0: never) - set .ShowID,0; // Show item IDs? (1: yes / 0: no) - set .ShowZeny,0; // Show Zeny cost, if any? (1: yes / 0: no) - set .MaxStack,100; // Max number of quest items purchased at one time. - -// ----------------------------------------------------------- -// Points variable -- optional quest requirement. -// setarray .Points$[0],"<variable name>","<display name>"; -// ----------------------------------------------------------- - - setarray .Points$[0],"#CASHPOINTS","Cash Points"; - -// ----------------------------------------------------------- -// Shop IDs -- to add shops, copy dummy data at bottom of file. -// setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...}; -// ----------------------------------------------------------- - - setarray .Shops$[1],"Headgears","Weapons","Other"; - -// ----------------------------------------------------------- -// Quest items -- do NOT use a reward item more than once! -// Add(<shop ID>,<reward ID>,<reward amount>, -// <Zeny cost>,<point cost>, -// <required item ID>,<required item amount>{,...}); -// ----------------------------------------------------------- - - Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2); - Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600); - Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1); - Add(1,5045,1,0,0,2252,1,1054,450,943,1200); - - Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10); - Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10); - - Add(3,531,1,3,0,512,1,713,1); - Add(3,532,1,3,0,513,1,713,1); - Add(3,533,1,3,0,514,1,713,1); - Add(3,534,1,3,0,515,1,713,1); - -// ----------------------------------------------------------- - - freeloop(0); - set .menu$,""; - for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) { - set .menu$, .menu$+.Shops$[.@i]+":"; - npcshopdelitem "qshop"+.@i,909; - } - end; - -OnMenu: - set .@size, getarraysize(@i); - if (!.@size) set .@i, select(.menu$); - else if (.@size == 1) set .@i, @i[0]; - else { - for(set .@j,0; .@j<.@size; set .@j,.@j+1) - set .@menu$, .@menu$+.Shops$[@i[.@j]]+":"; - set .@i, @i[select(.@menu$)-1]; - } - deletearray @i[0],getarraysize(@i); - if (.Shops$[.@i] == "") { - message strcharinfo(PC_NAME),"An error has occurred."; - end; - } - dispbottom "Select one item at a time."; - callshop "qshop"+.@i,1; - npcshopattach "qshop"+.@i; - end; - -OnBuyItem: - // .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... } - setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]); - copyarray .@q[3],getd(".q_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+.@q[0])); - set .@q[2],.@q[1]*.@q[3]; - if (!.@q[2] || .@q[2] > 30000) { - message strcharinfo(PC_NAME),"You can't purchase that many "+getitemname(.@q[0])+"."; - end; - } - mes "[Quest Shop]"; - mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000"; - mes "Requirements:"; - if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000"; - if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000"; - if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2) - mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000"; - next; - setarray @qe[1], getiteminfo(.@q[0], ITEMINFO_LOC), getiteminfo(.@q[0], ITEMINFO_VIEWSPRITE); - if (@qe[2] > 0 && ((@qe[1] & EQP_HEAD_LOW) || (@qe[1] & EQP_HEAD_TOP) || (@qe[1] & EQP_HEAD_MID) || (@qe[1] & EQP_COSTUME_HEAD_TOP) || (@qe[1] & EQP_COSTUME_HEAD_MID) || (@qe[1] & EQP_COSTUME_HEAD_LOW) || (@qe[1] & EQP_GARMENT) || (@qe[1] & EQP_COSTUME_GARMENT))) - set .@preview,1; - addtimer 1000, strnpcinfo(NPC_NAME)+"::OnEnd"; - while(1) { - switch(select(" ~ Purchase ^0055FF"+ getitemname(.@q[0]) +"^000000", ((.@preview && !@qe[7])?" ~ Preview...": ""), " ~ ^777777Cancel^000000")) { - case 1: - if (@qe[0]) { - mes "[Quest Shop]"; - mes "You're missing one or more quest requirements."; - close; - } - if (!checkweight(.@q[0],.@q[2])) { - mes "[Quest Shop]"; - mes "^FF0000You need "+(((.@q[2] * getiteminfo(.@q[0], ITEMINFO_WEIGHT)) + Weight - MaxWeight) / 10)+" additional weight capacity to complete this trade.^000000"; - close; - } - if (.@q[4]) Zeny -= (.@q[4]*.@q[1]); - if (.@q[5]) setd .Points$[0], getd(.Points$[0])-(.@q[5]*.@q[1]); - if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2) - delitem .@q[.@i],.@q[.@i+1]*.@q[1]; - getitem .@q[0],.@q[2]; - if (.Announce) announce strcharinfo(PC_NAME)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):A_An(getitemname(.@q[0])))+"!",0; - specialeffect(EF_FLOWERLEAF, AREA, playerattached()); - close; - case 2: - setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1; - if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2]; - else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2]; - else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2]; - else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2]; - break; - case 3: - close; - } - } - -OnEnd: - if (@qe[7]) { - changelook LOOK_HEAD_BOTTOM, @qe[3]; - changelook LOOK_HEAD_TOP, @qe[4]; - changelook LOOK_HEAD_MID, @qe[5]; - changelook LOOK_ROBE, @qe[6]; - } - deletearray @qe[0],8; - end; - -function Add { - if (getitemname(getarg(1)) == "null") { - debugmes "Quest reward #"+getarg(1)+" invalid (skipped)."; - return; - } - setarray .@j[0],getarg(2),getarg(3),getarg(4); - for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) { - if (getitemname(getarg(.@i)) == "null") { - debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped)."; - return; - } else - setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1); - } - copyarray getd(".q_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j); - npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0); - return; -} - -function Chk { - if (getarg(0) < getarg(1)) { - set @qe[0],1; - return "^FF0000"; - } else - return "^00FF00"; -} - -function Slot { - set .@s$,getitemname(getarg(0)); - switch(.ShowSlot) { - case 1: if (!getitemslots(getarg(0))) return .@s$; - case 2: if (getiteminfo(getarg(0), ITEMINFO_TYPE) == IT_WEAPON || getiteminfo(getarg(0), ITEMINFO_TYPE) == IT_ARMOR) return .@s$+" ["+getitemslots(getarg(0))+"]"; - default: return .@s$; - } -} - -function A_An { - setarray .@A$[0],"a","e","i","o","u"; - set .@B$, "_"+getarg(0); - for(set .@i,0; .@i<5; set .@i,.@i+1) - if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0); - return "a "+getarg(0); -} -} - -function script qshop { - deletearray @i[0],getarraysize(@i); - for(set .@i,0; .@i<getargcount(); set .@i,.@i+1) - set @i[.@i],getarg(.@i); - doevent "quest_shop::OnMenu"; - end; -} - - -// Dummy shop data -- copy as needed. -//============================================================ -- shop qshop1 FAKE_NPC,909:-1 -- shop qshop2 FAKE_NPC,909:-1 -- shop qshop3 FAKE_NPC,909:-1 -- shop qshop4 FAKE_NPC,909:-1 -- shop qshop5 FAKE_NPC,909:-1 diff --git a/npc/custom/quests/questboard.txt b/npc/custom/quests/questboard.txt deleted file mode 100644 index ba335d2d4..000000000 --- a/npc/custom/quests/questboard.txt +++ /dev/null @@ -1,316 +0,0 @@ -//===== Hercules Script ====================================== -//= tr0n's Questboard -//===== By: ================================================== -//= tr0n -//===== Current Version: ===================================== -//= 1.4.4 -//===== Description: ========================================= -//= Easily add collection and hunting quests. -//===== Additional Comments: ================================= -// 1.0.0 Release -// 1.1.0 Added zeny reward -// 1.2.0 Rewrote checkmob and killcounter -// 1.3.1 Added level restriction -// 1.3.4 Added Reward Item Amount -// 1.4.4 Added Quest delay -//============================================================ - -prontera,129,215,5 script Questboard 4_BOARD3,{ - if(c_run==1){ - mes "[^FF7700Questboard^000000]"; - mes "^0000FF"+getd("." + currentquest$ + "_collectionname$")+"^000000"; - mes "--------------------------------"; - for( set .@j, 0; .@j < getarraysize(getd("."+ currentquest$ + "_collectionitem")); set .@j,.@j+2) { - mes "^FF0000"+getitemname(getd("."+currentquest$+"_collectionitem["+.@j+"]"))+" - "+countitem(getd("."+currentquest$+"_collectionitem["+.@j+"]"))+"/"+getd("."+currentquest$+"_collectionitem["+(.@j+1)+"]")+" ea.^000000"; - } - mes "--------------------------------"; - mes "[Reward]"; - mes "Item: ^0000FF"+((getd("." +currentquest$+"_collectionprize"))?getitemname(getd("." +currentquest$+"_collectionprize"))+" - "+getd("." +currentquest$+"_collectionamount")+" ea.^000000":"Nothing^000000"); - mes "Zeny: ^0000FF"+getd("." +currentquest$+"_collectionzeny")+"^000000"; - mes "Base EXP: ^0000FF"+getd("." +currentquest$+"_collectionexp["+0+"]")+"^000000"; - mes "Job EXP: ^0000FF"+getd("." +currentquest$+"_collectionexp["+1+"]")+"^000000"; - next; - if(select("Finish", "Abort") == 2){ - mes "[^FF7700Questboard^000000]"; - mes "Quest aborted."; - set currentquest$, ""; - set c_run, 0; - close; - } - goto L_checkitems; - } - - if(h_run==1){ - mes "[^FF7700Questboard^000000]"; - mes "^0000FF"+getd("." + currentquest$ + "_huntingname$")+"^000000"; - mes "--------------------------------"; - for( set .@j, 0; .@j < getarraysize(getd("."+ currentquest$ + "_huntingmob")); set .@j,.@j+2) { - set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@j)+"]"); - mes "^FF0000"+strmobinfo(1,getd("."+currentquest$+"_huntingmob["+.@j+"]"))+" - "+getd(currentquest$+"_"+.@currentmob+"_"+(.@j+1)+"_killcount")+"/"+getd("."+currentquest$+"_huntingmob["+(.@j+1)+"]")+" ea.^000000"; - } - mes "--------------------------------"; - mes "[Reward]"; - mes "Item: ^0000FF"+((getd("." +currentquest$+"_huntingprize"))?getitemname(getd("." +currentquest$+"_huntingprize"))+" - "+getd("." +currentquest$+"_huntingamount")+" ea.^000000":"Nothing^000000"); - mes "Zeny: ^0000FF"+getd("." +currentquest$+"_huntingzeny")+"^000000"; - mes "Base EXP: ^0000FF"+getd("." +currentquest$+"_huntingexp["+0+"]")+"^000000"; - mes "Job EXP: ^0000FF"+getd("." +currentquest$+"_huntingexp["+1+"]")+"^000000"; - next; - if(select("Finish", "Abort") == 2){ - mes "[^FF7700Questboard^000000]"; - mes "Quest aborted."; - for(set .@x, 1; .@x < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@x,.@x+2){ - set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@x-1)+"]"); - setd(currentquest$+"_"+.@currentmob+"_"+.@x+"_killcount", 0); - } - set currentquest$, ""; - set h_run, 0; - close; - } - goto L_checkmobs; - } - -L_questmenu: - mes "[^FF7700Questboard^000000]"; - mes "Select category:"; - next; - - switch(select((.collection)?"Collection Quests":"", - (.hunting)?"Hunting Quests":"", - "Exit")) { - case 1: - set .@collectmenu$, ""; - for( set .@i,0; .@i < .collectionquestcount; set .@i,.@i+1) { - if (.@i) set .@collectmenu$,.@collectmenu$+":"; - set .@collectmenu$, .@collectmenu$ + "[" + getd("." +(.@i+1)+"_collectionmin") + " - " + getd("." +(.@i+1)+"_collectionmax") + "] " + getd("." + (.@i+1) + "_collectionname$"); - } - set .@selection,select(.@collectmenu$); - if(gettimetick(2) < getd(.@selection + "_collection_delay")){ - set .@time_left, getd(.@selection + "_collection_delay")-gettimetick(2); - mes "[^FF7700Questboard^000000]"; - if(.@time_left < 60) mes "You have to wait ^0000FF"+.@time_left+" seconds^000000 to do this quest again."; - if(.@time_left < 3600) mes "You have to wait ^0000FF"+.@time_left/60+" minutes^000000 to do this quest again."; - mes "You have to wait ^0000FF"+.@time_left/60/60+" hours^000000 to do this quest again."; - close; - } - mes "[^FF7700Questboard^000000]"; - mes "^0000FF"+getd("." + .@selection + "_collectionname$")+"^000000"; - mes "--------------------------------"; - for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_collectionitem")); set .@j,.@j+2) { - mes "^FF0000"+getitemname(getd("."+.@selection+"_collectionitem["+.@j+"]"))+" - "+getd("."+.@selection+"_collectionitem["+(.@j+1)+"]")+" ea.^000000"; - } - mes "--------------------------------"; - mes "[Reward]"; - mes "Item: ^0000FF"+((getd("." +.@selection+"_collectionprize"))?getitemname(getd("." +.@selection+"_collectionprize"))+" - "+getd("." +.@selection+"_collectionamount")+" ea.^000000":"Nothing^000000"); - mes "Zeny: ^0000FF"+getd("." +.@selection+"_collectionzeny")+"^000000"; - mes "Base EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+0+"]")+"^000000"; - mes "Job EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+1+"]")+"^000000"; - next; - if(select("Accept", "Decline") == 2){ - close; - } - if(BaseLevel >= getd("." +.@selection+"_collectionmin") && BaseLevel <= getd("." +.@selection+"_collectionmax")) - { - mes "[^FF7700Questboard^000000]"; - mes "Quest accepted."; - set c_run, 1; - set currentquest$, .@selection; - close; - } - else - { - mes "[^FF7700Questboard^000000]"; - mes "You don't have the required"; - mes "level to do this quest."; - close; - } - - case 2: - set .@huntmenu$, ""; - for( set .@i,0; .@i < .huntingquestcount; set .@i,.@i+1) { - if (.@i) set .@huntmenu$,.@huntmenu$+":"; - set .@huntmenu$, .@huntmenu$ + "[" + getd("." +(.@i+1)+"_huntingmin") + " - " + getd("." +(.@i+1)+"_huntingmax") + "] " + getd("." + (.@i+1) + "_huntingname$"); - } - set .@selection,select(.@huntmenu$); - if(gettimetick(2) < getd(.@selection + "_hunting_delay")){ - set .@time_left, getd(.@selection + "_hunting_delay")-gettimetick(2); - mes "[^FF7700Questboard^000000]"; - if(.@time_left < 60) mes "You have to wait ^0000FF"+.@time_left+" seconds^000000 to do this quest again."; - if(.@time_left < 3600) mes "You have to wait ^0000FF"+.@time_left/60+" minutes^000000 to do this quest again."; - mes "You have to wait ^0000FF"+.@time_left/60/60+" hours^000000 to do this quest again."; - close; - } - mes "[^FF7700Questboard^000000]"; - mes "^0000FF"+getd("." + .@selection + "_huntingname$")+"^000000"; - mes "--------------------------------"; - for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_huntingmob")); set .@j,.@j+2) { - mes "^FF0000"+strmobinfo(1,getd("."+.@selection+"_huntingmob["+.@j+"]"))+" - "+getd("."+.@selection+"_huntingmob["+(.@j+1)+"]")+" ea.^000000"; - } - mes "--------------------------------"; - mes "[Reward]"; - mes "Item: ^0000FF"+((getd("." +.@selection+"_huntingprize"))?getitemname(getd("." +.@selection+"_huntingprize"))+" - "+getd("." +.@selection+"_huntingamount")+" ea.^000000":"Nothing^000000"); - mes "Zeny: ^0000FF"+getd("." +.@selection+"_huntingzeny")+"^000000"; - mes "Base EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+0+"]")+"^000000"; - mes "Job EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+1+"]")+"^000000"; - next; - if(select("Accept", "Decline") == 2){ - close; - } - if(BaseLevel >= getd("." +.@selection+"_huntingmin") && BaseLevel <= getd("." +.@selection+"_huntingmax")) - { - mes "[^FF7700Questboard^000000]"; - mes "Quest accepted."; - set h_run, 1; - set currentquest$, .@selection; - close; - } - else - { - mes "[^FF7700Questboard^000000]"; - mes "You don't have the required"; - mes "level to do this quest."; - close; - } - case 3: - close; - } - -L_checkitems: - for( set .@k,0; .@k < getarraysize(getd("."+currentquest$+"_collectionitem")); set .@k,.@k+2) { - if(countitem(getd("."+currentquest$+"_collectionitem["+.@k+"]"))>=getd("."+currentquest$+"_collectionitem["+(.@k+1)+"]")){ - set .@checkitem,.@checkitem+2; - } - } - if(.@checkitem<getarraysize(getd("."+currentquest$+"_collectionitem"))){ - mes "[^FF7700Questboard^000000]"; - mes "You don't have everything."; - close; - } - for( set .@delcount,0; .@delcount < getarraysize(getd("."+currentquest$+"_collectionitem")); set .@delcount,.@delcount+2) { - delitem getd("."+currentquest$+"_collectionitem["+.@delcount+"]"),getd("."+currentquest$+"_collectionitem["+(.@delcount+1)+"]"); - } - mes "[^FF7700Questboard^000000]"; - mes "Congratulation! Here is your Reward."; - if(getd("." +currentquest$+"_collectionprize")!=0) getitem(getd("." +currentquest$+"_collectionprize"),getd("." +currentquest$+"_collectionamount")); - Zeny += getd("." +currentquest$+"_collectionzeny"); - getexp getd("." +currentquest$+"_collectionexp["+0+"]"),getd("." +currentquest$+"_collectionexp["+1+"]"); - setd(currentquest$ + "_collection_delay"),gettimetick(2)+.quest_delay; - set currentquest$, ""; - set c_run, 0; - close; - -L_checkmobs: - set .@goal, (getarraysize(getd("."+currentquest$+"_huntingmob"))/2); - for(set .@i, 1; .@i < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@i,.@i+2){ - set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]"); - if(getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")==getd("."+currentquest$+"_huntingmob["+.@i+"]")){ - set .@checkmonster, .@checkmonster+1; - if(.@checkmonster==.@goal){ - goto L_checkmobs2; - } - continue; - } - goto L_checkmobs2; - } - -L_checkmobs2: - if(.@checkmonster<.@goal){ - mes "[^FF7700Questboard^000000]"; - mes "You didn't kill everything."; - close; - } - mes "[^FF7700Questboard^000000]"; - mes "Congratulation! Here is your Reward."; - for(set .@x, 1; .@x < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@x,.@x+2){ - set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@x-1)+"]"); - setd(currentquest$+"_"+.@currentmob+"_"+.@x+"_killcount", 0); - } - if(getd("." +currentquest$+"_huntingprize")!=0) getitem(getd("." +currentquest$+"_huntingprize"),getd("." +currentquest$+"_huntingamount")); - Zeny += getd("." +currentquest$+"_huntingzeny"); - getexp getd("." +currentquest$+"_huntingexp["+0+"]"),getd("." +currentquest$+"_huntingexp["+1+"]"); - setd(currentquest$ + "_hunting_delay"),gettimetick(2)+.quest_delay; - set currentquest$, ""; - set h_run, 0; - close; - -OnNPCKillEvent: - if(h_run!=1) end; - for(set .@i, 1; .@i < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@i,.@i+2){ - if(killedrid==getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]")){ - set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]"); - if(getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")>=getd("."+currentquest$+"_huntingmob["+.@i+"]")) end; - setd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount", getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")+1); - dispbottom getd("."+currentquest$+"_huntingname$")+": ["+strmobinfo(1,.@currentmob)+"] ("+ getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")+"/"+getd("."+currentquest$+"_huntingmob["+.@i+"]")+")"; - end; - } - continue; - } - end; - -OnInit: - function AddCollection; - function AddHunting; - - //Activate/Deactive quest categories here - set .collection, 1; - set .hunting, 1; - - //Quest Delay (seconds) - //24 hours = 86400 seconds - set .quest_delay, 0; - - //Checks if quests are loaded (prevents out of index) - if(.questsloaded==1) end; - set .questsloaded, 1; - - //Add Collection Quests here - //AddCollection("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Item ID>,<Item Amount>,...); - - //Add Hunting Quests here - //AddHunting("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Monster ID>,<Monster Amount>,...); - - end; - -function AddCollection { - set .collectionquestcount,.collectionquestcount+1; - setd ("." +.collectionquestcount+"_collectionname$", getarg(0)); - setd ("." +.collectionquestcount+"_collectionmin", getarg(1)); - setd ("." +.collectionquestcount+"_collectionmax", getarg(2)); - setd ("." +.collectionquestcount+"_collectionprize", getarg(3)); - setd ("." +.collectionquestcount+"_collectionamount", getarg(4)); - setd ("." +.collectionquestcount+"_collectionzeny", getarg(5)); - set .@argcount, 6; - set .@size, getarraysize(getd("."+ .collectionquestcount + "_collectionexp")); - setd ("." +.collectionquestcount+"_collectionexp["+.@size+"]",getarg(.@argcount)); - setd ("." +.collectionquestcount+"_collectionexp["+(.@size+1)+"]",getarg(.@argcount+1)); - set .@argcount, .@argcount+2; - while(getarg(.@argcount,-1)!=-1 && getarg(.@argcount+1,-1)!=-1) { - set .@size, getarraysize(getd("."+ .collectionquestcount + "_collectionitem")); - setd ("."+.collectionquestcount+"_collectionitem["+.@size+"]",getarg(.@argcount)); - setd ("."+.collectionquestcount+"_collectionitem["+(.@size+1)+"]",getarg(.@argcount+1)); - set .@argcount,.@argcount+2; - } - return; -} - -function AddHunting { - set .huntingquestcount,.huntingquestcount+1; - setd ("." +.huntingquestcount+"_huntingname$", getarg(0)); - setd ("." +.huntingquestcount+"_huntingmin", getarg(1)); - setd ("." +.huntingquestcount+"_huntingmax", getarg(2)); - setd ("." +.huntingquestcount+"_huntingprize", getarg(3)); - setd ("." +.huntingquestcount+"_huntingamount", getarg(4)); - setd ("." +.huntingquestcount+"_huntingzeny", getarg(5)); - set .@size, getarraysize(getd("."+ .huntingquestcount + "_huntingexp")); - set .@argcount, 6; - setd ("." +.huntingquestcount+"_huntingexp["+.@size+"]",getarg(.@argcount)); - setd ("." +.huntingquestcount+"_huntingexp["+(.@size+1)+"]",getarg(.@argcount+1)); - set .@argcount, .@argcount+2; - while(getarg(.@argcount,-1)!=-1 && getarg(.@argcount+1,-1)!=-1) { - set .@size, getarraysize(getd("."+ .huntingquestcount + "_huntingmob")); - setd ("."+.huntingquestcount+"_huntingmob["+.@size+"]",getarg(.@argcount)); - setd ("."+.huntingquestcount+"_huntingmob["+(.@size+1)+"]",getarg(.@argcount+1)); - set .@argcount, .@argcount+2; - } - return; -} -} diff --git a/npc/custom/quests/sphinx_mask.txt b/npc/custom/quests/sphinx_mask.txt deleted file mode 100644 index f7e1023c4..000000000 --- a/npc/custom/quests/sphinx_mask.txt +++ /dev/null @@ -1,50 +0,0 @@ -//===== Hercules Script ====================================== -//= Sphinx Mask Quest (custom) -//===== By: ================================================== -//= sabernet09 -//===== Current Version: ===================================== -//= 1.3 -//===== Description: ========================================= -//= This quest is related to Umbalian Chief. -//= 1.1 Removed it from official Umbala quests [Lupus] -//= 1.2 Added a missing variable (sphmask_q) [erKURITA] -//= 1.3 Optimized, and coordinates moved. [Euphy] -//============================================================ - -morocc,208,90,6 script Turban Thief 1_M_MERCHANT,{ - mes "[Turban Thief]"; - if(event_umbala < 2) { - mes "What do you wan te withz me? Be gone!"; - close; } - if(sphmask_q) { - mes "You have no more business with me, go away!"; - close; } - mes "E'llo mah frien, would I interesst tu with this rare mask? Its value I assure you is real mah frien. Tis manific!"; - next; - callsub L_Menu,1,"1,000,000",1000000; - callsub L_Menu,2,"750,000",750000; - callsub L_Menu,3,"500,000",500000; - next; - mes "[Turban Thief]"; - mes "Ack! Forgez it! I can do bettaz en elsez where!"; - set sphmask_q,1; - close; - -L_Menu: - mes "[Turban Thief]"; - switch(getarg(0)) { - case 1: mes "Wah? O ho ho ho, so you know thaz I steal dis from those savages no? Well I won'tz give it back. But I will for a pricez... wat you say?"; break; - case 2: mes "Ahh a business man are you no? Fine, how about..."; break; - case 3: mes "Hmmm... you drive a hard bargain, ok... my final offer..."; break; } - next; - if(select("Pay "+getarg(1)+"z", "No deal")==2) return; - mes "[Turban Thief]"; - if (Zeny < getarg(2)) { - mes "Are youz playin wit me? You don't have ze money!"; - close; } - Zeny -= getarg(2); - mes "O ho ho, it's a deal, then!"; - getitem 7114,1; - set sphmask_q,1; - close; -} diff --git a/npc/custom/quests/sunglasses.txt b/npc/custom/quests/sunglasses.txt deleted file mode 100644 index 416dcb571..000000000 --- a/npc/custom/quests/sunglasses.txt +++ /dev/null @@ -1,106 +0,0 @@ -//===== Hercules Script ====================================== -//= Slotted Sunglasses Quest -//===== By: ================================================== -//= amichan -//===== Current Version: ===================================== -//= 1.8 -//===== Description: ========================================= -//= Quest to get Slotted Sunglasses. -//= Will reset after quest completion. -//===== Additional Comments: ================================= -//= 1.0 by Aegis 1.1 by aichan 1.2 by x[tsk] 1.3 by Darkchild -//= 1.5 Fixed Exploit [Lupus] -//= 1.6 Fixed Exploit [KarLaeda] -//= 1.7 Relocated 'Maseph' to moc_fild07. [Kisuka] -//= 1.8 Cleaning. [Euphy] -//============================================================ - -alberta,88,193,5 script Sunglasses Trader 1_F_MERCHANT_01,{ - mes "[Sunglasses Trader]"; - if(SG_QUEST1 == 1) { - mes "There is nothing more I can tell you."; - next; - mes "[Sunglasses Trader]"; - mes "Go see Maseph. She is somewhere north of Morroc."; - close; } - mes "Hello. What can I do for you?"; - next; - if(select("I heard that you can make ^0000FFSlotted Sunglasses^000000.", "Nothing, sorry to bother you.")==2) { - mes "[Sunglasses Trader]"; - mes "Come back to me than you are ready."; - close; } - mes "[Sunglasses Trader]"; - mes "I do not make them, but I can tell you where to find the person who does. For a small fee..."; - next; - if(select("How much?", "No way, I will find her myself!")==2) { - mes "[Sunglasses Trader]"; - mes "Suit yourself, the Maker will not make you ^0000FFSlotted Sunglasses^000000 unless she knows that you are coming."; - mes "Only I can tell her you are coming."; - next; - mes "[Sunglasses Trader]"; - mes "Come back to me when you have given up. Hahaha..."; - close; } - mes "[Sunglasses Trader]"; - mes "In order for me to tell you information on ^0000FFSlotted Sunglasses^000000 you need to get me:"; - mes " - ^0000881 Carat Diamond^000000"; - mes " - ^00008850 Feathers^000000"; - mes " - ^000088100000z^000000"; - next; - if(select("Alright, here.", "That's too much!")==2) { - mes "[Sunglasses Trader]"; - mes "Suit yourself."; - close; } - mes "[Sunglasses Trader]"; - if (countitem(Crystal_Jewel) < 1 || countitem(Feather) < 50 || Zeny < 100000) { - mes "You're missing something. Come back when you've gathered all the materials."; - close; } - delitem 730,1; - delitem 949,50; - Zeny -= 100000; - set SG_QUEST1,1; - mes "[Sunglasses Trader]"; - mes "Great. Now, listen carefully."; - next; - mes "[Sunglasses Trader]"; - mes "Look for someone named Maseph somewhere north of Morroc."; - mes "I will send her a message to let her know that you are coming."; - close; -} - -moc_fild07,334,186,5 script Maseph 4_F_GON,{ - mes "[Maseph]"; - if(SG_QUEST1 != 1) { - mes "Lovely day, isn't it ?"; - close; } - mes "Hello there."; - mes "You came for the ^000088Slotted Sunglasses^000000, right?"; - next; - if(select("Yes", "No, sorry to bother you.")==2) { - mes "[Maseph]"; - mes "Off you go, then."; - close; } - mes "[Maseph]"; - mes "To make one, I will need one pair of ^000088Sunglasses^000000 and 400000z."; - next; - if(select("Here you go.", "No, thanks.")==2) { - mes "[Maseph]"; - mes "As you wish."; - close; } - mes "[Maseph]"; - if (countitem(Sunglasses) < 1) { - mes "I need one pair of ^000088Sunglasses^000000. Come back to me when you have one."; - close; } - if (Zeny < 400000) { - mes "You do not have enough Zeny. Come back to me when you do."; - close; } - delitem 2201,1; - Zeny -= 400000; - mes "Thank you. I will get on it right away..."; - next; - mes "[Maseph]"; - mes "Here you go, my friend."; - mes "Enjoy your ^000088Slotted Sunglasses^000000."; - getitem 2202,1; - set SG_QUEST1,0; - close; -} diff --git a/npc/custom/quests/tha_statues.txt b/npc/custom/quests/tha_statues.txt deleted file mode 100644 index 83630355a..000000000 --- a/npc/custom/quests/tha_statues.txt +++ /dev/null @@ -1,266 +0,0 @@ -//===== Hercules Script ====================================== -//= Custom Thanatos Tower Quest -//===== By: ================================================== -//= Bibilol, Moryagorn -//===== Current Version: ===================================== -//= 1.1 -//===== Description: ========================================= -//= Custom Thanatos Tower Quest -//===== Additional Comments: ================================= -//= 1.1 Fixed wrong NPC names in their dialogues, added -//= Justin84's gems check in Sox NPC [Lupus] -//============================================================ - -//Statue (NPC)(U: UP, D: DOWN, R: RIGHT, L: LEFT) : -// Explain Npc -tha_t08,69,106,4 script Statue HIDDEN_NPC,{ - mes "You can read on the back of the statue:"; - mes "'By the spirit of olds, the walls are closed"; - mes "Upper floors or foreign taboo"; - mes "By the order of the Statues you will find the way"; - mes "Which perhaps a day will bring you to me."; - mes ".....Thanatos '"; - close; -} - -//Tha_t09 : -//(Thalos)(U,L)-->tha_t09,17,158,4 -//(Mediane)(D,R)-->tha_t09,84,99,4 -//Script: - -tha_t09,17,158,4 script Thalos HIDDEN_NPC,{ - if(TSQ_CHK == 1) goto done; - mes "[Thalos]"; - mes "You must find the 2nd Statue now."; - set TSQ_CHK,1; - close; -done: - mes "[Thalos]"; - mes "Go search the 2nd Statue!"; - close; -} - -tha_t09,84,99,4 script Mediane HIDDEN_NPC,{ - if(TSQ_CHK != 1) goto nook; - mes "[Mediane]"; - mes "Okay, i am warping you to the next floor now."; - next; - set TSQ_CHK,0; - warp "tha_t10", 165, 138; - close; -nook: - mes "[Mediane]"; - mes "You must talk with the Spirit in the 1st Statue."; - close; -} - -//Tha_t10 : -//(Melkor)(U)-->tha_t10,130,159,4 -//(Zebrus)(D,R)-->tha_t10,160,98,4 -//(Veriaelle)(D,L)-->tha_t10,99,97,4 -//Script: - -tha_t10,130,159,4 script Melkor HIDDEN_NPC,{ - if(TSQ_CHK == 1) goto done; - mes "[Melkor]"; - mes "You must find the other Spirits now."; - mes "We are 3."; - set TSQ_CHK,1; - close; -done: - mes "[Melkor]"; - mes "Go Search, They are in this floor."; - close; -} - -tha_t10,160,98,4 script Zebrus HIDDEN_NPC,{ - if(TSQ_CHK != 1) goto nook; - mes "[Zebrus]"; - mes "Keep on this way, There is one Spirit left"; - set TSQ_CHK,2; - close; -nook: - mes "[Zebrus]"; - mes "You seems to be lost, Go back and talk to Melkor."; - next; - set TSQ_CHK,0; - close; -} - -tha_t10,99,97,4 script Veriaelle HIDDEN_NPC,{ - if(TSQ_CHK != 2) goto nook; - mes "[Veriaelle]"; - mes "Okay, i am warping you to the next floor."; - next; - set TSQ_CHK,0; - warp "tha_t11", 86, 38; - close; -nook: - mes "[Veriaelle]"; - mes "You seems to be lost, Go back and talk to Melkor."; - next; - set TSQ_CHK,0; - close; -} - -//Tha_t11 : -//(Throtre)(U,L)-->tha_t11,16,85,4 -//(Klermaz)(D,R)-->tha_t11,85,16,4 -//(Mihane)(D,L)-->tha_t11,16,16,4 -//(Seranes)(U,R)-->tha_t11,85,85,4 -//Script: - -tha_t11,16,85,4 script Throtre HIDDEN_NPC,{ - if(TSQ_CHK == 1) goto done; - mes "[Throtre]"; - mes "You got my authorization for the next floor"; - mes "However, you must show how strong you are to the other Spirits"; - set TSQ_CHK,1; - close; -done: - mes "[Throtre]"; - mes "Go search, They Can't leave this floor."; - close; -} - -tha_t11,85,16,4 script Klermaz HIDDEN_NPC,{ - if(TSQ_CHK != 1) goto nook; - mes "[Klermaz]"; - mes "Hmm it seems that Throtre allowed you to pass."; - mes "Well then you have my blessing, 2 Spirits remaining."; - set TSQ_CHK,2; - close; -nook: - mes "[Klermaz]"; - mes "You seems to be lost, Go back and talk to Throtre."; - next; - set TSQ_CHK,0; - close; -} - -tha_t11,16,16,4 script Mihane HIDDEN_NPC,{ - if(TSQ_CHK != 2) goto nook; - mes "[Mihane]"; - mes "Keep on this way, Only 1 Left."; - set TSQ_CHK,3; - close; -nook: - mes "[Mihane]"; - mes "Sorry, You must start over from the begining."; - next; - set TSQ_CHK,0; - close; -} - -tha_t11,85,85,4 script Seranes HIDDEN_NPC,{ - if(TSQ_CHK != 3 ) goto nook; - mes "[Seranes]"; - mes "Perfect, it seems that the other spirits grants you the access."; - mes "I am warping you to the next floor."; - next; - set TSQ_CHK,0; - warp "tha_t12", 129, 58; - close; -nook: - mes "[Seranes]"; - mes "You did not follow the good order, starts again from the begining."; - next; - set TSQ_CHK,0; - close; -} - -//Tha_t12 ( M: Middle): -//(Nox)(D,L)-->tha_t12,103,18,4 -//(Vox)(R)-->tha_t12,162,58,4 -//(Hox)(L)-->tha_t12,96,57,4 -//(Dox)(D,R)-->tha_t12,153,17,4 -//(Sox)(U)-->tha_t12,128,88,4 -//Script: - -tha_t12,103,18,4 script Nox HIDDEN_NPC,{ - if(TSQ_CHK == 1 ) goto done; - mes "[Nox]"; - mes "Fine, 4 Spirits left."; - set TSQ_CHK,1; - close; -done: - mes "[Nox]"; - mes "Go search, They can't leave this floor."; - close; -} - -tha_t12,162,58,4 script Vox HIDDEN_NPC,{ - if(TSQ_CHK != 1 ) goto nook; - mes "[Vox]"; - mes "Keep on this way, 3 Spirits remaining !"; - set TSQ_CHK,2; - close; -nook: - mes "[Vox]"; - mes "Sorry, Go back and talk to Nox."; - next; - set TSQ_CHK,0; - close; -} - -tha_t12,96,57,4 script Hox HIDDEN_NPC,{ - if(TSQ_CHK != 2 ) goto nook; - mes "[Hox]"; - mes "You are on the good way, 2 Spirits remaining !"; - set TSQ_CHK,3; - close; -nook: - mes "[Hox]"; - mes "Sorry, Go back and talk to Vox."; - next; - set TSQ_CHK,0; - close; -} - -tha_t12,153,17,4 script Dox HIDDEN_NPC,{ - if(TSQ_CHK != 3 ) goto nook; - mes "[Dox]"; - mes "Perfect, 1 Spirit left."; - set TSQ_CHK,4; - close; -nook: - mes "[Dox]"; - mes "Sorry, Go back and talk to Hox."; - next; - set TSQ_CHK,0; - close; -} - -tha_t12,128,88,4 script Sox HIDDEN_NPC,{ - if(TSQ_CHK != 4 ) goto nook; - mes "[Sox]"; - mes "You have just passed the test successfully."; - next; - mes "[Sox]"; - mes "You have to give me Red Magic Stone, Yellow Magic Stone, Blue Magic Stone & Green Magic Stone."; - next; - if(countitem(Magic_Gem_Red) < 1 || countitem(Magic_Gem_Yellow) < 1 || countitem(Magic_Gem_Blue) < 1 || countitem(Magic_Gem_Green) < 1) goto nostone; - delitem 7426,1; - delitem 7427,1; - delitem 7428,1; - delitem 7429,1; - mes "[Sox]"; - mes "I will now warp you to steps of Fate."; - mes "Good-bye."; - next; - set TSQ_CHK,0; - warp "thana_step", 186, 223; - close; - -nostone: - mes "[Sox]"; - mes "Oh well, seems you don't have enough stones."; - close; - -nook: - mes "[Sox]"; - mes "Sorry, Go back and talk to Dox."; - next; - set TSQ_CHK,0; - close; -} diff --git a/npc/custom/quests/thq/THQS_ChatingNPC.txt b/npc/custom/quests/thq/THQS_ChatingNPC.txt deleted file mode 100644 index 2ea65e3c9..000000000 --- a/npc/custom/quests/thq/THQS_ChatingNPC.txt +++ /dev/null @@ -1,93 +0,0 @@ -//===== Hercules Script ====================================== -//= Treasure Hunter Quests -//===== By: ================================================== -//= Fredzilla -//===== Current Version: ===================================== -//= 1.0 -//===== Description: ========================================= -//= Start for Treasure hunter quests -//===== Additional Comments: ================================= -//= Event_THQS - Used to check if you have already registered -//= #Treasure_Token - used to keep track of tokens -//============================================================ - -//Entrance Flags -yuno,48,101,6 script Notice GUILD_FLAG,{ - mes "^FF0000[ Treasure Hunter Guild House ]^000000"; - mes " "; - mes "Welcome to the Treasure Hunter's Guild House."; - mes "Feel free to drop in and look around"; - mes "and feel free to become a memeber if you wish."; - mes " "; - mes "For membership applications please talk to Keegan"; - mes "up the stairs and down the hall."; - close; -} -//Saver Girl; -yuno_in01,32,178,3 script Ahlma 4_F_MAID,{ - mes "[Ahlma]"; - if (Event_THQS == 0) goto N_Member; - mes "Welcome to The Treasure Hunter Guild."; - mes "How may I help you?"; - next; - if (select("Save", "Quit") != 1) { - mes "[Ahlma]"; - mes "Well if you think you are safe, good on you."; - close; - } - mes "[Ahlma]"; - mes "Ok, saved. Thank you ~ See you soon~"; - savepoint "yuno_in01",34,176; - close; -N_Member: - mes "Sorry, members only."; - close; -} -//Retired Smile mask girl; -yuno_in01,33,162,3 script Smile Helper 4_F_03,{ - mes "[Smile Gal]"; - mes "Oh man...I am so sick of"; - mes "trading Mr. Smile masks for crap."; - mes " "; - mes "You ask me for one and you'll find yourself 10 pounds lighter!"; - close; -} -//Usless Female Assasin; -yuno_in01,22,162,6 script Female Assasin 4_F_JOB_ASSASSIN,{ - mes "[Sharlet]"; - if (Event_THQS > 0) goto N_Member; - mes "Umm sorry I'm not gona waste my time talking to you if you arn't even a member!"; - close; -N_Member: - set @temp,rand(1,2); - if (@temp == 1) goto N_Chat1; - if (@temp == 2) goto N_Chat2; - mes "How are you reading this???"; - mes "Well unless you are reading the code :)"; - close; -N_Chat1: - mes "Ahh welcome fellow Treasure Hunter "+strcharinfo(PC_NAME)+"."; - mes "Did you hear about that brave man that went into Glast Heim alone?! He must be crazy."; - close; -N_Chat2: - mes ""+strcharinfo(PC_NAME)+" don't you have something better you could be doing? Like a quest."; - close; -} -//another usless member -yuno_in01,25,162,6 script Female Wizard 2_F_MAGICMASTER,{ - mes "[Sasha]"; - if (Event_THQS > 0) goto N_Member; - mes "Umm sorry I'm not gona waste my time talking to you if you arn't even a member!"; - close; -N_Member: - set @temp,rand(2); - if (@temp == 1) goto N_Chat; - mes "Ahh welcome fellow Treasure Hunter "+strcharinfo(PC_NAME)+"."; - mes "Did you hear about that goat man running around in the trees?"; - mes " "; - mes "Aperently his name is Baphomet and he has been runing around the Forest Maze out side of prontera for quite some time now."; - close; -N_Chat: - mes ""+strcharinfo(PC_NAME)+" don't you have something better you could be doing? Like a quest."; - close; -} diff --git a/npc/custom/quests/thq/THQS_GuildNPC.txt b/npc/custom/quests/thq/THQS_GuildNPC.txt deleted file mode 100644 index 5a7c4883b..000000000 --- a/npc/custom/quests/thq/THQS_GuildNPC.txt +++ /dev/null @@ -1,89 +0,0 @@ -//===== Hercules Script ====================================== -//= Treasure Hunter Quests -//===== By: ================================================== -//= Fredzilla -//===== Current Version: ===================================== -//= 1.0 -//===== Description: ========================================= -//= Start for Treasure hunter quests -//===== Additional Comments: ================================= -//= Event_THQS - Used to check if you have already registered -//= #Treasure_Token - used to keep track of tokens -//============================================================ - -yuno_in01,124,164,6 script Guild Leader 1_M_PRON_KING,{ - mes "[Keegan]"; - mes "What brings you here? Have something to say?"; - next; - switch (select("I want to be a Treasure Hunter", "Take a New Quest.", "Take me to the Official Shop.", "Nevermind.",N_NVM)) { - case 1: - if (Event_THQS==1) - goto N_AlreadyReg; - mes "[Keegan]"; - mes "Well "+strcharinfo(PC_NAME)+" if you want to be a Treasure Hunter first you must."; - mes " "; - mes "^FF00001.^000000 You well be changed ^FF000025,000z^000000 for basic training and your proof of being a member."; - mes " "; - mes "Umm... Well that is all you need to do. Hahaha."; - next; - if (select("Pay ^FF000025,000z^000000.", "Thats way to high!!") != 1) { - mes "[Keegan]"; - mes "Well if you can't afford a small ^FF000025,000z^000000 you shouldent be a Treasure Hunter yet."; - close; - } - if (Zeny < 25000) - goto N_NoZeny; - Zeny -= 25000; - //getitem 7950, 1; - //getitem 7951, 1; - Event_THQS = 1; - mes "[Keegan]"; - mes "Congratulations!"; - emotion(e_grat); - next; - mes "[Keegan]"; - mes "Welcome to the Guild of Treasure Hunters."; - mes "You may now take a Treasure Hunting Quest as you see fit."; - close; - case 2: - if (Event_THQS!=1) - goto A_NeedReg; - mes "[Keegan]"; - mes "Well "+strcharinfo(PC_NAME)+" if you wish to take a quest go talk to the fellow Treasure Hunter in the other room there."; - close; - case 3: - if (Event_THQS!=1) - goto N_NeedMem; - mes "[Keegan]"; - mes "Yes "+strcharinfo(PC_NAME)+" I will take you to our shop right away!"; - next; - warp "prt_in",166,171; - close; - case 4: - mes "[Keegan]"; - mes "Alright come back when you have the free time to spare."; - close; - } -N_NoZeny: - mes "[Keegan]"; - mes "Hmmm you don't seem to have ^FF000025,000z^000000 "+strcharinfo(PC_NAME)+". Please come back when you do."; - close; -N_AlreadyReg: - mes "[Keegan]"; - mes "Ha ha ha...you are already a member."; - close; -A_NeedReg: - mes "[Keegan]"; - mes "Sorry you must be a member of the Treasure Hunter Guild if you wish to take a quest."; - mes " "; - mes "Also now that you are a member feel free to use our shops anytime you wish.They are all located on this floor."; - mes " "; - mes "We also have another shop for members only,in which we use little metal diamonds called Treasure Hunter Tokens to exchange for rare goods."; - mes " "; - mes "You will even have access to our exclusive personal Dungeon."; - close; -N_NeedMem: - mes "[Keegan]"; - mes "Im sorry only members may visit our private shop."; - close; -} diff --git a/npc/custom/quests/thq/THQS_QuestNPC.txt b/npc/custom/quests/thq/THQS_QuestNPC.txt deleted file mode 100644 index 1bbe8fd7a..000000000 --- a/npc/custom/quests/thq/THQS_QuestNPC.txt +++ /dev/null @@ -1,549 +0,0 @@ -//===== Hercules Script ====================================== -//= Treasure Hunter Quests -//===== By: ================================================== -//= Fredzilla -//===== Current Version: ===================================== -//= 1.4 -//===== Description: ========================================= -//= Start for Treasure hunter quests -//===== Additional Comments: ================================= -//= Event_THQS - Used to check if you have already registered -//= #Treasure_Token - used to keep track of tokens -//= 1.0 - Straight conversionof Aegis NPC file -//= 1.1 Added time penalty to prevent get quests to often [Lupus] -//= 1.2 Fixed not working penalty, added anti-cheat [Lupus] -//= 1.3 Changed some bad RGB Codes. (bugreport:211) [Samuray22] -//= 1.4 Fixed typos. (bugreport:2607) [Kisuka] -//============================================================ - -yuno_in01,112,151,6 script Quest Manager 1_M_SIZ,{ - mes "[Guy]"; - mes "Welcome to the Treasure Hunters Guild "+strcharinfo(PC_NAME)+"."; - next; - if (On_Quest == 0) goto N_NewQuest; - mes "[Guy]"; - mes "Look " +strcharinfo(PC_NAME)+ ", you can only 1 quest at a time, you should finish the quest unless you have given up."; - mes "Giving up will cost you ^FF00002500z^000000."; - next; - if (select("No, never would I leave a quest!", "Yah I'm pathetic... Pay 2500z") == 1) { - mes("[Guy]"); - mes("Good well get back out there."); - close(); - } - if (Zeny < 2500) goto N_ZenyFail; - set one_qset, 0; - set two_qset, 0; - set three_qset, 0; - set four_qset, 0; - set five_qset, 0; - set six_qset, 0; - set seven_qset, 0; - set eight_qset, 0; - set nine_qset, 0; - set ten_qset, 0; - set On_Quest, 0; - Zeny -= 2500; - //add time delay penalty. You can get another quest after 2 - 3 hours. [Lupus] - set #THQ_DELAY, (gettime(GETTIME_YEAR)*12*31*24+gettime(GETTIME_MONTH)*31*24+gettime(GETTIME_DAYOFMONTH)*24+gettime(GETTIME_HOUR)+rand(2,3)); - mes "[Guy]"; - mes "Its sad to see someone give a quest up..."; - mes "Shame on you."; - emotion 7; - close; - -N_ZenyFail: - mes "[Guy]"; - mes "Thats sad you don't even have ^FF00002500z^000000."; - close; - -N_NewQuest: - if (Event_THQS == 0) goto N_Signup; - //checking if time penalty is over [Lupus] - if (#THQ_DELAY > (gettime(GETTIME_YEAR)*12*31*24 + gettime(GETTIME_MONTH)*31*24 + gettime(GETTIME_DAYOFMONTH)*24 + gettime(GETTIME_HOUR)) ) goto L_NoQuestsForYet; - mes "[Guy]"; - mes "Ahh welcome fellow Treasure Hunter."; - mes "You currently have ^FF0000"+#Treasure_Token+"^000000 treasure tokens!!!"; - mes "Would you like me to asign you a Quest?"; - next; - if (select("Yes I would like a Quest Please.", "Sorry Guy no time today.") == 2) { - mes("[Guy]"); - mes("Alright maybe next time."); - emotion(e_hmm); - close; - } - - mes "[Guy]"; - mes "Ok lets see what quest we can give you today."; - mes "The quest names in ^FF0000This Colour^000000 mean that they are more challanging then the rest, but have better rewards."; - next; - set #THQ_DELAY,(gettime(GETTIME_YEAR)*12*31*24+gettime(GETTIME_MONTH)*31*24+gettime(GETTIME_DAYOFMONTH)*24+gettime(GETTIME_HOUR) + 1); //you can get another quest after 1 hour [Lupus] - emotion 21; - if(@treasure_job==0) set @treasure_job,rand(1,10); //doesn't allow cheaters to pick any quest they want - if(@treasure_job==2) goto N_JobList2; - if(@treasure_job==3) goto N_JobList3; - if(@treasure_job==4) goto N_JobList4; - if(@treasure_job==5) goto N_JobList5; - if(@treasure_job==6) goto N_JobList6; - if(@treasure_job==7) goto N_JobList7; - if(@treasure_job==8) goto N_JobList8; - if(@treasure_job==9) goto N_JobList9; - if(@treasure_job==10) goto N_JobList10; - goto N_JobList1; //if(@treasure_job==1) - -N_Signup: - mes "[Guy]"; - mes "I'm afraid you must sign up for the guild before you can go on a quest!"; - emotion 17; - close; - -L_NoQuestsForYet: - mes "[Guy]"; - mes "I'm afraid there aren't any Quests for you yet."; - mes "Call in "+ (#THQ_DELAY - (gettime(GETTIME_YEAR)*12*31*24+gettime(GETTIME_MONTH)*31*24+gettime(GETTIME_DAYOFMONTH)*24+gettime(GETTIME_HOUR)) )+" hours later."; - emotion 17; - close; - -L_QuestGiven: - set On_Quest,1; - set @treasure_job,0; //next time u get random quest - close; - -///////Job list 1/////// -N_JobList1: - mes "[Guy]"; - mes "Ok you have a couple quests that can be done here."; - next; - switch (select("Lost Old Man.", "Master needs his Bow.", "The Hit List.", "^FF0000The Sad Widow.^000000")) { - case 1: - mes("[Guy]"); - mes("^FF0000Lost Old Man^000000"); - mes("^FF0000------------^000000"); - mes("This is an easy and low payed quest."); - mes(" "); - mes("A wife came in asking us to find his husband, she seems to come in alot asking us to find him over and over again."); - next(); - mes("[Guy]"); - mes("But he always seems to be around the same place so there isn't much looking involved,check the mountains 1 west and 1 north of prontera."); - one_qset = 1; - break; - case 2: - mes("[Guy]"); - mes("^FF0000Master needs his Bow^000000"); - mes("^FF0000--------------------^000000"); - mes("This is just a package delivery run, no big deal or anything."); - mes(" "); - mes("Take this to an archer in the Archer Village outside of Payon."); - getitem(Delivery_Message, 1); //Delivery_Box - one_qset = 2; - break; - case 3: - mes("[Guy]"); - mes("^FF0000The Hit List^000000"); - mes("^FF0000------------^000000"); - mes("In this quest you get to see some action."); - mes(" "); - mes("There has been a farmer that keeps having all his crops eaten by ^FF0000Thief Bugs, Porings, and Lunitics^000000 here is a lost of what I need you to do. He is waiting East of Prontera."); - next(); - mes("[Guy]"); - mes("Ok go to the east and bash those little bastards like there is no tommorow. When you are done with that list you have just discard it, but you will NOT get another one!."); - one_qset = 3; - break; - case 4: - mes("^FF0000The Sad Widow^000000"); - mes("^FF0000*************^000000"); - mes("This is just another quest with possable well pay."); - mes(" "); - mes("There is an old Widow in pontera, she recently lost her husband due to a monster attack.She has requested a Guild member to come talk to her at the Pontera Graveyard."); - one_qset = 4; - break; - } - goto(L_QuestGiven); - -///////Job list 2/////// -N_JobList2: - mes "[Guy]"; - mes "Ok you have a couple quests that can be done here."; - next; - switch (select("The Strange Letter", "Jur for Jeramiah", "Bee Keepers Hunny", "^FF0000The Wander Man^000000")) { - case 1: - mes("^FF0000The Strange Letter^000000"); - mes("^FF0000------------------^000000"); - mes("I do not know much about this quest."); - mes(" "); - mes("A strange man came in here yesterday and asked me to deliver this ^FF0000Strange Letter^000000 to some woman in Morroc. Knowing us we do not ask questions so you must take care of this delivery."); - mes("The Woman is in located in Morroc and her name is Erika."); - getitem(Delivery_Message, 1); - two_qset = 1; - break; - case 2: - mes("^FF0000Jur for Jeramiah^000000"); - mes("^FF0000----------------^000000"); - mes("Standard delivery quest."); - mes(" "); - mes("Jeramiah ordered a Special Jur from our weapon shop.Your Job is to deliver it to him in the Assasin Temple."); - getitem(1998, 1); - two_qset = 2; - break; - case 3: - mes("^FF0000Bee Keepers Hunny^000000"); - mes("^FF0000-----------------^000000"); - mes("Strange man in the marsh need your help."); - mes(" "); - mes("There is a strange man in the forest in ^FF00001 south and 1 west^000000 of Prontera, he need your help with something."); - two_qset = 3; - break; - case 4: - mes("^FF0000The Wander Man^000000"); - mes("^FF0000**************^000000"); - mes("There is a woman in Payon that is in desperate for aid."); - mes(" "); - mes("There is a woman in Payon named Molly please get to her as soon as possable the letter she sent here sounded like someone was killing her."); - two_qset = 4; - break; - } - goto(L_QuestGiven); - -///////Job list 3/////// -N_JobList3: - mes "[Guy]"; - mes "Ok you have a couple quests that can be done here."; - next; - switch (select("Damn Pixies!", "Package Delivery", "Prontera Culvert", "^FF0000Trouble at the Coal Mine^000000")) { - case 1: - mes("^FF0000Damn Pixies!^000000"); - mes("^FF0000------------^000000"); - mes("Have you ever been to Hell?"); - mes(" "); - mes("A man outside of ^FF0000Ant Hell^000000 has requested your audiance, I suggest you hurry."); - three_qset = 1; - break; - case 2: - mes("^FF0000Package Delivery^000000"); - mes("^FF0000----------------^000000"); - mes("Standard drop off quest."); - mes(" "); - mes("In this quest you need to deliver a mystery box to someone names ^FF0000Flank at the bridge between Aldebaran and Juno^000000."); - getitem(Merchant_Box_2, 1); //Delivery_Box_ - three_qset = 2; - break; - case 3: - mes("^FF0000Prontera Culvert^000000"); - mes("^FF0000----------------^000000"); - mes("The bugs,They are everywere!."); - mes(" "); - mes("The ^FF0000Prontera Culvert^000000 is out of control!Sign up as a volenteer to clean out some of the culvert."); - next(); - mes("I know it seems like there is no stoping them but however many you kill does makes a differance. After you have signed up, inside the Culvert there will be a Knight that will give you a quest."); - three_qset = 3; - break; - case 4: - mes("^FF0000Trouble at the Coal Mine^000000"); - mes("^FF0000************************^000000"); - mes("The fun...err...trouble never stops in Rune Midgar."); - mes(" "); - mes("Recently there was an acident at the coal mines. There was a huge chasm that released some undead Evil Druids."); - next(); - mes("The Evil Druids started to turn all the workers into the undead. We do not know why, but we do not want to find out, contact a man named Rudolfo outside the Coal Mines."); - three_qset = 4; - break; - } - goto(L_QuestGiven); - -///////Job list 4/////// -N_JobList4: - mes "[Guy]"; - mes "Ok you have a couple quests that can be done here."; - next; - switch (select("Zombie Attack", "Mystic Wizard", "Aww shoot!", "^FF0000Emperium^000000")) { - case 1: - mes("^FF0000Zombie Attack^000000"); - mes("^FF0000-------------^000000"); - mes("The undead have invaded Payon Cave!"); - mes(" "); - mes("I remember when Payon Cave used to be a safe place to visit, but now undead Zombies have infested the cave! Please contact ^FF0000Flora outside on Payon Cave^000000 and aid her."); - four_qset = 1; - break; - case 2: - mes("^FF0000Mystic Wizard^000000"); - mes("^FF0000-------------^000000"); - mes("Proto-type of a Staff must be delivered to Zed the Wizard."); - mes(" "); - mes("Zed the Wizard has requested to try out a new un-named proto-type staff. It will be your job to deliver this to him. Zed tend to stay within the general area of Juno."); - getitem(1999, 1); - four_qset = 2; - break; - case 3: - mes("^FF0000Aww shoot!^000000"); - mes("^FF0000----------^000000"); - mes("A little girl is in trouble."); - mes(" "); - mes("There is a little girl in trouble, her name is Dassy and she is ^FF0000east of the prontera fountan^000000."); - four_qset = 3; - break; - case 4: - mes("^FF0000Emperium^000000"); - mes("^FF0000********^000000"); - mes("This is a strange quest that I know little about."); - mes(" "); - mes("Someone in ^FF0000Prontera Guild Hall^000000 has requested to see one of our members, his name is Czhore."); - four_qset = 4; - break; - } - goto(L_QuestGiven); - -///////Job list 5/////// -N_JobList5: - mes "[Guy]"; - mes "Ok you have a couple quests that can be done here."; - next; - switch (select("Savage Land", "Pyramid's part 1", "Thinking first", "^FF0000The not so friendly ghost^000000")) { - case 1: - mes("^FF0000Savage Land^000000"); - mes("^FF0000-----------^000000"); - mes("Easy for some very hard for others."); - mes(" "); - mes("A man named Lithin wish's to give you a quest, you can find him north of prontera inside of ^FF0000The Hidden Temple^000000"); - five_qset = 1; - break; - case 2: - mes("^FF0000Pyramid's^000000"); - mes("^FF0000---------^000000"); - mes("Its funny cause no one knows how these were really made."); - mes(" "); - mes("Aperently the Pyramids have are beganing to be infested with undead activity,outside the pyramids a man will be waiting for you. He did no give us his name but he asked for you to hurry."); - five_qset = 2; - break; - case 3: - mes("^FF0000Thinking first^000000"); - mes("^FF0000--------------^000000"); - mes("This sounds like another one of those ditzy girl quests..."); - mes(" "); - mes("Dazzy the local blond around Geffen has asked for you to deliver her these flowers. I don't know why someone would send flowers to herself..."); - getitem(Bunch_Of_Flowers, 1); //Bouquet - five_qset = 3; - break; - case 4: - mes("^FF0000The not so friendly ghost^000000"); - mes("^FF0000*************************^000000"); - mes("Well no one ever said Casper was nice behind the sceens."); - mes(" "); - mes("A wizard on the 3rd floor of geffen tower want's to talk to you about the anchient ruins underneath the city."); - five_qset = 4; - break; - } - goto(L_QuestGiven); - -///////Job list 6/////// -N_JobList6: - mes "[Guy]"; - mes "Ok you have a couple quests that can be done here."; - next; - switch (select("Package for thiefs", "Pyramid's part 2", "Special delivery", "^FF0000Geffenia^000000")) { - case 1: - mes("^FF0000Package for thiefs^000000"); - mes("^FF0000------------------^000000"); - mes("How ironic."); - mes(" "); - mes("Deliver this Box to the Thiefs guild."); - getitem(Merchant_Box_3, 1); //Delivery_Box__ - six_qset = 1; - break; - case 2: - mes("^FF0000Pyramid's part 2^000000"); - mes("^FF0000----------------^000000"); - mes("More undead action in this triangle!"); - mes(" "); - mes("Talk to a man outside the entrance of the pyramids, he seems to have another quest for you."); - six_qset = 2; - break; - case 3: - mes("^FF0000Special delivery^000000"); - mes("^FF0000----------------^000000"); - mes("Well most of what we do is run packages, this is no different from other's."); - mes(" "); - mes("Take this box, DO NOT OPEN IT! To a little girl in Lutie named Chirach she should be around santa."); - getitem(Merchant_Box_3, 1); //Delivery_Box__ - six_qset = 3; - break; - case 4: - mes("^FF0000Geffenia^000000"); - mes("^FF0000********^000000"); - mes("The little children of Geffen have been haveing strange nightmares."); - mes(" "); - mes("We belive that the ruins underneath geffen are causeing this problem, talk to a Wizard named Zuuzuu inside Geffen Tower for your mission."); - six_qset = 4; - break; - } - goto(L_QuestGiven); - -///////Job list 7/////// -N_JobList7: - mes "[Guy]"; - mes "Ok you have a couple quests that can be done here."; - next; - switch (select("Apple Juice", "Delivery", "^FF0000Golden Thief Bug^000000", "^FF0000Evil Pirates^000000")) { - case 1: - mes("^FF0000Apple Juice^000000"); - mes("^FF0000-----------^000000"); - mes("Can't say no to some good apple juice."); - mes(" "); - mes("There is a little girl up in prontera Square a bit north from the fountain, go talk to her."); - seven_qset = 1; - break; - case 2: - mes("^FF0000Delivery^000000"); - mes("^FF0000--------^000000"); - mes("So many packages so little time."); - mes(" "); - mes("Take this box to a man in Alberta named Charles."); - getitem(Merchant_Box_2, 1); //Delivery_Box_ - seven_qset = 2; - break; - case 3: - mes("^FF0000Golden Thief Bug^000000"); - mes("^FF0000****************^000000"); - mes("The prontera Culvert has never been the same..."); - mes(" "); - mes("Well there have been reports of a Golden Thief Bug running around the bottem on the Culvert. Talk to a Knight inside the Culvert."); - seven_qset = 3; - break; - case 4: - mes("^FF0000Evil Pirates^000000"); - mes("^FF0000************^000000"); - mes("A ghost ship has washed up on shore on an island outside of Izlude."); - mes(" "); - mes("A female assasin has a quest for you, she is waiting outside the Ghost Ship.There have been reports of evil undead pirates lurking around inside the ship."); - seven_qset = 4; - break; - } - goto(L_QuestGiven); - -///////Job list 8/////// -N_JobList8: - mes "[Guy]"; - mes "Ok you have a couple quests that can be done here."; - next; - switch (select("Banana Juice", "Another Delivery", "^FF0000Baphomet!^000000", "My lost beeds")) { - case 1: - mes("^FF0000Banana Juice^000000"); - mes("^FF0000------------^000000"); - mes("Sound gross to some good to others."); - mes(" "); - mes("There is a little girl up in prontera Square a bit north from the fountain, go talk to her."); - eight_qset = 1; - break; - case 2: - mes("^FF0000Another Delivery^000000"); - mes("^FF0000----------------^000000"); - mes("Well yah box delivering is in high demand,lots of lazy people."); - mes(" "); - mes("Take this package to a man in Morroc named Klye."); - getitem(Merchant_Box_1, 1); //Delivery_Box - eight_qset = 2; - break; - case 3: - mes("^FF0000Baphomet!^000000"); - mes("^FF0000*********^000000"); - mes("Hidden in the Temple he watches and guards."); - mes(" "); - mes("Rumor has it that a Goat Man is lurking in the Hidden Temple, There is also a man in the Hidden Temple names Zack that needs you help with this Goat Man known as Baphomet."); - eight_qset = 3; - break; - case 4: - mes("^FF0000My lost Beeds^000000"); - mes("^FF0000-------------^000000"); - mes("Oh great I smell stupidity..."); - mes(" "); - mes("A little girl in Payon wants to talk to you, her name is Flower, What a stupid name,Hahaha."); - eight_qset = 4; - break; - } - goto(L_QuestGiven); - -///////Job list 9/////// -N_JobList9: - mes "[Guy]"; - mes "Ok you have a couple quests that can be done here."; - next; - switch (select("Smelly Box", "^FF0000Sohee's Everywere!^000000", "^FF0000Moonlight Flower^000000", "Payon Cave")) { - case 1: - mes("^FF0000Smelly Box^000000"); - mes("^FF0000----------^000000"); - mes("Oh god please get this out of here fast."); - mes(" "); - mes("Oh man smells like someone died in here.Take this to the Magic School in Geffen and hurry,ahh the smell its burning my eye's!!!"); - getitem(Merchant_Box_2, 1); //Delivery_Box_ - nine_qset = 1; - break; - case 2: - mes("^FF0000Sohee's Everywere!^000000"); - mes("^FF0000******************^000000" ); - mes("Hmmm seem's a man named Jack wants to speak to you in the Archer Guild House."); - mes(" "); - mes("Well what we know about Payon is that a while ago there was a freak fire that burnt down the old school."); - next; - mes("The strange thing about what happened was that the children inside did not seem to die from the flames."); - mes("Speak to the little school girl somewere in Payon."); - nine_qset = 2; - break; - case 3: - mes("^FF0000Moonlight Flower^000000"); - mes("^FF0000****************^000000" ); - mes("Hmmm seem's a man named Jack wants to speak to you in the Archer Guild House."); - mes(" "); - mes("Well I don't know much about this, it has to do with the deepest reagions of Payon Cave, We don't know much because no one ever seems to make it back alive."); - nine_qset = 3; - break; - case 4: - mes("^FF0000Payon Cave^000000"); - mes("^FF0000----------^000000" ); - mes("Hmmm seem's a man named Jack wants to speak to you in the Archer Guild House."); - mes(" "); - mes("The farther we go into the cave the stranger it gets."); - nine_qset = 4; - break; - } - goto(L_QuestGiven); - -///////Job list 10/////// -N_JobList10: - mes "[Guy]"; - mes "Ok you have a couple quests that can be done here."; - next; - switch (select("The Blank Box", "^FF0000Eddga^000000", "^FF0000Phreeoni^000000", "^FF0000Maya^000000")) { - case 1: - mes("^FF0000The Blank Box^000000"); - mes("^FF0000-------------^000000"); - mes("Package to Morroc"); - mes(" "); - mes("There is nothing writen on this box but a notice to deliver it to a man Kreg."); - getitem(Merchant_Box_2, 1); //Delivery_Box_ - ten_qset = 1; - break; - case 2: - mes("^FF0000Eddga^000000"); - mes("^FF0000*****^000000"); - mes("Tony the Tiger is on crack and destroying the forest."); - mes(" "); - mes("Talk to a man outside the 'Hidden' Hunter Guild, He needs your help."); - ten_qset = 2; - break; - case 3: - mes("^FF0000Phreeoni^000000"); - mes("^FF0000********^000000"); - mes("He is big and Pink and you run and hide!"); - mes(" "); - mes("This guy just poped into some hole one day, He dosent look that tough but you would be supprised. Talk to a man named Caral outside of Ant Hell."); - ten_qset = 3; - break; - case 4: - mes("^FF0000Maya^000000"); - mes("^FF0000****^000000"); - mes("Something scary!"); - mes(" "); - mes("This half naked freak need an army to take down, now its your job, good luck. Meet a girl named Jeni outside of the back entrance to Ant Hell."); - ten_qset = 4; - break; - } - goto(L_QuestGiven); -} diff --git a/npc/custom/quests/thq/THQS_Quests.txt b/npc/custom/quests/thq/THQS_Quests.txt deleted file mode 100644 index c0eb1427a..000000000 --- a/npc/custom/quests/thq/THQS_Quests.txt +++ /dev/null @@ -1,1050 +0,0 @@ -//===== Hercules Script ====================================== -//= Treasure Hunter Quests -//===== By: ================================================== -//= Fredzilla -//===== Current Version: ===================================== -//= 1.6 -//===== Description: ========================================= -//= Start for Treasure hunter quests -//===== Additional Comments: ================================= -//= Event_THQS - Used to check if you have already registered -//= #Treasure_Token - used to keep track of tokens -//= 1.0 - Straight conversionof Aegis NPC file -//= 1.2 some bugfixes, typos [Lupus] -//= 1.3 Removed Duplicates [Silent] -//= 1.4 Further removed duplicates. [L0ne_W0lf] -//= 1.5 Fixed name collision with 'Little Girl' in cities/lutie.txt [Ai4rei] -//= 1.6 Changed "Caral" coordinates because moc_fild04 no longer exists. [Euphy] -//============================================================ - -///////Job list 1/////// -//1-1 -mjolnir_09,187,189,6 script Old Man 1_M_PAY_ELDER,{ - if (one_qset==1) goto N_QuestStart; - mes "[Old Man]"; - mes "Eh! Can't and old man walk in peace anymore?!"; - close; -N_QuestStart: - mes "[Old Man]"; - mes "Eh? whats that?!"; - mes " "; - mes "My wife wants me home?! Alright, alright... I'm going, I'm going. Thank you for telling me the message."; - mes " "; - mes "Here take this Treasure Token."; - set one_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+1; - close; -} -//1-2; -pay_arche,86,129,6 script Archer 4_M_JOB_HUNTER,{ - if (one_qset == 2) goto N_QuestStart; - mes "[Kieth]"; - mes "Sorry can't talk, I'm a busy man, I'm waiting for my package."; - close; -N_QuestStart: - mes "[Kieth]"; - if (countitem(Delivery_Message) < 1) { - mes "Weren't you supposed to deliver me a box? Where is it?"; - close; - } - mes "Ahh, you must be from the Treasure Hunter Agensy. Do you have my bow??"; - mes " "; - mes "Ahh, good,thank you for your time. Take this Treasure Token."; - delitem 1072,1; - set one_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+1; - close; -} -//1-3 -prt_fild06,37,192,6 script Farmer 4_M_TELEPORTER,{ - if (one_qset == 3 && countitem(Jellopy) > 19 && countitem(Worm_Peelings) > 19 && countitem(Fluff) > 19 && countitem(Clover) > 19) goto N_QuestComp; - if (one_qset==3) goto N_QuestStart; - mes "[Billy-Bob]"; - mes "Arrrg!... Those Bastard Bugs have eaten everything, this place donest even look like my farm anymore!!"; - close; -N_QuestComp: - mes "[Billy-Bob]"; - mes "Ohhh, thank you thats a good start for me."; - mes "Well those bugs can bugger off..."; - mes " "; - mes "Well here take these 2 Treasure Tokens."; - delitem 909,20; - delitem 955,20; - delitem 914,20; - delitem 705,20; - set one_qset,0; - set #Treasure_Token,#Treasure_Token+2; - set On_Quest,0; - close; -N_QuestStart: - mes "[Billy-Bob]"; - mes "Those Bastard Bugs are Everywere!!!"; - mes "You must be from the guild! OK, bring me 20 Worm Peelings, 20 Jellopys, 20 fluff and 20 Clovers."; - close; -} -//1-4 -prontera,264,353,6 script Old Lady#thq 8_F_GRANDMOTHER,{ - if (one_qset == 4 && countitem(Mementos) > 14) goto N_QuestComp; - if (one_qset == 4) goto N_QuestStart; - mes "[Old Lady]"; - mes "This is my husbands grave... I'm just paying him a little visit."; - close; -N_QuestComp: - mes "[Old Lady]"; - mes "You have them?!"; - next; - mes "[Old Lady]"; - mes "Thank you sooo much here have these 3 Treasure Tokens."; - delitem 934,15; - set #Treasure_Token,#Treasure_Token+3; - set one_qset,0; - set On_Quest,0; - close; -N_QuestStart: - mes "[Old Lady]"; - mes "So your the one that has come to help me?"; - mes " "; - mes "Ok well this is what I wanted you to do,this greave beside me is my husbands grave and I promised him that I would bury some Mementos with him, The problem is that I have no Mementos..."; - next; - mes "[Old Lady]"; - mes "Bring me 15 Mementos, please."; - close; -} -///////Job list 2/////// -//2-1; -morocc,59,109,6 script Erika 8_F_GIRL,{ - if (two_qset == 1 && countitem(Delivery_Message) > 0) goto N_QuestComp; - if (two_qset == 1) goto N_QuestStart; - mes "[Erika]"; - mes "Hello my name is Erika."; - close; -N_QuestComp: - mes "[Erika]"; - mes "What's that? You have a letter for me!!"; - mes "Oooooh I just love,love letters :D. next here will I open it."; - next; - mes "[Letter]"; - mes "Dear Erika"; - mes " "; - mes "Sorry to inform you but you have been evicted, please move out within 3-5 days."; - mes " "; - mes "-Managment"; - next; - mes "[Erika]"; - mes "Oh... um... Well fuck, that bastard thinks he can kick me out!!!!! He's got another thing coming!"; - mes " "; - mes "Well thank you for delivering this anyway have this Treasure Token."; - delitem 1072,1; - set two_qset,0; - set #Treasure_Token,#Treasure_Token+1; - set On_Quest,0; - close; -N_QuestStart: - mes "[Erika]"; - mes "So your the one that has a letter for me?"; - mes " "; - mes "Ok well where's the letter?"; - close; -} -//2-2; -in_moc_16,15,30,6 script Jeramiah 4_M_JOB_ASSASSIN,{ - if (two_qset == 2 && countitem(1998) > 0) goto N_QuestComp; - if (two_qset == 2) goto N_QuestStart; - mes "[Jeramiah]"; - mes "Its so boring when you have to next on people..."; - close; -N_QuestComp: - mes "[Jeramiah]"; - mes "Ahh hello, you must be from the Treasure Hunter Guild."; - mes "Do you have my Jur? Ahh good good. Thank you."; - mes "Here have this Treasure Hunter Token."; - delitem 1998,1; - set two_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+1; - close; -N_QuestStart: - mes "[Jeramiah]"; - mes "So your the one that is supposed to bring my Jur?"; - mes "So where's my Jur?"; - close; -} -//2-3; -prt_fild07,316,263,6 script Marsh Man 4_M_02,{ - if (two_qset == 3 && countitem(Honey) > 19) goto N_QuestComp; - if (two_qset == 3) goto N_QuestStart; - mes "[Lenith]"; - mes "Hello, sorry I don't have much time to talk I'm waiting for someone."; - close; -N_QuestComp: - mes "[Lenith]"; - mes "Oh hello, OH you have my honey, my bees and I thank you."; - mes " "; - mes "Here have these 2 Treasure Hunter Tokens."; - delitem 518,20; - set #Treasure_Token,#Treasure_Token+2; - set two_qset,0; - set On_Quest,0; - close; -N_QuestStart: - mes "[Lenith]"; - mes "Hello, my name is Lenith and I have a quest for you."; - mes "Well resently a bunch of stupid bears stole the supers off all my bee's nests...Stupid bears."; - mes " "; - mes "What I need you to do is find me some more honey so these bee's can get through the winter. I will need about 20 Honey."; - close; -} -//2-4; -payon,161,72,6 script Molly 4_F_06,{ - if (two_qset == 4 && countitem(Skull) > 0) goto N_QuestComp; - if (two_qset == 4) goto N_QuestStart; - mes "[Molly]"; - mes "Sorry can't talk, I'm waiting for someone."; - close; -N_QuestComp: - mes "[Molly]"; - mes "WOW YOU DID IT!!!"; - mes " "; - mes "I knew you looked strong, I have no idea how you could have killed that monster though."; - mes "thank you so much, here have these 3 Guild Tokens as a reward."; - delitem 7005,1; - set two_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+3; - close; -N_QuestStart: - mes "[Molly]"; - mes "Wow you must be the brave man from the treasure hunter guild!"; - mes "Ok here is whats happening, I don't know what started it but there is a strange Ronan Skeleton running aroung the woods 2 East from here."; - next; - mes "[Molly]"; - mes "We have try to kill him in the past but it was not...ummm...It was a bad idea. What I want you to do is go there and bring me back his Skull as proof of you killing him."; - mes " "; - mes "Good Luck"; - close; -} -///////Job list 3/////// -//3-1; -moc_fild04,208,322,6 script Clark 1_M_YOUNGKNIGHT,{ - if (three_qset == 1 && countitem(Elder_Pixies_Beard) > 29) goto N_QuestComp; - if (three_qset == 1) goto N_QuestStart; - mes "[Clark]"; - mes "Love to chat, but I'm waiting for someone."; - close; -N_QuestComp: - mes "[Clark]"; - mes "Ok well this is a start."; - mes " "; - mes "I hope that this hole will go away 1 day, and I might have another quest for you in the future."; - mes "here take these 2 Treasure Tokens."; - delitem 1040,30; - set #Treasure_Token,#Treasure_Token+2; - set three_qset,0; - set On_Quest,0; - close; -N_QuestStart: - mes "[Clark]"; - mes "Well hello to you."; - mes "You must be from the Treasure Hunter Guild."; - mes " "; - mes "Ok well this is my problem, yah see that hole in the ground? Yah that thing just popped out of nowhere a couple years ago, inside its full of these ugly ants and these monsters called Giearths."; - next; - mes "[Clark]"; - mes "What I want you to do is kill some of the Giearths.Bring me 30 of there little Moustaches."; - close; -} -//3-2; -yuno_fild01,186,162,6 script Flank 1_F_MERCHANT_01,{ - if (three_qset == 2 && countitem(Merchant_Box_2) > 0) goto N_QuestComp; - if (three_qset == 2) goto N_QuestStart; - mes "[Flank]"; - mes "Sorry I'm waiting for my package so I don't want to talk."; - close; -N_QuestComp: - mes "[Flank]"; - mes "Perfect right on time, now I must be going to plant this bomb.... Err I meen give this package to my mother for her birthday."; - next; - mes "[Flank]"; - mes "Thanks"; - mes "Have this Treasure Token"; - delitem 1082,1; - set three_qset,0; - set #Treasure_Token,#Treasure_Token+1; - set On_Quest,0; - close; -N_QuestStart: - mes "[Flank]"; - mes "So you have my packages?"; - mes "Well where is it then?"; - close; -} -//3-3 Goes to 7-3 using callfunc -prt_sewb1,120,245,6 script Sewer Managment Knight 4_M_GEF_SOLDIER,{ - if (three_qset == 3 && countitem(Worm_Peelings) > 149) goto N_QuestComp; - if (three_qset == 3) goto N_QuestStart; - if (seven_qset == 3) goto N_QuestStart2; - mes "[Sewer Managmant]"; - mes "Live dosent get any worse for me,working in the bug filled Culvert every day..."; - close; -N_QuestComp: - mes "[Sewer Managment]"; - mes "Well that looked like it was no trouble for you."; - mes "Thanks have these 4 Treause Tokens."; - delitem 955,150; - set #Treasure_Token,#Treasure_Token+4; - set three_qset,0; - set On_Quest,0; - close; -N_QuestStart: - mes "[Sewer Managmant]"; - mes "For a while now we have had monster, mostly bugs infesting the culvert..."; - mes " "; - mes "What I want you to do is kinda clean some of it out, every little bit counts."; - mes "Bring me 150 Worm Peelings."; - close; -N_QuestStart2: - callfunc "seven_qset-3"; - close; -} -//3-4 -mjolnir_02,87,357,6 script Man#01 1_M_BARD,{ - if (three_qset == 4 && countitem(Lantern) > 49) goto N_QuestComp; - if (three_qset == 4) goto N_QuestStart; - mes "[Rudolfo]"; - mes "Danger, the Coal Mine is now a hostile area."; - close; -N_QuestComp: - mes "[Rudolfo]"; - mes "Well its good to see that you have come back alive."; - mes "I had my doughts but thank you for your help."; - mes " "; - mes "Here have these 4 Treasure Tokens."; - delitem 1041,50; - set three_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+4; - close; -N_QuestStart: - mes "[Rudolfo]"; - mes "Hello, you must be from the Treasure Hunter Guild."; - mes " "; - mes "They must have filled you in on what is happening on the lower levels of this Coal Mine, I know its desturbing and we are still trying to figure out why and how 2 Evil Druids got down there."; - mes " "; - mes "Well what I want you to do is bring me 50 Lantern's as proof that you have cleaned some of them out, any loot you find down there you may keep other then what I have asked you to get for me."; - close; -} -///////Job list 4/////// -//4-1; -pay_arche,45,138,6 script Flora 4_F_07,{ - if (four_qset == 1 && countitem(Decayed_Nail) > 49) goto N_QuestComp; - if (four_qset == 1) goto N_QuestStart; - mes "[Flora]"; - mes "Well hello be carfull in the cave, we have heard reports of Undead monster funning around."; - close; -N_QuestComp: - mes "[Flora]"; - mes "Welcome back, good job you did it. (I wonder if that Flaming Bastard is still alive)"; - mes "Well I hope that cut down a bit on the monsters and here have these 2 Tokens."; - delitem 957,50; - set #Treasure_Token,#Treasure_Token+2; - set four_qset,0; - set On_Quest,0; - killmonster "pay_dun00","Flora::OnMobDead"; - close; -N_QuestStart: - mes "[Flora]"; - mes "Well hello there."; - mes " "; - mes "Well this is what I need you to do, bring me 50 Decayed Nails - awile back Payon Cave used to be a safe place to go...But now things have gone out of controll and Zombies have invaded the first floor..."; - mes " "; - mes "There is also these new monsters that have just poped out of no were, we call them Flaming Bastards...Be carfull if you arn't powerfull yet because they are very strong."; - next; - mes "[Flora]"; - mes "Good Luck"; - mes "Remember I need 50 Nail's"; - monster "pay_dun00",0,0,"Flaming Bastard",1072,1,"Flora::OnMobDead"; - monster "pay_dun00",0,0,"Flaming Bastard",1072,1,"Flora::OnMobDead"; - close; -OnMobDead: - end; -} -//4-2; -yuno,45,138,6 script Zed 4_M_JOB_WIZARD,{ - if (four_qset == 2 && countitem(1999) > 0) goto N_QuestComp; - if (four_qset == 2) goto N_QuestStart; - mes "[Zed]"; - mes "Get out of my face you flake."; - close; -N_QuestComp: - mes "[Zed]"; - mes "Dear god took you long enough you bastard!"; - mes "You know how much my time is worth!!!!"; - mes "Your slow and I'm never gona recomend a job for you, Gimmie my staff and get out of me face!"; - next; - mes "[Zed]"; - mes "Well you can take this crapy Treausre Token."; - delitem 1999,1; - set On_Quest,0; - set four_qset,0; - set #Treasure_Token,#Treasure_Token+1; - close; -N_QuestStart: - mes "[Zed]"; - mes "Where's my staff?"; - close; -} -//4-3; -prontera,176,204,6 script Dassy 4_F_SISTER,{ - if (four_qset == 3 && countitem(Shoot) > 19) goto N_QuestComp; - if (four_qset == 3) goto N_QuestStart; - mes "[Dassy]"; - mes "Hello!"; - close; -N_QuestComp: - mes "[Dassy]"; - mes "Yes! Now my pet will not starve!"; - mes "Thank you so much!"; - mes "Have this Treasure Token."; - delitem 711,20; - set On_Quest,0; - set four_qset,0; - set #Treasure_Token,#Treasure_Token+1; - close; -N_QuestStart: - mes "[Dassy]"; - mes "Hello person!!"; - mes "You have come to help me? Yes, yes."; - mes " "; - mes "Ok I don't want to talk about it but I need you to fine me 20 Shoot's"; - mes "Thank you!"; - close; -} -//4-4; -prt_gld,157,99,6 script Czhore 4_M_CRU_OLD,{ - if (four_qset == 4 && countitem(Emperium) > 0) goto N_QuestComp; - if (four_qset == 4) goto N_QuestStart; - mes "[Czhore]"; - mes "Hello friend"; - mes "Have you come to check out one of these guild halls?"; - close; -N_QuestComp: - mes "[Czhore]"; - mes "Thank god!"; - mes " "; - mes "I'm so happy to see one of these Emperiums! Thank you "+strcharinfo(PC_NAME)+"."; - next; - mes "[Czhore]"; - mes "Here have these 2 Treasure Tokens."; - mes "And some of my old treasure..."; - delitem 714,1; - monster "prt_gld",155,99,"Old Man's Treasure",1324,1; - set four_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+2; - close; -N_QuestStart: - mes "[Czhore]"; - mes "Hello friend"; - mes "I know this may sound stupid but ever since I was a boy I have dreamed of having an Emperium..."; - mes "As I know I look old, I have just never been able to find one, now that I am retired from the Treasure Hunter Guild there is no more action for me..."; - mes " "; - mes "If you can get me one I shall reward you."; - close; -} -///////Job list 5/////// -//5-1; -prt_maze01,18,184,6 script Lithin#01 4_M_CRU_OLD,{ - if (five_qset == 1 && countitem(Wild_Boars_Mane) > 14) goto N_QuestComp; - if (five_qset == 1) goto N_QuestStart; - mes "[Lithin]"; - mes "Well hello."; - mes "Welcome to the Forest Maze."; - close; -N_QuestComp: - mes "[Lithin]"; - mes "Oh thank you so much, but they will be back..."; - next; - mes "Take these 2 Treasure Tokens"; - delitem 1028,15; - set five_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+2; - close; -N_QuestStart: - mes "[Lithin]"; - mes "Well hello."; - mes "Welcome to the Forest Maze, I have a task for you."; - mes " "; - mes "Ever heard of a moster called a Savage? It looks like a boar but it makes very annoying noices."; - mes "What I want you to do is bring me 15 Manes from the savages."; - close; -} -//5-2 goes to 6-2 using callfunc; -moc_ruins,75,167,6 script Lithin#02 4_M_BARBER,{ - if (five_qset == 2 && countitem(Skel_Bone) > 29) goto N_QuestComp; - if (five_qset == 2) goto N_QuestStart; - if (six_qset == 2) goto N_QuestStart2; - mes "[Strange Man]"; - mes "..."; - close; -N_QuestComp: - mes "[Strange Man]"; - mes "Much thanks I have for you."; - next; - mes "Take with you these 2 Treasure Token's."; - delitem 932,30; - set #Treasure_Token,#Treasure_Token+2; - set five_qset,0; - set On_Quest,0; - close; -N_QuestStart: - mes "[Strange Man]"; - mes "Must do for me you shall.Venture through the Pyramid."; - mes "When second floor you have reached,slay skeletons of evil."; - mes "Bring me back there bones you must."; - mes "It is 30 that I desire."; - close; -N_QuestStart2: - callfunc "six_qset2"; -} -//5-3; -geffen,57,130,6 script Blonde Girl 4_F_07,{ - if (five_qset == 3 && countitem(Bunch_Of_Flowers) > 0) goto N_QuestComp; - if (five_qset == 3) goto N_QuestStart; - mes "[Blonde Girl]"; - mes "I wonder what happened to my flowers"; - close; -N_QuestComp: - mes "[Blonde Girl]"; - mes "Oh are these my flower! To bad I don't want them anymore..."; - mes " "; - mes "You can keep them is you want."; - next; - mes "[Blonde Girl]"; - mes "Here take this Treasure Token as a reward."; - set five_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+1; - close; -N_QuestStart: - mes "[Blonde Girl]"; - mes "Hello, did you bring me flowers!?!"; - close; -} -//5-4; -gef_tower,49,27,6 script Wizard#01 4_M_JOB_WIZARD,{ - if (five_qset == 4 && countitem(Transparent_Cloth) > 49) goto N_QuestComp; - if (five_qset == 4) goto N_QuestStart; - mes "[Wizard]"; - mes "Hello, have you seen my Whisper friend?"; - close; -N_QuestComp: - mes "[Wizard]"; - mes "Thank you for helping me, I presume the worse."; - next; - mes "[Wizard]"; - mes "Here take these 4 Treasure Tokens."; - delitem 1059,50; - set five_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+4; - close; -N_QuestStart: - mes "[Wizard]"; - mes "Hello, the reason why I brought you here was because of a long time ago I made a friend, which happened to be a Whipser."; - mes "He told me that he was always bullied by the other ghosts down there and I haven't seen him in a while."; - mes "Thinking of the worse case here, I want vengance!"; - mes " "; - mes "Bring me 50 Fabrics!"; - close; -} -///////Job list 6/////// -//6-1; -moc_prydb1,47,132,6 script Thief 1_M_02,{ - if (six_qset == 1 && countitem(Merchant_Box_3) > 0) goto N_QuestComp; - if (six_qset == 1) goto N_QuestStart; - mes "[Thief]"; - mes "Welcome to the Thiefs Guild."; - close; -N_QuestComp: - mes "[Thief]"; - mes "Thank you for this delivery."; - next; - mes "[Thief]"; - mes "Here take this Treasure Token as a reward."; - delitem 1083,1; - set six_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+1; - close; -N_QuestStart: - mes "[Thief]"; - mes "Where's my delivery?"; - close; -} -//6-2 -function script six_qset2 { - if (six_qset == 2 && countitem(Rotten_Bandage) > 29) goto N_QuestComp2; - mes "[Strange Man]"; - mes "Another quest for you I have."; - mes "Futher into the pyramid you must go."; - mes "Fighting Mummys is future for you."; - mes " "; - mes "Bring back for me their wrappings you must."; - mes "It is 30 Rotten bandages I desire."; - close; -N_QuestComp2: - mes "[Strange Man]"; - mes "Much thanks for you that I have."; - next; - mes "[Strange Man]"; - mes "Take with you these 3 tokens."; - delitem 930,30; - set #Treasure_Token,#Treasure_Token+3; - set On_Quest,0; - set six_qset,0; - close; -} -//6-3; -xmas,144,136,6 script Chirach 1_M_02,{ - if (six_qset == 3 && countitem(Merchant_Box_3) > 0) goto N_QuestComp; - if (six_qset == 3) goto N_QuestStart; - mes "[Chirach]"; - mes "Welcome."; - close; -N_QuestComp: - mes "[Chirach]"; - mes "Thank you for this delivery."; - next; - mes "[Chirach]"; - mes "Here take this Treasure Token as a reward."; - delitem 1083,1; - set six_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+1; - close; -N_QuestStart: - mes "[Chirach]"; - mes "Where's my delivery?"; - close; -} -//6-4; -gef_tower,52,87,6 script Wizard#02 4_M_JOB_WIZARD,{ - if (six_qset == 4 && countitem(Horseshoe) > 19) goto N_QuestComp; - if (six_qset == 4) goto N_QuestStart; - mes "[Zuuzuu]"; - mes "Hello, welcome to geffen tower."; - close; -N_QuestComp: - mes "[Wizard]"; - mes "Thank you for helping me."; - next; - mes "Here take these 4 Treasure Tokens."; - delitem 944,20; - set six_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+4; - next; - mes "[Zuuzuu]"; - mes "Oh dear god!!!"; - mes "One of those evil mosters has followed you up here, Kill it, Kill it!!!"; - next; - monster "gef_tower",42,89,"Evil Nightmare",1061,1; - close; -N_QuestStart: - mes "[Zuuzuu]"; - mes "Hello, the reason I sent for a young adventurer was because of the problems we are having under the tower."; - mes "There seem to be more ghosts day after day down there. What I need you to do is go down there and find these mosters we call Nightmares."; - mes " "; - mes "You must slay them and bring me 20 of there horse shoes."; - close; -} -///////Job list 7/////// -//7-1 goes to 8-1 using callfunc; -prontera,123,208,6 script Little Girl#thq 4_F_KID3,{ - if (seven_qset == 1 && countitem(Apple_Juice) > 4) goto N_QuestComp; - if (seven_qset == 1) goto N_QuestStart; - if (eight_qset == 1) goto N_QuestStart2; - mes "[Girl]"; - mes "Hello mister "+strcharinfo(PC_NAME)+"."; - close; -N_QuestComp: - mes "[Girl]"; - mes "Thank you so much!"; - next; - mes "[Girl]"; - mes "Have these 1 Treasure Tokens."; - delitem 531,5; - set seven_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+1; - close; -N_QuestStart: - mes "[Girl]"; - mes "Hi mister person. Can you get me some apple juice?"; - mes "I want 5 of them."; - close; -N_QuestStart2: - callfunc "eight_qset1"; -} -//7-2; -alberta,101,84,6 script Charles 1_M_02,{ - if (seven_qset == 2 && countitem(Merchant_Box_2) > 0) goto N_QuestComp; - if (seven_qset == 2) goto N_QuestStart; - mes "[Charles]"; - mes "Hello "+strcharinfo(PC_NAME)+" welcome to Alberta."; - close; -N_QuestComp: - mes "[Charles]"; - mes "Thank you for this delivery."; - next; - mes "[Charles]"; - mes "Here take this Treasure Token as a reward."; - delitem 1082,1; - set seven_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+1; - close; -N_QuestStart: - mes "[Charles]"; - mes "So where is my package?"; - close; -} -//7-3 -function script seven_qset-3 { - if (seven_qset == 3 && countitem(Gold) > 0) goto N_QuestComp2; - mes "[Sewer Managment]"; - mes "Well there have been reports of a Golden Thief Bug running around the bottem on the Culvert"; - mes " "; - mes "Bring me 1 Gold Bar from him."; - close; -N_QuestComp2: - mes "[Sewer Managment]"; - mes "Thank you for helping me."; - next; - mes "[Sewer Managment]"; - mes "Here take these 4 Treasure Tokens."; - delitem 969,1; - set seven_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+4; - close; -} -//7-4; -alb2trea,94,102,6 script Scarlet 4_F_JOB_ASSASSIN,{ - if (seven_qset == 4 && countitem(Saber_) > 0) goto N_QuestComp; - if (seven_qset == 4) goto N_QuestStart; - mes "[Scarlet]"; - mes "Sorry, busy."; - close; -N_QuestComp: - mes "[Scarlet]"; - mes "Thank you for helping me, I presume the worse."; - next; - mes "[Scarlet]"; - mes "Here take these 4 Treasure Tokens."; - delitem 1127,1; - set seven_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+4; - close; -N_QuestStart: - mes "[Scarlet]"; - mes "Good your here. Ok there are reports of an old captain named Drake abored this ship. Kill Him!"; - mes " "; - mes "Bring me his Saber as proof!"; - close; -} -///////Job list 8/////// -//8-1 -function script eight_qset1 { - if (eight_qset == 1 && countitem(Banana_Juice) > 4) goto N_QuestComp2; - mes "[Girl]"; - mes "Hi mister person. Can you get me some Banana juice?"; - mes "I want 5 of them."; - close; -N_QuestComp2: - mes "[Girl]"; - mes "Thank you so much!"; - next; - mes "[Girl]"; - mes "Have these 1 Treasure Tokens."; - delitem 532,5; - set eight_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+1; - close; -} -//8-2; -morocc,165,55,6 script Klye 1_M_02,{ - if (eight_qset == 2 && countitem(Merchant_Box_1) > 0) goto N_QuestComp; - if (eight_qset == 2) goto N_QuestStart; - mes "[Klye]"; - mes "Hello "+strcharinfo(PC_NAME)+"."; - close; -N_QuestComp: - mes "[Klye]"; - mes "Thank you for this delivery."; - next; - mes "[Klye]"; - mes "Here take this Treasure Token as a reward."; - delitem 1081,1; - set eight_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+1; - close; -N_QuestStart: - mes "[Kyle]"; - mes "So where's my Delivery"; - close; - -} -//8-3; -prt_maze02,103,86,6 script Zack 4_M_CRU,{ - if (eight_qset == 3 && countitem(Evil_Horn) > 0) goto N_QuestComp; - if (eight_qset == 3) goto N_QuestStart; - mes "[Zack]"; - mes "Hello, have you seen my Whisper friend?"; - close; -N_QuestComp: - mes "[Zack]"; - mes "Thank you for helping me, I presume the worse."; - next; - mes "[Zack]"; - mes "Here take these 5 Treasure Tokens."; - delitem 923,1; - set eight_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+5; - close; -N_QuestStart: - mes "[Zack]"; - mes "Hello,the reason why I brought you here was because of a very strange monster known as Baphomet."; - mes "People say that Baphomet guilds the gate to the under-world but I don't belive them, Kill Baphomet!"; - mes " "; - mes "Bring me his Evil Horn!"; - close; -} -//8-4; -payon,136,129,6 script Flower 4_F_KID2,{ - if (eight_qset == 4 && countitem(Glass_Bead) > 9) goto N_QuestComp; - if (eight_qset == 4) goto N_QuestStart; - mes "[Flower]"; - mes "Sorry I'm waiting for someone. You will have to come back later."; - close; -N_QuestComp: - mes "[Flower]"; - mes "Thank you for helping me, I presume the worse."; - next; - mes "[Flower]"; - mes "Here take these 2 Treasure Tokens."; - delitem 746,10; - set eight_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+2; - close; -N_QuestStart: - mes "[Flower]"; - mes "Help, help I have lost my Beads!! My brother Bush is going to kill me please help"; - mes " "; - mes "Bring me 10 Glass Beads!"; - close; -} -///////Job list 9/////// -//9-1; -geffen_in,168,124,6 script Mage 1_M_02,{ - if (nine_qset == 1 && countitem(Merchant_Box_2) > 0) goto N_QuestComp; - if (nine_qset == 1) goto N_QuestStart; - mes "[Mage]"; - mes "Hello "+strcharinfo(PC_NAME)+" welcome to the Mage Guild."; - close; -N_QuestComp: - mes "[Mage]"; - mes "Thank you for this delivery. Sorry about the smell, Its a box of Toad Tounges"; - next; - mes "[Mage]"; - mes "Here take this Treasure Token as a reward."; - delitem 1082,1; - set nine_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+1; - close; -N_QuestStart: - mes "[Mage]"; - mes "Hello "+strcharinfo(PC_NAME)+", Where is my box of Toad Tounges?."; - close; -} -//9-2; -pay_arche,98,74,6 script School Girl 4_F_KID2,{ - if (nine_qset == 2 && countitem(Long_Hair) > 19) goto N_QuestComp; - if (nine_qset == 2) goto N_QuestStart; - mes "[School Girl]"; - mes "Sorry I'm waiting for someone, you will have to come back later"; - close; -N_QuestComp: - mes "[School Girl]"; - mes "Thank you for helping me."; - next; - mes "[School Girl]"; - mes "Here take these 4 Treasure Tokens."; - delitem 1020,20; - set nine_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+4; - close; -N_QuestStart: - mes "[School Girl]"; - mes "Help, Well what we know about Payon is that a while ago there was a freak fire that burnt down the old school."; - next; - mes "[School Girl]"; - mes "The strange thing about what happened was that the children inside did not seem to die from the flames. They have taken over the entire 3rd floor of Payon Cave."; - mes " "; - mes "Bring me 20 Black Hair!"; - close; -} -//9-3 -payon_in02,19,33,6 script Jack 2_M_ALCHE,{ - if (nine_qset == 3 && countitem(Fox_Tail) > 0) goto N_QuestComp; - if (nine_qset == 3) goto N_QuestStart; - if (nine_qset == 4) goto N_QuestStart2; - mes "[Jack]"; - mes "Sorry I'm waiting for someone, you will have to come back later"; - close; -N_QuestComp: - mes "[Jack]"; - mes "Thank you for helping me."; - next; - mes "[Jack]"; - mes "Here take these 4 Treasure Tokens."; - delitem 1022,1; - set nine_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+4; - close; -N_QuestStart: - mes "[Jack]"; - mes "Well I don't know much about this, it has to do with the deepest reagions of Payon Cave. We don't know much because no one ever seems to make it back alive. We suspect a monster we call the Moonlight Flower"; - mes " "; - mes "Bring me back 1 Nine Tales!"; - close; -N_QuestStart2: -//9-4 - if (nine_qset == 4 && countitem(Danggie) > 39) goto N_QuestComp2; - mes "[Jack]"; - mes "Hello, we need you to investigate some crap in the 3rd level of payon."; - mes " "; - mes "Bring me back 40 Daenggie's."; - close; -N_QuestComp2: - mes "[Jack]"; - mes "Thank you for helping me."; - next; - mes "[Jack]"; - mes "Here take these 3 Treasure Tokens."; - delitem 901,40; - set nine_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+3; - close; -} -///////Job list 10/////// -//10-1 -morocc,193,51,6 script Kreg 1_M_02,{ - if (ten_qset == 1 && countitem(Merchant_Box_2) > 0) goto N_QuestComp; - if (ten_qset == 1) goto N_QuestStart; - mes "[Kreg]"; - mes "Hello "+strcharinfo(PC_NAME)+" welcome to Morroc."; - close; -N_QuestComp: - mes "[Kreg]"; - mes "Thank you for this delivery."; - next; - mes "[Kreg]"; - mes "Here take this Treasure Token as a reward."; - delitem 1082,1; - set ten_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+1; - close; -N_QuestStart: - mes "[Kreg]"; - mes "So where's my Delivery"; - close; -} -//10-2; -pay_fild10,145,252,6 script Man#02 2_M_DYEINGER,{ - if (ten_qset == 2 && countitem(Tigers_Skin) > 0) goto N_QuestComp; - if (ten_qset == 2) goto N_QuestStart; - mes "[Man]"; - mes "Sorry I'm waiting for someone, you will have to come back later"; - close; -N_QuestComp: - mes "[Man]"; - mes "Thank you for helping me."; - next; - mes "[Man]"; - mes "Here take these 4 Treasure Tokens."; - delitem 1029,1; - set ten_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+4; - close; -N_QuestStart: - mes "[Man]"; - mes "Tony the Tiger is on Crack! He must be stoped, KILL HIM!"; - mes " "; - mes "Bring me back 1 Tiger's Skin!"; - close; -} -//10-3; -cmd_fild08,328,349,4 script Caral 2_M_SWORDMASTER,{ - if (ten_qset == 3 && countitem(Thin_N_Long_Tongue) > 0) goto N_QuestComp; - if (ten_qset == 3) goto N_QuestStart; - mes "[Caral]"; - mes "Sorry I'm waiting for someone, you will have to come back later."; - close; -N_QuestComp: - mes "[Caral]"; - mes "Thank you for helping me."; - next; - mes "[Caral]"; - mes "Here take these 4 Treasure Tokens."; - delitem 1015,1; - set ten_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+4; - close; -N_QuestStart: - mes "[Caral]"; - mes "Phreeoni the Pink Fluff is terrorizing little novices! He must be stoped, KILL HIM!"; - mes " "; - mes "Bring me back 1 Tounge!"; - close; -} -//10-4 -moc_fild15,250,251,6 script Jeni 4_F_JOB_HUNTER,{ - if (ten_qset == 4 && countitem(Round_Shell) > 0) goto N_QuestComp; - if (ten_qset == 4) goto N_QuestStart; - mes "[Jeni]"; - mes "Sorry I'm waiting for someone, You will have to come back later"; - close; -N_QuestComp: - mes "[Jeni]"; - mes "Thank you for helping me."; - next; - mes "[Jeni]"; - mes "Here take these 3 Treasure Tokens."; - delitem 1096,1; - set ten_qset,0; - set On_Quest,0; - set #Treasure_Token,#Treasure_Token+3; - close; -N_QuestStart: - mes "[Jeni]"; - mes "This half naked freak need an army to take down, now its your job,good luck."; - mes " "; - mes "Bring me back 1 Round Shell!"; - close; -} diff --git a/npc/custom/quests/thq/THQS_TTShop.txt b/npc/custom/quests/thq/THQS_TTShop.txt deleted file mode 100644 index 96e7346d3..000000000 --- a/npc/custom/quests/thq/THQS_TTShop.txt +++ /dev/null @@ -1,204 +0,0 @@ -//===== Hercules Script ====================================== -//= Treasure Hunter Quests -//===== By: ================================================== -//= Fredzilla -//===== Current Version: ===================================== -//= 1.2a -//===== Description: ========================================= -//= Start for Treasure hunter quests -//===== Additional Comments: ================================= -//= Event_THQS - Used to check if you have already registered -//= #Treasure_Token - used to keep track of tokens -//= 1.0 - Straight conversion of Aegis NPC file -//= 1.1 - balanced some prices, fixed 1 missing label -//= removed Executioner&Mysteltain swords [Lupus] -//= 1.2 - Optmized and fixed small error [Panikon] -//= 1.2a - Fixed zeny formula [Panikon] -//============================================================ - -prt_in,159,172,0 warp thqwrp 3,3,yuno_in01,123,155 - -// Main configuration object -- script THQS#Configuration FAKE_NPC,{ -OnInit: - // Axes - setarray $THQS_menu_weapons_1[0], Sabbath, Slaughter, Tomahawk, Great_Axe, Guillotine; - setarray $THQS_menu_price_1[0], 160, 160, 180, 200, 200; - // One Handed Swords - setarray $THQS_menu_weapons_2[0], Edge, Solar_Sword, Scissores_Sword, Nagan, Immaterial_Sword, Excalibur, Byeorrun_Gum, Tale_Fing_; - setarray $THQS_menu_price_2[0], 130, 150, 170, 180, 200, 200, 240, 320; - // Two Handed Swords - setarray $THQS_menu_weapons_3[0],Dragon_Slayer, Schweizersabel, Katzbalger, Muramasa, Masamune, Balmung; - setarray $THQS_menu_price_3[0], 140,200,300,300,400,2000; - // Books - setarray $THQS_menu_weapons_4[0],Book_Of_Blazing_Sun, Book_Of_Billows, Book_Of_Gust_Of_Wind, Book_Of_Mother_Earth, Book_Of_The_Apocalypse, Bible, Tablet; - setarray $THQS_menu_price_4[0], 80, 80, 80, 80, 80, 90, 120; - // Bows - setarray $THQS_menu_weapons_5[0], Bow_Of_Rudra, Bow_Of_Roguemaster; - setarray $THQS_menu_price_5[0], 150, 150; - // Katars - setarray $THQS_menu_weapons_6[0], Katar_Of_Cold_Icicle,Katar_Of_Thornbush,Katar_Of_Raging_Blaze,Katar_Of_Piercing_Wind,Ghoul_Leg,Infiltrator; - setarray $THQS_menu_price_6[0],70,70,70,70,125,150; - // Knuckles - setarray $THQS_menu_weapons_7[0],Kaiser_Knuckle,Berserk; - setarray $THQS_menu_price_7[0],75,75; - // Maces - setarray $THQS_menu_weapons_8[0],Spike,Slash,Grand_Cross,Quadrille,Mjolnir; - setarray $THQS_menu_price_8[0],65,90,100,110,1000; - // Whips - setarray $THQS_menu_weapons_9[0],Rapture_Rose,Chemeti; - setarray $THQS_menu_price_9[0],50,65; - // Wands - setarray $THQS_menu_weapons_10[0],Mighty_Staff,Wizardy_Staff,Bone_Wand,Staff_Of_Soul; - setarray $THQS_menu_price_10[0],90,150,110,120; - // Cards - setarray $THQS_menu_cards[0],Poring_Card, Pasana_Card, Dokebi_Card, Sword_Fish_Card, Sand_Man_Card, Drainliar_Card, - Kaho_Card,Mandragora_Card,Vadon_Card,Mummy_Card,Zenorc_Card,Condor_Card, Zombie_Card; - setarray $THQS_menu_price[0],2,420,420,420,420,360,360,360,360,540,240,240,210; - end; -} - -// Trades tokens -// getarg(0) - number of tokens to be traded -function script thqs_trade_token { - @type = getarg(0); - if( @type == 4 ) - close; - - // 10^0, 10^1, 10^2 - @type -= 1; - @price = (10 ** @type); - - // 10^3, 10^4, 10^5 - @type += 3; // So we can use pow later to determine the qt of Zeny - @prize = (10 ** @type); - - if( #Treasure_Token < @price ) { - mes "You don't have enough tokens!"; - close; - } - - if( Zeny == MAX_ZENY ) { - mes "You can't add more zeny to your character"; - close; - } - - Zeny += @prize; - #Treasure_Token -= @price; - close; -} - -// Creates a buying menu -// getarg(0) - .@mw$ -> ID -// getarg(1) - .@mp$ -> PRICE -function script thqs_menu_buy { - if( getargcount() != 2 ) { - debugmes "thqs_menu_buy: Wrong number of arguments!!"; - close; - } - - .@mw$ = getarg(0); - .@mp$ = getarg(1); - - if( getarraysize( getd(.@mw$) ) != getarraysize( getd(.@mp$) ) ) { - debugmes "thqs_menu_buy: Missing entries in data!"; - close; - } - - // Dynamic menu - // Uses a dynamic string and then applies it to a *select - .@select_menu$ = ""; - for( .@i = 0; .@i < getarraysize( getd(.@mw$) ); .@i++ ) { - .@price = getd(.@mp$+"["+.@i+"]"); - - if( .@select_menu$ != "") - .@select_menu$ = .@select_menu$+":"+getitemname( getd(.@mw$+"["+.@i+"]") )+" - "+.@price+"T"; - else - .@select_menu$ = getitemname( getd(.@mw$+"["+.@i+"]") )+" - "+.@price+"T"; - } - .@select_menu$ = .@select_menu$ + ":Nevermind"; - select(.@select_menu$); - - if( @menu == (.@i+1) ) - close; - - @index = @menu - 1; // Arrays are 0 indexed while our menu is not - @item_id = getd(.@mw$+"["+@index+"]"); - @price = getd(.@mp$+"["+@index+"]"); - if( #Treasure_Token < @price ) { - mes "You don't have enough tokens!"; - close; - } - #Treasure_Token -= @price; - logmes "Treasure Token: Bought a "+getitemname(@item_id); - getitem @item_id,1; - close; -} - -// Creates the first weapon menu -// getarg(0) - @menu -function script ths_menu_weapons { - @first_option = getarg(0); - if( @first_option == 11 ) - close; - mes "[Ash]"; - mes "This is what we have to offer."+@first_option; - next; - // Array names so they can be used by thqs_menu_buy - .@mw$ = "$THQS_menu_weapons_"+@first_option; - .@mp$ = "$THQS_menu_price_"+@first_option; - - thqs_menu_buy(.@mw$,.@mp$); -} - -// Main script -prt_in,164,174,1 script Treasure Hunter's Shop 1_M_YOUNGKNIGHT,{ - mes "[Ash]"; - mes "Ahh, "+strcharinfo(PC_NAME)+"! Welcome to the Offical Treasure Hunter's Guild Shop."; - mes "You currently have ^FF0000"+#Treasure_Token+"^000000 treasure tokens!!!"; - next; - switch( select("How does this place work?","What do you have in stock?","Nevermind") ) { - case 1: - mes "[Ash]"; - mes "Well you see here you can exchange your treasure hunter tokens for zeny or rare weapons forged by our blacksmiths."; - mes " "; - mes "Everything has its own price value and the only way you can get the tokens is by completing quests assigned to you,the system normally works like this."; - mes " "; - mes "The harder the mission the more Tokens you will earn. All red quests are worth 4-8 Tokens, and the rest are worth 1-5."; - mes " "; - mes "Hope that solves your problem and questions."; - close; - case 2: - break; - case 3: - close; - } - - mes "[Ash]"; - mes "Ok here is our Big list of goods."; - mes " "; - mes "(Note T stands for a Treasure Token.)"; - next; - mes "[Ash]"; - mes "This is what we have to offer."; - next; - switch( select("Trade for zeny", "Trade for Weapons", "Trade for Cards", "Nevermind") ) { - case 1: - select("1000z - 1T","10000z - 10T","100000z - 100T","Nevermind"); - thqs_trade_token(@menu); - case 2: - mes "[Ash]"; - mes "This is what we have to offer."; - next; - select("Axe's","1 Handed Swords","2 Handed Swords","Book's","Bow's","Katar's","Knuckle's","Mace's","Whips","Wands","Nevermind"); - ths_menu_weapons(@menu); - case 3: - mes "[Ash]"; - mes "This is what we have to offer."; - next; - thqs_menu_buy("$THQS_menu_cards","$THQS_menu_price"); - case 4: - close; - } - end; -} diff --git a/npc/custom/quests/umbalian_language.txt b/npc/custom/quests/umbalian_language.txt deleted file mode 100644 index ba3517879..000000000 --- a/npc/custom/quests/umbalian_language.txt +++ /dev/null @@ -1,195 +0,0 @@ -//===== Hercules Script ====================================== -//= Custom Umbalian Language Quest -//===== By: ================================================== -//= sabernet09 -//===== Current Version: ===================================== -//= 1.1 -//===== Description: ========================================= -//= 1.1 Removed it from offical Umbala Quests [Lupus] -//============================================================ - -prontera,145,290,5 script Mason 2_M_SAGE_B,{ - mes "[Mason]"; - if(umb_lang==0) goto L_NOT_GOT_QUEST; - if(umb_lang==2 || umb_mason==1) goto L_AGAIN; - - mes "Hey there, I came here to Prontera in search of an old lady who can remove cards from slots. Do you know where I can find her?"; - if (select("Yes", "No") != 1) { - mes "Oh.. Ok.. Thanks anyways."; - close; - } - mes "Oooo, could you please tell me where she's at? I'd be really appreciative."; - next; - switch (select("Swordsman Association", "Sanctuary", "Prontera Chivalry", "Trading Post", "Kit Shop", "Inn", "Armory", "Library", "Job Agency", "Prontera Castle", "City Hall")) { - case 1: - mes "[Mason]"; - mes "Hmm... I dunno why she would be there... guess I'll take a look."; - close; - case 2: - mes "[Mason]"; - mes "Wow I never knew she was a religious person... I'll see to it thanks."; - close; - case 3: - mes "[Mason]"; - mes "Hmm.... are you sure about that?"; - close; - case 4: - mes "[Mason]"; - mes "Why would she need to go there? I think you might be mistaken."; - close; - case 5: - mes "[Mason]"; - mes "The only thing she'd need at a Kit shop is medicine for her rheumatism. She's probably long gone from there by now."; - close; - case 6: - mes "[Mason]"; - mes "I don't think she needs to be there, she LIVES here in Prontera."; - close; - case 7: - mes "[Mason]"; - mes "Ah, I heard that her class was somewhere around there... thanks a lot! Here's a lil something for your help."; - getitem(Rent_Spell_Book, 1);//Items: Torn Spell Book, - umb_mason = 1; - close; - case 8: - mes "[Mason]"; - mes "Ah I see, if she's studying then I don't want to bother her. Thanks anyways."; - close; - case 9: - mes "[Mason]"; - mes "Job Agency? I don't think so. Don't lead me all around Prontera please! She's already a teacher here."; - close; - case 10: - mes "[Mason]"; - mes "The castle eh, I don't want to step in there... just doesn't feel like my style. I don't like that noble feeling of importance type of thing."; - close; - case 11: - mes "[Mason]"; - mes "O wow, did she become an important part of Prontera? I'd think she's too busy for me to visit. I'll try again later."; - close; - } - -L_AGAIN: - emotion e_thx; - mes "Yay, I found her! Thank you very much for you help!"; - close; - -L_NOT_GOT_QUEST: - mes "Hi! I came here to Prontera in search of an old lady... But..."; - close; -} - -aldebaran,153,212,1 script Mojo 2_M_ALCHE,{ - mes "[Mojo]"; - if(umb_lang!=1) goto L_NOT_GOT_QUEST; - mes "Oh no! I lost my teacher's ^FF0000old magic book^000000!"; - mes "What am I going to do... those dumb Bathory..."; - if(umb_lang==1) set umb_mojo,1; - close; -L_NOT_GOT_QUEST: - emotion e_what; - mes "I lost my teacher's book! What am I going to do..."; - close; -} - -amatsu,267,189,4 script Marie 4_F_ALCHE,{ - mes "[Marie]"; - if(umb_lang==0) goto L_NOT_GOT_QUEST; - if(umb_lang==2 || umb_marie==1) goto L_AGAIN; - if(countitem(Poring_Egg)>0 && countitem(Pet_Incubator)>0) goto L_DONE;//Items: Poring Egg, Pet Incubator, - mes "Hello, is there something you need?"; - next; - if (select("No nothing at all.", "Your teacher sent me.") != 2 ) { - mes "[Marie]"; - mes "Hrrmm okay? Cya then.."; - close; - } - mes "[Marie]"; - mes "What does he want from me?"; - emotion e_what; - next; - mes "[Marie]"; - mes "Oh wait, I see... he wants his reference scroll back am I right? Well, I'm kinda still using it buuut... I'll give it back if you can gimme a poring egg and an incubator. Those things are so cute!"; - close; - -L_NOT_GOT_QUEST: - emotion e_what; - mes "Hi! What do you want from me?"; - close; - -L_DONE: - mes "Heyyy there, you have a poring egg and the pet incubator to go with it! Are those for me?"; - if (select("Yep!", "Sorry, no.") != 1) { - mes "Oh.. pooo... sigh..."; - close; - } - mes "[Marie]"; - if (countitem(Poring_Egg) == 0 && countitem(Pet_Incubator) == 0) { - mes "Oh.. pooo... sigh..."; - close; - } - mes "Yatta! Here's a lil something in return."; - delitem Poring_Egg,1;//Items: Poring Egg, - delitem Pet_Incubator,1;//Items: Pet Incubator, - getitem Rent_Scroll,1;//Items: Torn Scroll, - set umb_marie,1; //got Torn Scroll - close; - -L_AGAIN: - emotion e_thx; - mes "Yay! I love Porings!"; - close; -} - -yuno,157,366,2 script Wise Man Fabius 2_M_SAGE_OLD,{ - mes "[Fabius]"; - if(event_umbala >= 3) set umb_lang,2; //You already learnt Umbalian language from Umbalian Chief. So this Quest is disabled - if(umb_lang<2) goto L_Quest; - mes "You speak Umbalian fluently! So you will never forget the language of Umbalians!"; - close; -L_Quest: - if((countitem(Old_Magic_Book) < 1) || (countitem(Rent_Scroll) < 1) || (countitem(Rent_Spell_Book) < 1)) goto L_DONE;//Items: Old Magic Book, Torn Scroll, Torn Spell Book, - delitem Old_Magic_Book,1; //Items: Old Magic Book, - delitem Rent_Scroll,1; //Items: Torn Scroll, - delitem Rent_Spell_Book,1;//Items: Torn Spell Book, - emotion e_thx; - mes "Ah, you've done well in retrieving my references. These artifacts holds information about ruins around the world, from the burning hell of the Magma Dungeon, to the strange eerie Hidden Forest of Yggsadril."; - next; - mes "[Fabius]"; - mes "But enough talk, you're just eager to get your reward aren't you? Well it may not sound much, but my reward for you is knowledge..."; - next; - mes "[Fabius]"; - mes "Actually it is knowledge of the Umbalian people. They are connected to this world of Midgard in some special way, we just can't confirm it yet. There is a theory that they may be like the elves and protect the ancient tree of Yggsadril."; - next; - mes "[Fabius]"; - mes "And I, a great wise man of Yuno, will teach you their language!"; - next; - mes "^0000FF Learned the language of Umbalians! ^000000"; - set umb_lang,2; - //clear subquests - set umb_marie,0; - set umb_mason,0; - set umb_mojo,0; - //make you understand Umbalian people - //it's an alternative way to learn Umbalian Language - if(event_umbala < 3) set event_umbala,3; - close; -L_DONE: - set umb_lang,1; //got Quest - mes "Argh! My three students ran off with my references! Hey you! Can you get them back for me? I'll gladly reward you."; - next; - mes "[Fabius]"; - mes "From what I know, they're in different seperate towns making something out of themselves."; - if(umb_marie==0 && umb_mason==0 && umb_mojo==0) goto L_NOT_MET; - if(umb_marie==1) mes "Oh... You found Marie in Amatsu."; - if(umb_mojo==1) mes "You saw Mojo in Aldebaran?"; - if(umb_mason==1) mes "So... Mason's in Prontera now... Well..."; - if(umb_marie==0) mes "I wonder where is our sea girl Marie?"; - if(umb_mojo==0) mes "Mojo should be somewhere near water..."; - if(umb_mason==0) mes "Where'd Mason go then..."; - mes "Oh yeah, tell them I sent you"; - close; -L_NOT_MET: - mes "Oh yeah, tell them I sent you, their names are Marie, Mason and Mojo."; - close; -} diff --git a/npc/custom/quests/valhallen.txt b/npc/custom/quests/valhallen.txt deleted file mode 100644 index 1a2b45968..000000000 --- a/npc/custom/quests/valhallen.txt +++ /dev/null @@ -1,66 +0,0 @@ -//===== Hercules Script ====================================== -//= Valhallen Items Quests NPC -//===== By: ================================================== -//= Avaji -//===== Current Version: ===================================== -//= 1.1 -//===== Description: ========================================= -//= All-in-one: Mjolnir,Sleipnir,Brisingamen,Gleipnir,Megingjard -//= Custom quest, ingredients based on official RO FAQ -//===== Additional Comments: ================================= -//= 1.1 Optimized. [Euphy] -//============================================================ - -prontera,147,171,5 script Lenneth 4_F_VALKYRIE,{ - mes "[Lenneth]"; - mes "I come from Valhalla to aid you."; - mes "I can transmute for you many of the Valhallen items,"; - mes "although they require many rare elements to make."; - next; - switch(select("Mjolnir", "Sleipnir", "Brisingamen", "Gleipnir", "Megingjard")) { - case 1: - mes "[Lenneth]"; - mes "^3355FFMjolnir^000000 is the mighty Hammer of Thor."; - setarray .@items[0],1530,1531,2,984,20,985,5,969,40,7074,2,7075,4,7078,5,7087,5,7089,5; - break; - case 2: - mes "[Lenneth]"; - mes "^3355FFSleipnir^000000 are boots made after Odin's War Horse."; - setarray .@items[0],2410,2406,2,984,1,969,20,985,10,7076,3,7079,5,7083,3,7086,3; - break; - case 3: - mes "[Lenneth]"; - mes "^3355FFBrisingammen^000000 is the magical Necklace of Freyja, goddess of Beauty."; - setarray .@items[0],2630,2603,1,726,2,722,3,727,10,723,5,969,20,7073,4,7077,4,7088,3,7090,3,7092,3; - break; - case 4: - mes "[Lenneth]"; - mes "The ^3355FFGleipnir^000000 is a light yet strong rope required to make ^3355FFMegingjard^000000"; - setarray .@items[0],7058,7080,4,7081,5,7082,4,7084,3,7085,3; - break; - case 5: - mes "[Lenneth]"; - mes "The ^3355FFMegingjard^000000 is the powerful Belt of Thor."; - setarray .@items[0],2629,7058,1,2627,1,969,10,726,10,984,5; - break; } - mes "^FF0000The items I need are as follows:^000000"; - for(set .@i,1; .@i<getarraysize(.@items[0]); set .@i,.@i+2) { - mes " ~ "+.@items[.@i+1]+"x ^3355FF"+getitemname(.@items[.@i])+"^000000"; - if (countitem(.@items[.@i]) < .@items[.@i+1]) set .@nr,1; } - if (.@nr) close; - next; - mes "[Lenneth]"; - mes "Do you desire ^3355FF"+getitemname(.@items[0])+"^000000?"; - next; - if(select("Yes", "No")==2) { - mes "[Lenneth]"; - mes "Please return if you change your mind."; - close; } - mes "[Lenneth]"; - mes "Here is your ^3355FF"+getitemname(.@items[0])+"^000000."; - mes "May it serve you well."; - for(set .@i,1; .@i<getarraysize(.@items); set .@i,.@i+2) - delitem .@items[.@i], .@items[.@i+1]; - getitem .@items[0],1; - close; -} diff --git a/npc/custom/resetnpc.txt b/npc/custom/resetnpc.txt deleted file mode 100644 index 2f34435a0..000000000 --- a/npc/custom/resetnpc.txt +++ /dev/null @@ -1,66 +0,0 @@ -//===== Hercules Script ====================================== -//= Reset NPC -//===== By: ================================================== -//= Hercules Dev Team -//===== Current Version: ===================================== -//= 1.3 -//===== Description: ========================================= -//= Resets skills, stats, or both. -//===== Additional Comments: ================================= -//= 1.0 First Version -//= 1.1 Optimized for the greater good. [Kisuka] -//= 1.2 Cleaning [Euphy] -//= 1.3 All statuses removed upon skill reset. [Euphy] -//============================================================ - -prontera,150,193,4 script Reset Girl 4_F_TELEPORTER,{ - - set .@ResetStat,5000; // Zeny for stat reset - set .@ResetSkill,5000; // Zeny for skill reset - set .@ResetBoth,9000; // Zeny for resetting both together - - mes "[Reset Girl]"; - mes "I am the Reset Girl."; - mes "Reset Stats: "+ .@ResetStat +"z"; - mes "Reset Skills: "+ .@ResetSkill +"z"; - mes "Reset Both: "+ .@ResetBoth +"z"; - mes "Please select the service you want:"; - next; - switch(select("^FF3355Reset Skills", "Reset Stats", "Reset Both^000000", "Cancel")) { - case 1: - mes "[Reset Girl]"; - if (Zeny < .@ResetSkill) { - mes "Sorry, you don't have enough Zeny."; - close; - } - Zeny -= .@ResetSkill; - sc_end SC_ALL; - resetskill; - mes "There you go!"; - close; - case 2: - mes "[Reset Girl]"; - if (Zeny < .@ResetStat) { - mes "Sorry, you don't have enough Zeny."; - close; - } - Zeny -= .@ResetStat; - resetstatus; - mes "There you go!"; - close; - case 3: - mes "[Reset Girl]"; - if (Zeny < .@ResetBoth) { - mes "Sorry, you don't have enough Zeny."; - close; - } - Zeny -= .@ResetBoth; - sc_end SC_ALL; - resetskill; - resetstatus; - mes "There you go!"; - close; - case 4: - close; - } -} diff --git a/npc/custom/stylist.txt b/npc/custom/stylist.txt deleted file mode 100644 index 0ee7d8822..000000000 --- a/npc/custom/stylist.txt +++ /dev/null @@ -1,34 +0,0 @@ -//===== Hercules Script ====================================== -//= Stylist -//===== By: ================================================== -//= Euphy -//===== Current Version: ===================================== -//= 1.1 -//===== Description: ========================================= -//= Changes your hair style, hair color, and cloth color. -//===== Additional Comments: ================================= -//= 1.1 Switched to 'getbattleflag', credits to Saithis. [Euphy] -//============================================================ - -prontera,170,180,1 script Stylist#custom_stylist 2_M_DYEINGER,{ - - setarray .@styles[1],getbattleflag("max_cloth_color"),getbattleflag("max_hair_style"),getbattleflag("max_hair_color"); - setarray .@Look[1],7,1,6; - set .@s, select(" ~ Cloth color", " ~ Hairstyle", " ~ Hair color"); - set .@Revert, getlook(.@Look[.@s]); - set .@style,1; - while(1) { - setlook .@Look[.@s], .@style; - message strcharinfo(PC_NAME),"This is style #"+.@style+"."; - set .@menu$, " ~ Next (^0055FF"+((.@style!=.@styles[.@s])?.@style+1:1)+"^000000): ~ Previous (^0055FF"+((.@style!=1)?.@style-1:.@styles[.@s])+"^000000): ~ Jump to...: ~ Revert to original (^0055FF"+.@Revert+"^000000)"; - switch(select(.@menu$)) { - case 1: set .@style, ((.@style!=.@styles[.@s])?.@style+1:1); break; - case 2: set .@style, ((.@style!=1)?.@style-1:.@styles[.@s]); break; - case 3: message strcharinfo(PC_NAME),"Choose a style between 1 - "+.@styles[.@s]+"."; - input .@style,0,.@styles[.@s]; - if (!.@style) set .@style, rand(1,.@styles[.@s]); - break; - case 4: set .@style, .@Revert; setlook .@Look[.@s], .@Revert; break; - } - } -} diff --git a/npc/custom/warper.txt b/npc/custom/warper.txt deleted file mode 100644 index 70bab9400..000000000 --- a/npc/custom/warper.txt +++ /dev/null @@ -1,518 +0,0 @@ -//===== Hercules Script ====================================== -//= Warper -//===== By: ================================================== -//= Euphy -//===== Current Version: ===================================== -//= 1.4b -//===== Description: ========================================= -//= A complete - but very condensed - warper script. -//= Some coordinates written by Tekno-Kanix and ToastOfDoom. -//===== Additional Comments: ================================= -//= 1.0 Initial script. -//= 1.1 Added missing duplicates and fixed coordinates. -//= 1.2 Added new episodes and simplified functions. -//= 1.3 Added Renewal checks and Instances menu. -//= Aligned coordinates with @go. -//= 1.4 Added new Guild Dungeons. -//= 1.4a Slight edits. -//= 1.4b Added Wolfchev's Laboratory warp. -//============================================================ - -- script Warper FAKE_NPC,{ -function Go; function Disp; function Pick; function Restrict; - -// -------------------------------------------------- -// Main Menu: -// -------------------------------------------------- - -menu "Last Warp ^777777["+lastwarp$+"]^000000",-, - " ~ Towns",Towns, - " ~ Fields",Fields, - " ~ Dungeons",Dungeons, - " ~ Guild Castles",Castles, - " ~ Guild Dungeons",Guild_Dungeons, - " ~ Instances",Instances, - " ~ Special Areas",Special; - - if (lastwarp$ == "") - message strcharinfo(PC_NAME),"You haven't warped anywhere yet."; - else - warp lastwarp$,lastwarpx,lastwarpy; - end; - -// ------------------- Functions ------------------- -// * Go("<map>",<x>,<y>); -// ~ Warps directly to a map. -// -// * Disp("<Menu Option>",<first option>,<last option>); -// * Pick("<map_prefix>"{,<index offset>}); -// ~ Dynamic menu and map selection (auto-numbered). -// -// * Disp("<Option 1>:<Option 2>:<etc.>"); -// * Pick("","<map1>","<map2>","<etc.>"); -// ~ Manual menu and map selection (listed). -// -// * Restrict("<RE | Pre-RE>"{,<menu option numbers>}); -// ~ Only allows map for Renewal or Pre-Renewal modes. -// If menu option numbers are given, only those maps -// will be restricted (i.e. not for "Go"). -// -// Other notes: -// ~ Array @c[] holds all (x,y) coordinates. -// ~ Use @c[2] EXCEPT when maps begin dynamically -// at 0: use @c[0] and Pick() offset 1. -// -------------------------------------------------- - -function Go { - lastwarp$ = getarg(0); - lastwarpx = getarg(1,0); - lastwarpy = getarg(2,0); - warp getarg(0),getarg(1,0),getarg(2,0); - end; -} -function Disp { - if (getargcount() < 3) - @menu$ = getarg(0); - else { - @menu$ = ""; - for (.@i = getarg(1); .@i <= getarg(2); .@i++) - @menu$ = @menu$+getarg(0)+" "+.@i+":"; - } - return; -} -function Pick { - .@warp_block = @warp_block; - @warp_block = 0; - .@select = select(@menu$); - if (getarg(0) == "") { - .@i = .@select; - .@map$ = getarg(.@i); - } else { - .@i = .@select-getarg(1,0); - .@map$ = getarg(0)+((.@i<10)?"0":"")+.@i; - } - if (.@warp_block & (1<<.@select)) { - message strcharinfo(PC_NAME),"This map is not enabled in "+(RENEWAL?"":"Pre-")+"Renewal."; - end; - } - .@x = @c[.@i*2]; - .@y = @c[.@i*2+1]; - deletearray @c[0],getarraysize(@c); - Go(.@map$,.@x,.@y); -} -function Restrict { - if ((getarg(0) == "RE" && !RENEWAL) || (getarg(0) == "Pre-RE" && RENEWAL)) { - if (getarg(1,0)) { - @warp_block = 0; - for (.@i = 1; .@i < getargcount(); .@i++) - @warp_block = @warp_block | (1<<getarg(.@i)); - } else { - message strcharinfo(PC_NAME),"This map is not enabled in "+(RENEWAL?"":"Pre-")+"Renewal."; - end; - } - } - return; -} - -// -------------------------------------------------- - Towns: -// -------------------------------------------------- -menu "Prontera",T1, "Alberta",T2, "Aldebaran",T3, "Amatsu",T4, "Ayothaya",T5, - "Brasilis",T6, "Comodo",T7, "Dewata",T8, "Eclage",T9, "Einbech",T10, - "Einbroch",T11, "El Dicastes",T12, "Geffen",T13, "Gonryun",T14, "Hugel",T15, - "Izlude",T16, "Jawaii",T17, "Lighthalzen",T18, "Louyang",T19, "Lutie",T20, - "Malangdo",T21, "Malaya",T22, "Manuk",T23, "Midgarts Expedition Camp",T24, - "Mora",T25, "Morroc",T26, "Moscovia",T27, "Nameless Island",T28, - "Niflheim",T29, "Payon",T30, "Rachel",T31, "Splendide",T32, "Thor Camp",T33, - "Umbala",T34, "Veins",T35, "Yuno",T36; - -T1: Go("prontera",155,183); -T2: Go("alberta",28,234); -T3: Go("aldebaran",140,131); -T4: Go("amatsu",198,84); -T5: Go("ayothaya",208,166); -T6: Restrict("RE"); - Go("brasilis",196,217); -T7: Go("comodo",209,143); -T8: Restrict("RE"); - Go("dewata",200,180); -T9: Restrict("RE"); - Go("ecl_in01",48,53); -T10: Go("einbech",63,35); -T11: Go("einbroch",64,200); -T12: Restrict("RE"); - Go("dicastes01",198,187); -T13: Go("geffen",119,59); -T14: Go("gonryun",160,120); -T15: Go("hugel",96,145); -T16: Go("izlude",128,(RENEWAL?146:114)); -T17: Go("jawaii",251,132); -T18: Go("lighthalzen",158,92); -T19: Go("louyang",217,100); -T20: Go("xmas",147,134); -T21: Restrict("RE"); - Go("malangdo",140,114); -T22: Restrict("RE"); - Go("malaya",231,200); -T23: Go("manuk",282,138); -T24: Go("mid_camp",210,288); -T25: Restrict("RE"); - Go("mora",55,146); -T26: Go("morocc",156,93); -T27: Go("moscovia",223,184); -T28: Go("nameless_n",256,215); -T29: Go("niflheim",202,174); -T30: Go("payon",179,100); -T31: Go("rachel",130,110); -T32: Go("splendide",201,147); -T33: Go("thor_camp",246,68); -T34: Go("umbala",97,153); -T35: Go("veins",216,123); -T36: Go("yuno",157,51); - -// -------------------------------------------------- - Fields: -// -------------------------------------------------- -menu "Amatsu Fields",F1, "Ayothaya Fields",F2, "Bifrost Fields", F3, - "Brasilis Fields",F4, "Comodo Fields",F5, "Dewata Fields",F6, - "Eclage Fields",F7, "Einbroch Fields",F8, "El Dicastes Fields",F9, - "Geffen Fields",F10, "Gonryun Fields",F11, "Hugel Fields",F12, - "Lighthalzen Fields",F13, "Louyang Field",F14, "Lutie Field",F15, - "Malaya Fields",F16, "Manuk Fields",F17, "Mjolnir Fields",F18, - "Moscovia Fields",F19, "Niflheim Fields",F20, "Payon Forests",F21, - "Prontera Fields",F22, "Rachel Fields",F23, "Sograt Deserts",F24, - "Splendide Fields",F25, "Umbala Fields",F26, "Veins Fields",F27, - "Yuno Fields",F28; - -F1: setarray @c[2],190,197; - Disp("Amatsu Field",1,1); Pick("ama_fild"); -F2: setarray @c[2],173,134,212,150; - Disp("Ayothaya Field",1,2); Pick("ayo_fild"); -F3: Restrict("RE"); - setarray @c[2],193,220,220,187; - Disp("Bifrost Field",1,2); Pick("bif_fild"); -F4: Restrict("RE"); - setarray @c[2],74,32; - Disp("Brasilis Field",1,1); Pick("bra_fild"); -F5: Restrict("Pre-RE",5); - setarray @c[2],180,178,231,160,191,172,228,194,224,203,190,223,234,177,194,175,172,172; - Disp("Comodo Field",1,9); Pick("cmd_fild"); -F6: Restrict("RE"); - setarray @c[2],371,212; - Disp("Dewata Field",1,1); Pick("dew_fild"); -F7: Restrict("RE"); - setarray @c[2],97,314; - Disp("Eclage Field",1,1); Pick("ecl_fild"); -F8: Restrict("Pre-RE",2,10); - setarray @c[2],142,225,182,141,187,228,185,173,216,173,195,148,272,220,173,214,207,174,196,200; - Disp("Einbroch Field",1,10); Pick("ein_fild"); -F9: Restrict("RE"); - setarray @c[2],143,132,143,217; - Disp("El Dicastes Field",1,2); Pick("dic_fild"); -F10: Restrict("Pre-RE",13,15); - setarray @c[0],46,199,213,204,195,212,257,192,188,171,166,263,248,158,195,191,186,183,221,117,178,218,136,328,240,181,235,235,211,185; - Disp("Geffen Field",0,14); Pick("gef_fild",1); -F11: setarray @c[2],220,227; - Disp("Gonryun Field",1,1); Pick("gon_fild"); -F12: Restrict("Pre-RE",3,7); - setarray @c[2],268,101,222,193,232,185,252,189,196,106,216,220,227,197; - Disp("Hugel Field",1,7); Pick("hu_fild"); -F13: setarray @c[2],240,179,185,235,240,226; - Disp("Lighthalzen Field",1,3); Pick("lhz_fild"); -F14: setarray @c[2],229,187; - Disp("Louyang Field",1,1); Pick("lou_fild"); -F15: setarray @c[2],115,145; - Disp("Lutie Field",1,1); Pick("xmas_fild"); -F16: Restrict("RE"); - setarray @c[2],40,272,207,180; - Disp("Malaya Field",1,2); Pick("ma_fild"); -F17: setarray @c[2],35,236,35,262,84,365; - Disp("Manuk Field",1,3); Pick("man_fild"); -F18: setarray @c[2],204,120,175,193,208,213,179,180,181,240,195,270,235,202,188,215,205,144,245,223,180,206,196,208; - Disp("Mjolnir Field",1,12); Pick("mjolnir_"); -F19: setarray @c[2],82,104,131,147; - Disp("Moscovia Field",1,2); Pick("mosk_fild"); -F20: setarray @c[2],215,229,167,234; - Disp("Niflheim Field",1,2); Pick("nif_fild"); -F21: Restrict("Pre-RE",5,11); - setarray @c[2],158,206,151,219,205,148,186,247,134,204,193,235,200,177,137,189,201,224,160,205,194,150; - Disp("Payon Forest",1,11); Pick("pay_fild"); -F22: setarray @c[0],208,227,190,206,240,206,190,143,307,252,239,213,185,188,193,194,187,218,210,183,195,149,198,164; - Disp("Prontera Field",0,11); Pick("prt_fild",1); -F23: Restrict("Pre-RE",2,7,9,10,11,13); - setarray @c[2],192,162,235,166,202,206,202,208,225,202,202,214,263,196,217,201,87,121,277,181,221,185,175,200,174,197; - Disp("Rachel Field",1,13); Pick("ra_fild"); -F24: setarray @c[2],219,205,177,206,194,182,224,170,198,216,156,187,185,263,206,228,208,238,209,223,85,97,207,202,31,195,38,195; - Disp("Sograt Desert 1:Sograt Desert 2:Sograt Desert 3:Sograt Desert 7:Sograt Desert 11:Sograt Desert 12:Sograt Desert 13:Sograt Desert 16:Sograt Desert 17:Sograt Desert 18:Sograt Desert 19:Sograt Desert 20:Sograt Desert 21:Sograt Desert 22"); - Pick("","moc_fild01","moc_fild02","moc_fild03","moc_fild07","moc_fild11","moc_fild12","moc_fild13","moc_fild16","moc_fild17","moc_fild18","moc_fild19","moc_fild20","moc_fild21","moc_fild22"); -F25: setarray @c[2],175,186,236,184,188,204; - Disp("Splendide Field",1,3); Pick("spl_fild"); -F26: setarray @c[2],217,206,223,221,237,215,202,197; - Disp("Umbala Field",1,4); Pick("um_fild"); -F27: Restrict("Pre-RE",5); - setarray @c[2],186,175,196,370,222,45,51,250,202,324,150,223,149,307; - Disp("Veins Field",1,7); Pick("ve_fild"); -F28: Restrict("Pre-RE",5,10); - setarray @c[2],189,224,192,207,221,157,226,199,223,177,187,232,231,174,196,203,183,214,200,124,195,226,210,304; - Disp("Yuno Field",1,12); Pick("yuno_fild"); - -// -------------------------------------------------- - Dungeons: -// -------------------------------------------------- -menu "Abyss Lakes",D1, "Amatsu Dungeon",D2, "Anthell",D3, - "Ayothaya Dungeon",D4, "Beach Dungeon",D5, "Bifrost Tower",D41, - "Bio Labs",D6, "Brasilis Dungeon",D7, "Byalan Dungeon",D8, "Clock Tower",D9, - "Coal Mines",D10, "Culvert",D11, "Cursed Abbey",D12, "Dewata Dungeon",D13, - "Einbroch Dungeon",D14, "Gefenia",D15, "Geffen Dungeon",D16, - "Glast Heim",D17, "Gonryun Dungeon",D18, "Hidden Dungeon",D19, - "Ice Dungeon",D20, "Juperos",D21, "Kiel Dungeon",D22, "Louyang Dungeon",D23, - "Magma Dungeon",D24, "Malangdo Dungeon",D25, "Moscovia Dungeon",D26, - "Nidhogg's Dungeon",D27, "Odin Temple",D28, "Orc Dungeon",D29, - "Payon Dungeon",D30, "Pyramids",D31, "Rachel Sanctuary",D32, - "Scaraba Hole",D33, "Sphinx",D34, "Sunken Ship",D35, "Thanatos Tower",D36, - "Thor Volcano",D37, "Toy Factory",D38, "Turtle Dungeon",D39, "Umbala Dungeon",D40; - -D1: setarray @c[2],261,272,275,270,116,27; - Disp("Abyss Lakes",1,3); Pick("abyss_"); -D2: setarray @c[2],228,11,34,41,119,14; - Disp("Amatsu Dungeon",1,3); Pick("ama_dun"); -D3: setarray @c[2],35,262,168,170; - Disp("Anthell",1,2); Pick("anthell"); -D4: setarray @c[2],275,19,24,26; - Disp("Ancient Shrine Maze:Inside Ancient Shrine"); Pick("ayo_dun"); -D5: setarray @c[2],266,67,255,244,23,260; - Disp("Beach Dungeon",1,3); Pick("","beach_dun","beach_dun2","beach_dun3"); -D6: Restrict("RE",4); - setarray @c[2],150,288,150,18,140,134,244,52; - Disp("Bio Lab",1,4); Pick("lhz_dun"); -D7: Restrict("RE"); - setarray @c[2],87,47,262,262; - Disp("Brasilis Dungeon",1,2); Pick("bra_dun"); -D8: Restrict("RE",6); - setarray @c[0],168,168,253,252,236,204,32,63,26,27,141,187; - Disp("Byalan Dungeon",1,6); Pick("iz_dun",1); -D9: setarray @c[2],199,159,148,283,65,147,56,155,297,25,127,169,277,178,268,74; - Disp("Clock Tower 1:Clock Tower 2:Clock Tower 3:Clock Tower 4:Basement 1:Basement 2:Basement 3:Basement 4"); - Pick("","c_tower1","c_tower2","c_tower3","c_tower4","alde_dun01","alde_dun02","alde_dun03","alde_dun04"); -D10: setarray @c[2],52,17,381,343,302,262; - Disp("Coal Mines",1,3); Pick("mjo_dun"); -D11: setarray @c[2],131,247,19,19,180,169,100,92; - Disp("Culvert",1,4); Pick("","prt_sewb1","prt_sewb2","prt_sewb3","prt_sewb4"); -D12: setarray @c[2],51,14,150,11,120,10; - Disp("Cursed Abbey",1,3); Pick("abbey"); -D13: Restrict("RE"); - setarray @c[2],285,160,299,29; - Disp("Dewata Dungeon",1,2); Pick("dew_dun"); -D14: setarray @c[2],22,14,292,290; - Disp("Einbroch Dungeon",1,2); Pick("ein_dun"); -D15: setarray @c[2],40,103,203,34,266,168,130,272; - Disp("Gefenia",1,4); Pick("gefenia",0); -D16: setarray @c[0],104,99,115,236,106,132,203,200; - Disp("Geffen Dungeon",1,4); Pick("gef_dun",1); -D17: setarray @c[2],370,304,199,29,104,25,150,15,157,287,147,15,258,255,108,291,171,283,68,277,156,7,12,7,133,271,224,274,14,70,150,14; - Disp("Entrance:Castle 1:Castle 2:Chivalry 1:Chivalry 2:Churchyard:Culvert 1:Culvert 2:Culvert 3:Culvert 4:St. Abbey:Staircase Dungeon:Underground Cave 1:Underground Cave 2:Underground Prison 1:Underground Prison 2"); - Pick("","glast_01","gl_cas01","gl_cas02","gl_knt01","gl_knt02","gl_chyard","gl_sew01","gl_sew02","gl_sew03","gl_sew04","gl_church","gl_step","gl_dun01","gl_dun02","gl_prison","gl_prison1"); -D18: setarray @c[2],153,53,28,113,68,16; - Disp("Gonryun Dungeon",1,3); Pick("gon_dun"); -D19: setarray @c[2],176,7,93,20,23,8; - Disp("Hidden Dungeon",1,3); Pick("prt_maze"); -D20: setarray @c[2],157,14,151,155,149,22,33,158; - Disp("Ice Dungeon",1,4); Pick("ice_dun"); -D21: setarray @c[2],140,51,53,247,37,63,150,285; - Disp("Entrance:Juperos 1:Juperos 2:Core"); - Pick("","jupe_cave","juperos_01","juperos_02","jupe_core"); -D22: setarray @c[2],28,226,41,198; - Disp("Kiel Dungeon",1,2); Pick("kh_dun"); -D23: setarray @c[2],218,196,282,20,165,38; - Disp("The Royal Tomb:Inside the Royal Tomb:Suei Long Gon"); Pick("lou_dun"); -D24: setarray @c[2],126,68,47,30; - Disp("Magma Dungeon",1,2); Pick("mag_dun"); -D25: Restrict("RE"); - setarray @c[2],33,230; - Disp("Malangdo Dungeon",1,1); Pick("mal_dun"); -D26: setarray @c[2],189,48,165,30,32,135; - Disp("Moscovia Dungeon",1,3); Pick("mosk_dun"); -D27: setarray @c[2],61,239,60,271; - Disp("Nidhogg's Dungeon",1,2); Pick("nyd_dun"); -D28: setarray @c[2],298,167,224,149,266,280; - Disp("Odin Temple",1,3); Pick("odin_tem"); -D29: setarray @c[2],32,170,21,185; - Disp("Orc Dungeon",1,2); Pick("orcsdun"); -D30: setarray @c[0],21,183,19,33,19,63,155,159,201,204; - Disp("Payon Dungeon",1,5); Pick("pay_dun",1); -D31: Restrict("RE",7,8); - setarray @c[2],192,9,10,192,100,92,181,11,94,96,192,8,94,96,192,8; - Disp("Pyramids 1:Pyramids 2:Pyramids 3:Pyramids 4:Basement 1:Basement 2:Basement 1 - Nightmare Mode:Basement 2 - Nightmare Mode"); - Pick("","moc_pryd01","moc_pryd02","moc_pryd03","moc_pryd04","moc_pryd05","moc_pryd06","moc_prydn1","moc_prydn2"); -D32: setarray @c[2],140,11,32,21,8,149,204,218,150,9; - Disp("Rachel Sanctuary",1,5); Pick("ra_san"); -D33: Restrict("RE"); - setarray @c[2],364,44,101,141; - Disp("Scaraba Hole",1,2); Pick("dic_dun"); -D34: setarray @c[2],288,9,149,81,210,54,10,222,100,99; - Disp("Sphinx",1,5); Pick("","in_sphinx1","in_sphinx2","in_sphinx3","in_sphinx4","in_sphinx5"); -D35: setarray @c[2],69,24,102,27; - Disp("Sunken Ship",1,2); Pick("treasure"); -D36: setarray @c[2],150,39,150,136,220,158,59,143,62,11,89,221,35,166,93,148,29,107,159,138,19,20,130,52; - Disp("Thanatos Tower",1,12); Pick("tha_t"); -D37: setarray @c[2],21,228,75,205,34,272; - Disp("Thor Volcano",1,3); Pick("thor_v"); -D38: setarray @c[2],205,15,129,133; - Disp("Toy Factory",1,2); Pick("xmas_dun"); -D39: setarray @c[2],154,49,148,261,132,189,100,192; - Disp("Entrance:Turtle Dungeon 1:Turtle Dungeon 2:Turtle Dungeon 3"); Pick("tur_dun"); -D40: Restrict("Pre-RE",1,2); - setarray @c[2],42,31,48,30,204,78; - Disp("Carpenter's Shop in the Tree:Passage to a Foreign World:Hvergermil's Fountain"); - Pick("","um_dun01","um_dun02","yggdrasil01"); -D41: Restrict("RE"); - setarray @c[2],57,13,64,88,45,14,26,23; - Disp("Bifrost Tower",1,4); Pick("ecl_tdun"); - -// -------------------------------------------------- - Castles: -// -------------------------------------------------- -menu "Aldebaran Castles",C1, "Geffen Castles",C2, "Payon Castles",C3, - "Prontera Castles",C4, "Arunafeltz Castles",C5, "Schwaltzvalt Castles",C6; - -C1: setarray @c[2],48,83,95,249,142,85,239,242,264,90; - Disp("Neuschwanstein:Hohenschwangau:Nuenberg:Wuerzburg:Rothenburg"); - Pick("","alde_gld","alde_gld","alde_gld","alde_gld","alde_gld"); -C2: setarray @c[2],214,75,308,240,143,240,193,278,305,87; - Disp("Repherion:Eeyolbriggar:Yesnelph:Bergel:Mersetzdeitz"); - Pick("","gef_fild13","gef_fild13","gef_fild13","gef_fild13","gef_fild13"); -C3: setarray @c[2],121,233,295,116,317,293,140,160,204,266; - Disp("Bright Arbor:Scarlet Palace:Holy Shadow:Sacred Altar:Bamboo Grove Hill"); - Pick("","pay_gld","pay_gld","pay_gld","pay_gld","pay_gld"); -C4: setarray @c[2],134,65,240,128,153,137,111,240,208,240; - Disp("Kriemhild:Swanhild:Fadhgridh:Skoegul:Gondul"); - Pick("","prt_gld","prt_gld","prt_gld","prt_gld","prt_gld"); -C5: setarray @c[2],158,272,83,47,68,155,299,345,292,107; - Disp("Mardol:Cyr:Horn:Gefn:Banadis"); - Pick("","aru_gld","aru_gld","aru_gld","aru_gld","aru_gld"); -C6: setarray @c[2],293,100,288,252,97,196,137,90,71,315; - Disp("Himinn:Andlangr:Viblainn:Hljod:Skidbladnir"); - Pick("","sch_gld","sch_gld","sch_gld","sch_gld","sch_gld"); - -// -------------------------------------------------- - Guild_Dungeons: -// -------------------------------------------------- -menu "Baldur",G1, "Luina",G2, "Valkyrie",G3, "Britoniah",G4, - "Arunafeltz",G5, "Schwaltzvalt",G6; - -G1: Restrict("RE",2,3); - setarray @c[2],119,93,119,93,120,130; - Disp("Baldur F1:Baldur F2:Hall of Abyss"); - Pick("","gld_dun01","gld_dun01_2","gld2_pay"); -G2: Restrict("RE",2,3); - setarray @c[2],39,161,39,161,147,155; - Disp("Luina F1:Luina F2:Hall of Abyss"); - Pick("","gld_dun02","gld_dun02_2","gld2_ald"); -G3: Restrict("RE",2,3); - setarray @c[2],50,44,50,44,140,132; - Disp("Valkyrie F1:Valkyrie F2:Hall of Abyss"); - Pick("","gld_dun03","gld_dun03_2","gld2_prt"); -G4: Restrict("RE",2,3); - setarray @c[2],116,45,116,45,152,118; - Disp("Britoniah F1:Britoniah F2:Hall of Abyss"); - Pick("","gld_dun04","gld_dun04_2","gld2_gef"); -G5: Go("arug_dun01",199,195); -G6: Go("schg_dun01",200,124); - -// -------------------------------------------------- - Instances: -// -------------------------------------------------- -menu "Bakonawa Lake",I1, "Bangungot Hospital 2F",I2, "Buwaya Cave",I3, - "Endless Tower",I4, "Hazy Forest",I5, "Malangdo Culvert",I6, "Nidhoggur's Nest",I7, - "Octopus Cave",I8, "Old Glast Heim",I9, "Orc's Memory",I10, "Sealed Shrine",I11, - "Wolfchev's Laboratory",I12; - -I1: Restrict("RE"); - Go("ma_scene01",172,175); -I2: Restrict("RE"); - Go("ma_dun01",151,8); -I3: Restrict("RE"); - Go("ma_fild02",316,317); -I4: Go("e_tower",72,112); -I5: Restrict("RE"); - Go("bif_fild01",161,334); -I6: Restrict("RE"); - Go("mal_in01",164,21); -I7: Go("nyd_dun02",95,193); -I8: Restrict("RE"); - Go("mal_dun01",152,230); -I9: Restrict("RE"); - Go("glast_01",204,268); -I10: Go("gef_fild10",240,198); -I11: Go("monk_test",306,143); -I12: Restrict("RE"); - Go("lhz_dun04",148,269); - -// -------------------------------------------------- - Special: -// -------------------------------------------------- -menu "Auction Hall",S1, "Battlegrounds",S2, "Casino",S3, "Eden Group Headquarters",S4, - "Gonryun Arena",S5, "Izlude Arena",S6, "Monster Race Arena",S7, "Turbo Track",S8; - -S1: Go("auction_01",22,68); -S2: Go("bat_room",154,150); -S3: Go("cmd_in02",179,129); -S4: Restrict("RE"); - Go("moc_para01",31,14); -S5: Go("gon_test",48,10); -S6: Go("arena_room",100,88); -S7: Go("p_track01",62,41); -S8: Go("turbo_room",99,114); -} - -// -------------------------------------------------- -// Duplicates: -// -------------------------------------------------- -alb2trea,57,70,6 duplicate(Warper) Warper#tre 4_F_VALKYRIE -alberta,28,240,4 duplicate(Warper) Warper#alb 4_F_VALKYRIE -aldebaran,145,118,4 duplicate(Warper) Warper#alde 4_F_VALKYRIE -amatsu,203,87,4 duplicate(Warper) Warper#ama 4_F_VALKYRIE -ayothaya,209,169,6 duplicate(Warper) Warper#ayo 4_F_VALKYRIE -comodo,194,158,4 duplicate(Warper) Warper#com 4_F_VALKYRIE -einbech,59,38,6 duplicate(Warper) Warper#einbe 4_F_VALKYRIE -einbroch,69,202,4 duplicate(Warper) Warper#einbr 4_F_VALKYRIE -gef_fild10,71,339,4 duplicate(Warper) Warper#orc 4_F_VALKYRIE -geffen,124,72,4 duplicate(Warper) Warper#gef 4_F_VALKYRIE -glast_01,372,308,4 duplicate(Warper) Warper#glh 4_F_VALKYRIE -gonryun,162,122,4 duplicate(Warper) Warper#gon 4_F_VALKYRIE -hugel,101,151,4 duplicate(Warper) Warper#hug 4_F_VALKYRIE -izlu2dun,110,92,4 duplicate(Warper) Warper#izd 4_F_VALKYRIE -izlude,134,150,4 duplicate(Warper) Warper#izl 4_F_VALKYRIE //Pre-RE: (132,120) -jawaii,253,138,4 duplicate(Warper) Warper#jaw 4_F_VALKYRIE -lighthalzen,162,102,4 duplicate(Warper) Warper#lhz 4_F_VALKYRIE -louyang,208,103,6 duplicate(Warper) Warper#lou 4_F_VALKYRIE -manuk,274,146,6 duplicate(Warper) Warper#man 4_F_VALKYRIE -mid_camp,216,288,4 duplicate(Warper) Warper#mid 4_F_VALKYRIE -mjolnir_02,85,364,4 duplicate(Warper) Warper#mjo 4_F_VALKYRIE -moc_ruins,64,164,4 duplicate(Warper) Warper#moc 4_F_VALKYRIE -morocc,159,97,4 duplicate(Warper) Warper#mor 4_F_VALKYRIE -moscovia,229,191,4 duplicate(Warper) Warper#mos 4_F_VALKYRIE -nameless_n,259,213,4 duplicate(Warper) Warper#nam 4_F_VALKYRIE -niflheim,205,179,4 duplicate(Warper) Warper#nif 4_F_VALKYRIE -pay_arche,42,134,4 duplicate(Warper) Warper#arc 4_F_VALKYRIE -payon,182,108,4 duplicate(Warper) Warper#pay 4_F_VALKYRIE -prontera,159,192,4 duplicate(Warper) Warper#prt 4_F_VALKYRIE -prt_fild05,279,223,6 duplicate(Warper) Warper#cul 4_F_VALKYRIE -rachel,135,116,4 duplicate(Warper) Warper#rac 4_F_VALKYRIE -splendide,205,153,4 duplicate(Warper) Warper#spl 4_F_VALKYRIE -thor_camp,249,76,4 duplicate(Warper) Warper#thor 4_F_VALKYRIE -umbala,106,150,3 duplicate(Warper) Warper#umb 4_F_VALKYRIE -veins,214,123,4 duplicate(Warper) Warper#ve 4_F_VALKYRIE -xmas,150,136,6 duplicate(Warper) Warper#xmas 4_F_VALKYRIE -yuno,162,47,4 duplicate(Warper) Warper#yuno 4_F_VALKYRIE - -// -------------------------------------------------- -// Duplicates (Renewal): -// -------------------------------------------------- -brasilis,201,222,4 duplicate(Warper) Warper#bra 4_F_VALKYRIE -dewata,204,186,6 duplicate(Warper) Warper#dew 4_F_VALKYRIE -dicastes01,194,194,6 duplicate(Warper) Warper#dic 4_F_VALKYRIE -ecl_in01,51,60,4 duplicate(Warper) Warper#ecl 4_F_VALKYRIE -malangdo,134,117,6 duplicate(Warper) Warper#mal 4_F_VALKYRIE -malaya,231,204,4 duplicate(Warper) Warper#ma 4_F_VALKYRIE -mora,57,152,4 duplicate(Warper) Warper#mora 4_F_VALKYRIE diff --git a/npc/custom/woe_controller.txt b/npc/custom/woe_controller.txt deleted file mode 100644 index 5f619c1db..000000000 --- a/npc/custom/woe_controller.txt +++ /dev/null @@ -1,448 +0,0 @@ -//===== Hercules Script ====================================== -//= Euphy's WOE Controller -//===== By: ================================================== -//= Euphy -//===== Current Version: ===================================== -//= 1.5 -//===== Description: ========================================= -//= A controller for War of Emperium designed for -//= simplicity and ease of use. -//= Many concepts taken from ToastOfDoom's script, -//= and "rewards" function originally by Goddameit. -//===== Additional Comments: ================================= -//= Be sure to disable the default agit controllers! -//== npc\woe-fe\agit_controller.txt -//== npc\woe-se\agit_start_se.txt -//============================================================ - -// Information NPC -//============================================================ -prontera,149,193,4 script WOE Information 2_BOARD1,{ - doevent "WOE_CONTROL::OnMenu"; - end; -OnAgitStart: - while(agitcheck()) { - specialeffect(EF_BEGINSPELL6); - sleep 425; - } - end; -} - -// Script Core -//============================================================ -- script WOE_CONTROL FAKE_NPC,{ -function Disp_Owner; function Add_Zero; - -OnInit: - -// ----------------------------------------------------------- -// Configuration settings. -// ----------------------------------------------------------- - - set .CastleWarp,0; // 1: Always enable all castle warps. | 0: Warp only to active castles. - set .AutoKick,1; // Automatically kick players from inactive castles during WOE? (1:yes / 0:no) - set .NoOwner,0; // Automatically kick players from unconquered castles outside of WOE? (1:yes / 0:no) - set .ExitWarp,0; // Warp all players from castles when WOE ends? (1:yes / 0:no) - set .GMAccess,99; // GM level required to access Session Manager. - -// ----------------------------------------------------------- -// Reward options. -// ----------------------------------------------------------- -// [1] Enable rewards. -// [2] Mail all rewards. -// - If not set, players receive items in their inventory. -// - Only ONE item can be sent via mail, plus Zeny. -// - Note that offline players do NOT receive rewards. -// [4] Only reward Guild Masters. -// - If not set, all guild members are rewarded. -// - If mailing is enabled (option 2), offline Guild Masters WILL receive rewards. -// [8] Duplicate IP check. -// - Members in a guild with the same IP address are not rewarded. -// - If Guild Masters is enabled (option 4), this feature is not used. -// ----------------------------------------------------------- - - // Combine values as needed (e.g. 1|8 = 1+8 = 9). - set .Options, 1|8; - - // Rewards per castle. - // -- when given directly: <itemID>,<amount>{,<itemID>,<amount>,...} - // -- via mail (option 2): <itemID>,<amount>,<Zeny> - setarray .Reward[0],14001,1; - -// ----------------------------------------------------------- -// Constants (leave this section alone). -// ----------------------------------------------------------- - - setarray .Castles$[0], - "prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05", - "payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05", - "gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05", - "aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05", - "arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05", - "schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05"; - setarray .EndLabel$[0],"ar01","ar02","ar03","ar04","ar05","sc01","sc02","sc03","sc04","sc05"; - setarray .Days$[0],"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"; - setarray .Regions$[0],"Prontera","Payon","Geffen","Aldebaran","Arunafeltz","Schwaltzvalt"; - setarray .Map$[0],"prt_gld","pay_gld","gef_fild13","alde_gld","aru_gld","sch_gld"; - setarray .MapX[0],134,240,153,111,208,121,295,317,140,204,214,308,143,193,305,48, 95,142,239,264,158,83, 68,299,292,293,288, 97,137, 71; - setarray .MapY[0], 65,128,137,240,240,233,116,293,160,266, 75,240,240,278, 87,83,249, 85,242, 90,272,47,155,345,107,100,252,196, 90,315; - -// ----------------------------------------------------------- - - set .Size, getarraysize($WOE_CONTROL); - if (.AutoKick || .NoOwner) - for(set .@i,0; .@i<30; set .@i,.@i+1) { - setmapflag .Castles$[.@i], mf_loadevent; - setd "."+.Castles$[.@i], .@i; - } - if (!agitcheck() && !agitcheck2()) sleep 4000; - set .Init,1; - -OnMinute00: - freeloop(1); - if (agitcheck() || agitcheck2()) { - for(set .@i,0; .@i<.Size; set .@i,.@i+4) - if (gettime(GETTIME_WEEKDAY) == $WOE_CONTROL[.@i] && gettime(GETTIME_HOUR) == $WOE_CONTROL[.@i+2]) { - OnWOEEnd: - announce "The War Of Emperium is over!",bc_all|bc_woe; - agitend; agitend2; - sleep 1000; - for(set .@j,0; .@j<30; set .@j,.@j+1) { - if (.Active[0]&(1<<.@j)) Disp_Owner(.Castles$[.@j],1); - if (.ExitWarp) maprespawnguildid .Castles$[.@j],0,3; - } - if (.Options&1 && .Active[0] && .ForceEnd != 2) callsub OnReward, .Active[0]; - deletearray .Active[0],2; - if (.ForceEnd) { set .ForceEnd,0; end; } - break; - } - } - if ((!agitcheck() && !agitcheck2()) || .Init) { - if (!agitcheck() && !agitcheck2()) set .Init,0; - for(set .@i,0; .@i<.Size; set .@i,.@i+4) - if (gettime(GETTIME_WEEKDAY) == $WOE_CONTROL[.@i] && gettime(GETTIME_HOUR) >= $WOE_CONTROL[.@i+1] && gettime(GETTIME_HOUR) < $WOE_CONTROL[.@i+2]) { - deletearray .Active[0],2; - set .Active[0], $WOE_CONTROL[.@i+3]; - if (.Init) { agitend; agitend2; } - else announce "The War Of Emperium has begun!",bc_all|bc_woe; - sleep 1000; - agitstart; agitstart2; - for(set .@j,0; .@j<30; set .@j,.@j+1) { - if (.Active[0]&(1<<.@j)) { - if (!.Init) Disp_Owner(.Castles$[.@j],0); - set .Active[1], .Active[1] | (1<<((.@j/5)+1)); - } else { - if (.@j<20) { - donpcevent "Agit#"+.Castles$[.@j]+"::OnAgitEnd"; - killmonster .Castles$[.@j], "Agit#"+.Castles$[.@j]+"::OnAgitBreak"; - } else { - donpcevent "Manager#"+.Castles$[.@j]+"::OnAgitEnd2"; - killmonster .Castles$[.@j], "Steward#"+.EndLabel$[.@j-20]+"::OnStartArena"; - } - } - } - break; - } - } - set .Init,0; - end; - -function Disp_Owner { - set .@o, getcastledata(getarg(0),1); - if (.@o) announce "The ["+getcastlename(getarg(0))+"] castle "+((getarg(1))?"has been conquered":"is currently held")+" by the ["+getguildname(.@o)+"] guild.",bc_all|bc_woe; - else announce "The ["+getcastlename(getarg(0))+"] castle is currently unoccupied.",bc_all|bc_woe; - return; -} -function Add_Zero { - return ((getarg(0)<10)?"0":"")+getarg(0)+(getarg(1,0)?".":":")+"00"; -} - -OnReward: - set .@sql$, ((.Options&4)?"position = 0":"online = 1"); - if (.Options&2) set .@str$,gettimestr("%B %d, %Y",21); - freeloop(1); - for(set .@i,0; .@i<30; set .@i,.@i+1) - if (getarg(0)&(1<<.@i)) { - set .@GID, getcastledata(.Castles$[.@i],1); - if (!.@GID) continue; - set .@size, query_sql("SELECT account_id,char_id FROM `guild_member` WHERE guild_id = '"+.@GID+"' AND "+.@sql$,.@aid,.@cid); - for(set .@j,0; .@j<.@size; set .@j,.@j+1) { - if (.Options&8 && !(.Options&4)) { - set .@ip$, replacestr(getcharip(.@aid[.@j]),".","a"); - if (getd(".@ip_"+.@i+"_"+.@ip$)) continue; - setd ".@ip_"+.@i+"_"+.@ip$,1; - } - if (.Options&2) { - query_sql("INSERT INTO `mail` (send_name,dest_id,title,message,nameid,amount,identify,zeny,time) VALUES ("+ - "'no-reply',"+.@cid[.@j]+",'** Siege Reward: "+getcastlename(.Castles$[.@i])+" **',"+ - "'Brave one,% % Congratulations!% Your guild has successfully occupied% territory in the War of Emperium on% "+.@str$+".% % % % % [ Your reward is attached. ]',"+ - .Reward[0]+","+.Reward[1]+",0,"+.Reward[2]+",UNIX_TIMESTAMP(NOW()))"); - if (!getd(".@str_"+.@cid[.@j]) && isloggedin(.@aid[.@j],.@cid[.@j])) { - setd ".@str_"+.@cid[.@j],1; - message rid2name(.@aid[.@j]),"You've got mail! Please re-login to update your mailing list."; - } - } else if (isloggedin(.@aid[.@j])) { - for(set .@k,0; .@k<getarraysize(.Reward); set .@k,.@k+2) - getitem .Reward[.@k], .Reward[.@k+1], .@aid[.@j]; - message rid2name(.@aid[.@j]),"You have been rewarded for conquering "+getcastlename(.Castles$[.@i])+"."; - } - } - } - if (.Options&2) query_sql("UPDATE `mail` SET message = REPLACE(message,'%',CHAR(13)) WHERE send_name = 'no-reply'"); - return; - -OnPCLoadMapEvent: - if (!compare(strcharinfo(PC_MAP),"g_cas")) end; - if (((.AutoKick && .Active[0]) || (.NoOwner && !getcastledata(strcharinfo(PC_MAP),1))) && !(.Active[0]&(1<<getd("."+strcharinfo(PC_MAP))))) { - if (getcharid(CHAR_ID_GUILD) && getcastledata(strcharinfo(PC_MAP),1) == getcharid(CHAR_ID_GUILD)) end; - sleep2 1000; - message strcharinfo(PC_NAME), getcastlename(strcharinfo(PC_MAP))+" is currently inactive."; - sleep2 5000; - if (compare(strcharinfo(PC_MAP),"g_cas")) warp "SavePoint",0,0; - } - end; - -OnMenu: -while(1) { - mes "[WOE Information]"; - if (agitcheck() || agitcheck2()) { - if (.Active[0]) { - for(set .@i,0; .@i<.Size; set .@i,.@i+4) - if (gettime(GETTIME_WEEKDAY) == $WOE_CONTROL[.@i] && gettime(GETTIME_HOUR) >= $WOE_CONTROL[.@i+1] && gettime(GETTIME_HOUR) < $WOE_CONTROL[.@i+2]) { - set .@i, $WOE_CONTROL[.@i+2]; - break; - } - mes "The War of Emperium is ^0055FFactive^000000 until ^FF0000"+Add_Zero(.@i)+"^000000 in the following regions:"; - mes " "; - for(set .@i,0; .@i<6; set .@i,.@i+1) - if (.Active[1]&(1<<(.@i+1))) mes " > ^777777"+.Regions$[.@i]+"^000000"; - } else - mes "The War of Emperium is ^0055FFactive^000000."; - } else { - for(set .@i,0; .@i<.Size; set .@i,.@i+4) - if ((gettime(GETTIME_WEEKDAY) == $WOE_CONTROL[.@i] && gettime(GETTIME_HOUR) <= $WOE_CONTROL[.@i+1]) || gettime(GETTIME_WEEKDAY) < $WOE_CONTROL[.@i]) { - setarray .@time[0],$WOE_CONTROL[.@i],$WOE_CONTROL[.@i+1]; - break; - } - if (!getarraysize(.@time)) - setarray .@time[0],$WOE_CONTROL[0],$WOE_CONTROL[1]; - mes "The War of Emperium is ^777777inactive^000000."; - if (.Size) { - mes " "; - mes "The next session will begin"; - mes "on ^0055FF"+.Days$[.@time[0]]+"^000000 at "+Add_Zero(.@time[1])+"^000000."; - } - } - next; - switch(select(((.CastleWarp || .Active[1])?" ~ Warp to castles...":""), "~ Check schedule...", " ~ View castle owners...", ((getgmlevel()<.GMAccess || !getgmlevel())?"":" ~ Manage sessions..."), " ~ ^777777Cancel^000000")) { - case 1: - if (.CastleWarp) set .@clr$,"^0055FF"; - set .@menu$,""; - for(set .@i,0; .@i<6; set .@i,.@i+1) { - if (.CastleWarp || .Active[1]&(1<<(.@i+1))) - set .@menu$, .@menu$+" ~ "+((.Active[1]&(1<<(.@i+1)))?.@clr$:"^777777")+.Regions$[.@i]+" Castles^000000"; - set .@menu$, .@menu$+":"; - } - set .@i, select(.@menu$)-1; - set .@menu$,""; - for(set .@j,.@i*5; .@j<(.@i*5)+5; set .@j,.@j+1) { - if (.CastleWarp || .Active[0]&(1<<.@j)) - set .@menu$, .@menu$+" ~ "+((.Active[0]&(1<<.@j))?.@clr$:"^777777")+getcastlename(.Castles$[.@j])+"^000000"; - set .@menu$, .@menu$+":"; - } - set .@j, select(.@menu$)-1; - warp .Map$[.@i],.MapX[(.@i*5)+.@j],.MapY[(.@i*5)+.@j]; - close; - case 2: - mes "[Schedule]"; - if (.Size) { - freeloop(1); - for(set .@i,0; .@i<.Size; set .@i,.@i+4) { - mes "> ^FF0000"+.Days$[$WOE_CONTROL[.@i]]+" ("+Add_Zero($WOE_CONTROL[.@i+1])+"-"+Add_Zero($WOE_CONTROL[.@i+2])+")^000000"; - for(set .@j,0; .@j<30; set .@j,.@j+1) - if ($WOE_CONTROL[.@i+3]&(1<<.@j)) mes " ~ "+getcastlename(.Castles$[.@j])+" ^777777("+.Castles$[.@j]+")^000000"; - if (.@i+4 < .Size) mes " "; - } - freeloop(0); - } else - mes "No times are configured."; - next; - break; - case 3: - mes "[Castle Ownership]"; - for(set .@i,0; .@i<6; set .@i,.@i+1) { - set .@k, .@i*5; - mes "> ^FF0000"+.Regions$[.@i]+"^000000"; - for(set .@j,.@k; .@j<(.@k+5); set .@j,.@j+1) { - set .@t, getcastledata(.Castles$[.@j],1); - mes " ~ "+getcastlename(.Castles$[.@j])+": "+((.@t)?"^0055FF"+getguildname(.@t):"^777777unoccupied")+"^000000"; - } - if (.@i < 5) mes " "; - } - next; - break; - case 4: - while(1) { - mes "[Session Manager]"; - mes "There are ^0055FF"+(.Size/4)+" session(s)^000000 configured."; - mes "What would you like to do?"; - next; - switch(select(" ~ Add a session...", " ~ Delete a session...", " ~ Reload settings...", ((agitcheck() || agitcheck2())?" ~ End WOE session...": ""), " ~ ^777777Go back^000000")) { - case 1: - mes "[New Session]"; - if (.Size > 127) { - mes "You have already reached the maximum of 32 sessions."; - next; - break; - } - mes "Select a day."; - next; - set .@day, select(" ~ "+implode(.Days$,": ~ "))-1; - mes "[New Session]"; - mes "Select a start time for ^0055FF"+.Days$[.@day]+"^000000."; - next; - set .@menu$,""; - for(set .@i,0; .@i<23; set .@i,.@i+1) - set .@menu$, .@menu$+" ~ "+Add_Zero(.@i,1)+":"; - set .@start, select(.@menu$)-1; - mes "[New Session]"; - mes "Select an end time for ^0055FF"+.Days$[.@day]+"^000000."; - next; - set .@menu$,""; - for(set .@i,.@start+1; .@i<24; set.@i,.@i+1) - set .@menu$, .@menu$+" ~ "+Add_Zero(.@i,1)+":"; - set .@end, select(.@menu$)+.@start; - for(set .@i,0; .@i<.Size; set .@i,.@i+4) - if (.@day == $WOE_CONTROL[.@i] && - ((.@start >= $WOE_CONTROL[.@i+1] && .@start < $WOE_CONTROL[.@i+2]) || - (.@end > $WOE_CONTROL[.@i+1] && .@end <= $WOE_CONTROL[.@i+2]) || - (.@start <= $WOE_CONTROL[.@i+1] && .@end >= $WOE_CONTROL[.@i+2]))) { - mes "[New Session]"; - mes "The chosen times overlap with an existing session."; - next; - set .@d,1; - break; - } - if (.@d) { set .@d,0; break; } - set .@castle,0; - while(1) { - mes "[New Session]"; - mes "^0055FF"+.Days$[.@day]+" ("+Add_Zero(.@start)+"-"+Add_Zero(.@end)+")^000000"; - mes " > Castles:"; - if (!.@castle) - mes " ~ ^777777(none selected)^000000"; - else for(set .@i,0; .@i<30; set .@i,.@i+1) - if (.@castle&(1<<.@i)) mes " ~ "+getcastlename(.Castles$[.@i])+" ("+.Castles$[.@i]+")"; - next; - set .@menu$,((.@castle)?" ~ ^FF0000Finished...^000000":"")+":"; - for(set .@i,0; .@i<30; set .@i,.@i+1) - set .@menu$, .@menu$+" ~ "+((.@castle&(1<<.@i))?"^0055FF":"")+getcastlename(.Castles$[.@i])+" ("+.Castles$[.@i]+")^000000:"; - set .@i, select(.@menu$)-1; - if (.@i) - set .@castle, .@castle^(1<<(.@i-1)); - else { - mes "[New Session]"; - mes "Are you sure?"; - next; - switch(select(" ~ ^0055FFAdd session...^000000", " ~ Continue selecting castles...", " ~ ^777777Cancel^000000")) { - case 1: - for(set .@i,0; .@i<.Size; set .@i,.@i+4) - if ((.@day == $WOE_CONTROL[.@i] && .@end <= $WOE_CONTROL[.@i+1]) || .@day < $WOE_CONTROL[.@i]) { - set .@d,1; - break; - } - if (!.@d) { set .@d,1; set .@i,.Size; } - copyarray $WOE_CONTROL[.@i+4], $WOE_CONTROL[.@i], .Size-.@i; - setarray $WOE_CONTROL[.@i], .@day, .@start, .@end, .@castle; - set .Size, getarraysize($WOE_CONTROL); - case 3: - mes "[New Session]"; - mes ((.@d)?"Session added.":"Cancelled."); - next; - set .@d,1; - case 2: - break; - } - if (.@d) { set .@d,0; break; } - } - } - break; - case 2: - mes "[Remove Session]"; - if (!.Size) { - mes "There are no sessions configured."; - next; - break; - } - mes "Select a session to remove."; - next; - set .@menu$,""; - for(set .@i,0; .@i<.Size; set .@i,.@i+4) - set .@menu$, .@menu$+" ~ "+.Days$[$WOE_CONTROL[.@i]]+" ("+Add_Zero($WOE_CONTROL[.@i+1],1)+"-"+Add_Zero($WOE_CONTROL[.@i+2],1)+"):"; - set .@menu$, .@menu$+" ~ ^777777Cancel^000000"; - set .@i, select(.@menu$)-1; - if (.@i == (.Size/4)) break; - mes "[Remove Session]"; - mes "Delete ^0055FF"+.Days$[$WOE_CONTROL[.@i*4]]+"'s^000000 session?"; - mes "This action cannot be undone."; - next; - set .@j, select(" ~ ^FF0000Delete session...^000000", " ~ ^777777Cancel^000000"); - mes "[Remove Session]"; - if (.@j == 2) - mes "Cancelled."; - else { - deletearray $WOE_CONTROL[.@i*4],4; - set .Size, getarraysize($WOE_CONTROL); - mes "Session deleted."; - } - next; - break; - case 3: - mes "[Reload Settings]"; - mes "This will trigger all events related to new session configurations, if any."; - if (agitcheck() || agitcheck2()) { - mes " "; - mes "Be aware that this will disrupt the current WOE session."; - } - next; - set .@i, select(" ~ ^0055FFReload settings...^000000", " ~ ^777777Cancel^000000"); - mes "[Reload Settings]"; - if (.@i == 2) mes "Cancelled."; - else { - set .Init,1; - donpcevent "WOE_CONTROL::OnMinute00"; - mes "Variables have been re-initialized."; - } - next; - break; - case 4: - mes "[Force Agit End]"; - if (!agitcheck() && !agitcheck2()) { - mes "WOE has already ended."; - next; - break; - } - mes "This command will safely execute all AgitEnd events."; - mes " "; - mes "Kill the current WOE session?"; - next; - set .@i, select(" ~ ^FF0000End session...^000000", ((.Options&1)?" ~ ^FF0000End session without rewards...^000000": ""), " ~ ^777777Cancel^000000"); - mes "[Force Agit End]"; - if (.@i == 3) - mes "Cancelled."; - else { - set .ForceEnd, .@i; - donpcevent "WOE_CONTROL::OnWOEEnd"; - mes "WOE session terminated."; - } - next; - break; - case 5: - set .@d,1; break; - } - if (.@d) { set .@d,0; break; } - } break; - case 5: - close; - } } -} |