//Le Livre d'Ymir http://www.bookofymir.net/ //traduit par Myllena //===== eAthena Script ======================================= //= War of Emperium Guild Template File //===== By: ================================================== //= L0ne_W0lf //===== Current Version: ===================================== //= 1.8 //===== Compatible With: ===================================== //= eAthena SVN //===== Description: ========================================= //= [ Aegis Conversion] //= ---------------------------------------------------------- //= - THIS FILE IS REQUIRED FOR GUILD CASTLES TO FUNCTION. //= ---------------------------------------------------------- //= - Enables AGIT Manager inside Guild Strongholds. //= Visible Name required: Agit //= Manages the various functions used in and out of WoE. //= //= - Enables Stewards inside Guild Strongholds which let's //= the guild master invest in Defense and Economy, and //= to summon guardians, a Kafra, and enter master's room. //= //= - Guardian Spawning Template //= Visible Name required: Guardian //= Spawn guardians when guild castle data is recieved. //= //= - Enables Kafra Services inside Guild Strongholds. //= Visible Name required: Kafra Staff //= Storage, Guild Storage, Teleport Service, Cart rental. //= //= - Treasure Room Protection and Chest spawning. //= Chests will NOT be saved anymore in the event of crashes. //= Treasures will NOT spawn on a location that already has //= treasure chest spawned. //===== Additional Comments: ================================= //= 1.0 First Version. No longer uses functions. [L0ne_W0lf] //= 1.1 Daily investement will now be reset. [L0ne_W0lf] //= Template will no longer try to spawn chests. //= 1.2 Fixed Eco Invest option charging twice. [L0ne_W0lf] //= 1.3 Fixed a loading flag emblem for Payon 1. [L0ne_W0lf] //= Fixed two typos regarding Guild Steward name. //= 1.4 Fixed a typo in defense investment. [L0ne_W0lf] //= 1.5 Fixed spawn point of the emperium in Payon 1. [L0ne_W0lf] //= Double-investing doubles the price now. //= 1.6 Corrected Zeny check when summoning guardians. [L0ne_W0lf] //= Corrected cost for investing, thanks to Ai4rei. //= Second invest is now quadruple the value of the first //= Investing now happens at the turn of the day. //= 1.6a Corrected conditions in the new investing blocks. [L0ne_W0lf] //= 1.6b Moved where investments are added to eco/def. [L0ne_W0lf] //= 1.7 Updated Agitbreak announcements, added bc_woe [L0ne_W0lf] //= and added extended anouncement format for mapannounce. //= 1.8 Fixed a possible exploit in guild castle investment. [Brian] //============================================================ // AGIT Manager Template //============================================================ - script Gld_Agit_Manager::Gld_Agit_Manager -1,{ end; // Load (or reload) specific information for a castle. OnInterIfInitOnce: if (strnpcinfo(0) == "Gld_Agit_Manager") end; GetCastleData strnpcinfo(2),0,strnpcinfo(0) + "::OnRecvCastle"; end; // War of Emperium has started. OnAgitStart: if (strnpcinfo(0) == "Gld_Agit_Manager") end; MapRespawnGuildID strnpcinfo(2),GetCastleData(strnpcinfo(2),1),2; GvgOn strnpcinfo(2); // Spawn (fall through), or respawn the Emperium once it has been broken. OnStartArena: // OnAgitStart will fall through and spawn the Emperium. if (strnpcinfo(2) == "aldeg_cas01") { setarray .@emproom[0],216,23; } else if (strnpcinfo(2) == "aldeg_cas02") { setarray .@emproom[0],213,23; } else if (strnpcinfo(2) == "aldeg_cas03") { setarray .@emproom[0],205,31; } else if (strnpcinfo(2) == "aldeg_cas04") { setarray .@emproom[0],36,217; } else if (strnpcinfo(2) == "aldeg_cas05") { setarray .@emproom[0],27,101; } else if (strnpcinfo(2) == "gefg_cas01") { setarray .@emproom[0],197,181; } else if (strnpcinfo(2) == "gefg_cas02") { setarray .@emproom[0],176,178; } else if (strnpcinfo(2) == "gefg_cas03") { setarray .@emproom[0],244,166; } else if (strnpcinfo(2) == "gefg_cas04") { setarray .@emproom[0],174,177; } else if (strnpcinfo(2) == "gefg_cas05") { setarray .@emproom[0],194,184; } else if (strnpcinfo(2) == "payg_cas01") { setarray .@emproom[0],139,139; } else if (strnpcinfo(2) == "payg_cas02") { setarray .@emproom[0],38,25; } else if (strnpcinfo(2) == "payg_cas03") { setarray .@emproom[0],268,264; } else if (strnpcinfo(2) == "payg_cas04") { setarray .@emproom[0],270,28; } else if (strnpcinfo(2) == "payg_cas05") { setarray .@emproom[0],30,30; } else if (strnpcinfo(2) == "prtg_cas01") { setarray .@emproom[0],197,197; } else if (strnpcinfo(2) == "prtg_cas02") { setarray .@emproom[0],157,174; } else if (strnpcinfo(2) == "prtg_cas03") { setarray .@emproom[0],16,220; } else if (strnpcinfo(2) == "prtg_cas04") { setarray .@emproom[0],291,14; } else if (strnpcinfo(2) == "prtg_cas05") { setarray .@emproom[0],266,266; } // Add custom Guild Castles here. else { end; } if (!mobcount(strnpcinfo(2),"Agit#"+strnpcinfo(2)+"::OnAgitBreak")) { monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Emperium",1288,1,"Agit#"+strnpcinfo(2)+"::OnAgitBreak"; } end; // The Emperium has been broken. OnAgitBreak: set .@GID,getcharid(2); // Show and log error if an unguilded player breaks the Emperium. (Should NEVER happen) if (.@GID <= 0) { set .@notice$,"Le joueur "+strcharinfo(0)+" ("+getcharid(0)+") a détruit l'Emperium dans le Château "+strnpcinfo(2)+" alors qu'il ne possède pas de guilde. Aucune donnée sauvée, l'Emperium est restauré."; logmes .@notice$; debugmes .@notice$; donpcevent "Agit#"+strnpcinfo(2)+"::OnStartArena"; end; } // Adjust Economy Invest Level for Castle set .@Economy,GetCastleData(strnpcinfo(2),2) - 5; if (.@Economy < 0) set .@Economy, 0; SetCastleData strnpcinfo(2), 2, .@Economy; // Adjust Defense Invest Level for Castle set .@Defence,GetCastleData(strnpcinfo(2),3) - 5; if (.@Defence < 0) set .@Defence, 0; SetCastleData strnpcinfo(2), 3, .@Defence; // Set new Castle Occupant SetCastleData strnpcinfo(2),1, .@GID; // Announce that the Emperium is destroyed, and respawn all but new castle-occupants. mapannounce strnpcinfo(2),"L'Emperium a été détruit.",bc_map|bc_woe,"0x00CCFF",FW_NORMAL,12; MapRespawnGuildID strnpcinfo(2),.@GID,2; // Refresh castle data, disable Kafra and reset Invest information. GetCastleData strnpcinfo(2),0,strnpcinfo(0)+"::OnRecvCastle"; disablenpc "Kafra#"+strnpcinfo(2); for( set .@i, 4; .@i <= 9; set .@i, .@i+1 ) { SetCastleData strnpcinfo(2), .@i, 0; } // Erase Guardian Database information if the new owners do not have Guardian Research. if( getgdskilllv(.@GID,10002) == 0 ) { for( set .@i, 10; .@i <= 17; set .@i, .@i+1 ) { SetCastleData strnpcinfo(2), .@i, 0; } } // Respawn the Emperium, and display new owners. sleep 500; // Slow down script execution slightly. if( agitcheck() ) donpcevent "Agit#"+strnpcinfo(2)+"::OnStartArena"; sleep getbattleflag("gvg_eliminate_time"); announce "Le Château [" + getcastlename(strnpcinfo(2)) + "] a été pris par la guilde [" + getguildName(.@GID) + "].",bc_all|bc_woe; end; // War of Emperium has ended. OnAgitEnd: if (strnpcinfo(0) == "Gld_Agit_Manager") end; GvgOff strnpcinfo(2); // If the castle has no owner at the end of WoE, do not kill Emperium. if (GetCastleData(strnpcinfo(2),1)) { KillMonster strnpcinfo(2),"Agit#"+strnpcinfo(2)+"::OnAgitBreak"; } end; // Occupying Guild has been disbanded. OnGuildBreak: if (strnpcinfo(0) == "Gld_Agit_Manager") end; // Kill guardians, disable the Kafra, and set owner to 0. killmonster strnpcinfo(2),"Gardien#"+strnpcinfo(2)+"::OnGuardianDied"; disablenpc "Kafra#"+strnpcinfo(2); SetCastleData strnpcinfo(2),0,0; // Wait before refreshing guild information. sleep getbattleflag("gvg_eliminate_time"); Announce "Le Château [" + GetCastleName(strnpcinfo(2)) + "] a été abandonné.",0; GetCastleData strnpcinfo(2),0,strnpcinfo(0)+"::OnRecvCastle"; end; OnRecvCastle: RequestGuildInfo GetCastleData(strnpcinfo(2),1); // Spawn Monsters if the castle is empty. set .@GID, GetCastleData(strnpcinfo(2),1); if (.@GID == 0) { killmonsterall strnpcinfo(2); if (compare(strnpcinfo(2),"aldeg")) { // Normal Spawns monster strnpcinfo(2),0,0,"--ja--",1117,10; monster strnpcinfo(2),0,0,"--ja--",1132,4; monster strnpcinfo(2),0,0,"--ja--",1219,2; monster strnpcinfo(2),0,0,"--ja--",1205,1; monster strnpcinfo(2),0,0,"--ja--",1216,10; monster strnpcinfo(2),0,0,"--ja--",1193,18; monster strnpcinfo(2),0,0,"--ja--",1269,9; monster strnpcinfo(2),0,0,"--ja--",1276,7; monster strnpcinfo(2),0,0,"--ja--",1208,3; monster strnpcinfo(2),0,0,"--ja--",1275,1; monster strnpcinfo(2),0,0,"--ja--",1268,1; monster strnpcinfo(2),0,0,"--ja--",1272,1; // Set Emperium room spawn coordinates and spawn monsters. if (strnpcinfo(2) == "aldeg_cas01") { setarray .@emproom[0],216,23; } else if (strnpcinfo(2) == "aldeg_cas02") { setarray .@emproom[0],213,23; } else if (strnpcinfo(2) == "aldeg_cas03") { setarray .@emproom[0],205,31; } else if (strnpcinfo(2) == "aldeg_cas04") { setarray .@emproom[0],36,217; } else if (strnpcinfo(2) == "aldeg_cas05") { setarray .@emproom[0],27,101; } monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1272,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1270,4; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1268,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1219,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1276,5; } else if (compare(strnpcinfo(2),"gefg")) { // Normal Spawns monster strnpcinfo(2),0,0,"--ja--",1117,10; monster strnpcinfo(2),0,0,"--ja--",1263,11; monster strnpcinfo(2),0,0,"--ja--",1102,10; monster strnpcinfo(2),0,0,"--ja--",1130,10; monster strnpcinfo(2),0,0,"--ja--",1140,20; monster strnpcinfo(2),0,0,"--ja--",1163,9; monster strnpcinfo(2),0,0,"--ja--",1275,1; monster strnpcinfo(2),0,0,"--ja--",1219,1; monster strnpcinfo(2),0,0,"--ja--",1150,1; monster strnpcinfo(2),0,0,"--ja--",1159,1; // Set Emperium room spawn coordinates and spawn monsters. if (strnpcinfo(2) == "gefg_cas01") { setarray .@emproom[0],197,181; } else if (strnpcinfo(2) == "gefg_cas02") { setarray .@emproom[0],176,178; } else if (strnpcinfo(2) == "gefg_cas03") { setarray .@emproom[0],244,166; } else if (strnpcinfo(2) == "gefg_cas04") { setarray .@emproom[0],174,177; } else if (strnpcinfo(2) == "gefg_cas05") { setarray .@emproom[0],194,184; } monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1203,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1087,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1213,10; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1189,10; } else if (compare(strnpcinfo(2),"payg")) { // Normal Spawns monster strnpcinfo(2),0,0,"--ja--",1277,9; monster strnpcinfo(2),0,0,"--ja--",1208,10; monster strnpcinfo(2),0,0,"--ja--",1262,5; monster strnpcinfo(2),0,0,"--ja--",1102,5; monster strnpcinfo(2),0,0,"--ja--",1150,1; monster strnpcinfo(2),0,0,"--ja--",1115,1; monster strnpcinfo(2),0,0,"--ja--",1129,11; monster strnpcinfo(2),0,0,"--ja--",1276,5; monster strnpcinfo(2),0,0,"--ja--",1282,4; monster strnpcinfo(2),0,0,"--ja--",1253,5; // Set Emperium room spawn coordinates and spawn monsters. if (strnpcinfo(2) == "payg_cas01") { setarray .@emproom[0],139,139; } else if (strnpcinfo(2) == "payg_cas02") { setarray .@emproom[0],38,25; } else if (strnpcinfo(2) == "payg_cas03") { setarray .@emproom[0],268,264; } else if (strnpcinfo(2) == "payg_cas04") { setarray .@emproom[0],270,28; } else if (strnpcinfo(2) == "payg_cas05") { setarray .@emproom[0],30,30; } monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1150,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1115,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1208,6; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1276,5; } else if (compare(strnpcinfo(2),"prtg")) { // Normal Spawns monster strnpcinfo(2),0,0,"--ja--",1163,1; monster strnpcinfo(2),0,0,"--ja--",1132,10; monster strnpcinfo(2),0,0,"--ja--",1219,5; monster strnpcinfo(2),0,0,"--ja--",1268,5; monster strnpcinfo(2),0,0,"--ja--",1251,1; monster strnpcinfo(2),0,0,"--ja--",1252,1; monster strnpcinfo(2),0,0,"--ja--",1276,5; monster strnpcinfo(2),0,0,"--ja--",1259,2; monster strnpcinfo(2),0,0,"--ja--",1283,3; monster strnpcinfo(2),0,0,"--ja--",1275,1; monster strnpcinfo(2),0,0,"--ja--",1200,1; // Set Emperium room spawn coordinates and spawn monsters. if (strnpcinfo(2) == "prtg_cas01") { setarray .@emproom[0],197,197; } else if (strnpcinfo(2) == "prtg_cas02") { setarray .@emproom[0],157,174; } else if (strnpcinfo(2) == "prtg_cas03") { setarray .@emproom[0],16,220; } else if (strnpcinfo(2) == "prtg_cas04") { setarray .@emproom[0],291,14; } else if (strnpcinfo(2) == "prtg_cas05") { setarray .@emproom[0],266,266; } monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1268,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1251,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1252,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1219,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"--ja--",1276,5; } // Add custom Guild Castles here. else { end; } donpcevent "Agit#"+strnpcinfo(2)+"::OnStartArena"; // Disable Kafra Staff... disablenpc "Kafra#"+strnpcinfo(2); end; } else { // Otherwise place the guild emblem on flags. if (strnpcinfo(2) == "aldeg_cas01") { donpcevent "::OnRecvCastleA01"; } else if (strnpcinfo(2) == "aldeg_cas02") { donpcevent "::OnRecvCastleA02"; } else if (strnpcinfo(2) == "aldeg_cas03") { donpcevent "::OnRecvCastleA03"; } else if (strnpcinfo(2) == "aldeg_cas04") { donpcevent "::OnRecvCastleA04"; } else if (strnpcinfo(2) == "aldeg_cas05") { donpcevent "::OnRecvCastleA05"; } else if (strnpcinfo(2) == "gefg_cas01") { donpcevent "::OnRecvCastleG01"; } else if (strnpcinfo(2) == "gefg_cas02") { donpcevent "::OnRecvCastleG02"; } else if (strnpcinfo(2) == "gefg_cas03") { donpcevent "::OnRecvCastleG03"; } else if (strnpcinfo(2) == "gefg_cas04") { donpcevent "::OnRecvCastleG04"; } else if (strnpcinfo(2) == "gefg_cas05") { donpcevent "::OnRecvCastleG05"; } else if (strnpcinfo(2) == "payg_cas01") { donpcevent "::OnRecvCastlePy01"; } else if (strnpcinfo(2) == "payg_cas02") { donpcevent "::OnRecvCastlePy02"; } else if (strnpcinfo(2) == "payg_cas03") { donpcevent "::OnRecvCastlePy03"; } else if (strnpcinfo(2) == "payg_cas04") { donpcevent "::OnRecvCastlePy04"; } else if (strnpcinfo(2) == "payg_cas05") { donpcevent "::OnRecvCastlePy05"; } else if (strnpcinfo(2) == "prtg_cas01") { donpcevent "::OnRecvCastlePt01"; } else if (strnpcinfo(2) == "prtg_cas02") { donpcevent "::OnRecvCastlePt02"; } else if (strnpcinfo(2) == "prtg_cas03") { donpcevent "::OnRecvCastlePt03"; } else if (strnpcinfo(2) == "prtg_cas04") { donpcevent "::OnRecvCastlePt04"; } else if (strnpcinfo(2) == "prtg_cas05") { donpcevent "::OnRecvCastlePt05"; } // Add custom Guild Castles here. else { end; } // And load purchased Guardian in castles. donpcevent "Gardien#"+strnpcinfo(2)+"::OnSpawnGuardians"; // And display Kafra if purchased. if (GetCastleData(strnpcinfo(2),9) < 1) disablenpc "Kafra#"+strnpcinfo(2); } end; } // Guild Steward Template //============================================================ - script Gld_Mngr_Template::Gld_Mngr_Template -1,{ // What is the Display Name of the NPC? set .@name$,strnpcinfo(1); // Store the Guild ID of castle occupant. set .@GID, GetCastleData(strnpcinfo(2),1); // Define the types of guardians on a per castle basis. // 1 - Soldier Guardian; 2 - Archer Guardian; 3 - Knight Guardian // Define the x spawn point for each uardian. // [0] = 1st guardian's x spawn point. // Define the y spawn point for each guardian. // [0] = 1st guardian's y spawn point. // Define the coordinates of the "Treasure Room." // Aldebaran (Luina) Castles if (strnpcinfo(2) == "aldeg_cas01") { setarray .@guardiantype[0],1,2,2,2,2,3,3,3; setarray .@guardianposx[0],17,39,38,45,21,218,213,73; setarray .@guardianposy[0],218,208,196,228,194,24,24,70; setarray .@masterroom[0],113,223; } else if (strnpcinfo(2) == "aldeg_cas02") { setarray .@guardiantype[0],3,3,3,1,1,2,2,2; setarray .@guardianposx[0],27,88,117,60,51,21,36,210; setarray .@guardianposy[0],184,43,46,202,183,177,183,7; setarray .@masterroom[0],134,225; } else if (strnpcinfo(2) == "aldeg_cas03") { setarray .@guardiantype[0],3,3,1,1,1,2,2,2; setarray .@guardianposx[0],90,116,86,116,64,212,195,110; setarray .@guardianposy[0],112,112,120,76,103,160,151,217; setarray .@masterroom[0],229,267; } else if (strnpcinfo(2) == "aldeg_cas04") { setarray .@guardiantype[0],2,2,2,1,1,1,3,3; setarray .@guardianposx[0],187,192,148,145,169,198,48,55; setarray .@guardianposy[0],100,42,88,209,53,77,72,88; setarray .@masterroom[0],83,17; } else if (strnpcinfo(2) == "aldeg_cas05") { setarray .@guardiantype[0],2,2,1,1,3,3,3,3; setarray .@guardianposx[0],51,188,157,157,27,145,156,41; setarray .@guardianposy[0],202,79,192,74,221,78,73,112; setarray .@masterroom[0],64,8; } // Geffen (Britoniah) Castles else if (strnpcinfo(2) == "gefg_cas01") { setarray .@guardiantype[0],1,1,1,2,2,3,3,3; setarray .@guardianposx[0],67,184,62,36,50,50,189,200; setarray .@guardianposy[0],179,20,41,186,186,67,41,167; setarray .@masterroom[0],152,117; } else if (strnpcinfo(2) == "gefg_cas02") { setarray .@guardiantype[0],1,1,1,2,2,3,3,3; setarray .@guardianposx[0],64,56,166,35,20,19,166,159; setarray .@guardianposy[0],168,41,25,148,150,41,42,188; setarray .@masterroom[0],145,115; } else if (strnpcinfo(2) == "gefg_cas03") { setarray .@guardiantype[0],2,2,1,1,1,3,3,3; setarray .@guardianposx[0],48,113,48,157,243,157,234,238; setarray .@guardianposy[0],176,214,207,62,41,45,25,160; setarray .@masterroom[0],275,289; } else if (strnpcinfo(2) == "gefg_cas04") { setarray .@guardiantype[0],2,2,1,1,1,3,3,3; setarray .@guardianposx[0],53,31,49,29,147,57,160,148; setarray .@guardianposy[0],191,178,220,46,65,46,50,189; setarray .@masterroom[0],116,123; } else if (strnpcinfo(2) == "gefg_cas05") { setarray .@guardiantype[0],2,2,1,1,1,3,3,3; setarray .@guardianposx[0],45,71,72,66,177,66,177,193; setarray .@guardianposy[0],149,163,142,47,50,17,35,166; setarray .@masterroom[0],149,106; } // Payon (Baulder) Castles else if (strnpcinfo(2) == "payg_cas01") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],229,225,222,99,65,36,51,138; setarray .@guardianposy[0],92,80,111,45,31,127,144,133; setarray .@masterroom[0],295,8; } else if (strnpcinfo(2) == "payg_cas02") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],237,228,210,57,42,287,264,27; setarray .@guardianposy[0],54,72,41,241,241,257,272,20; setarray .@masterroom[0],141,149; } else if (strnpcinfo(2) == "payg_cas03") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],245,269,36,41,39,19,37,268; setarray .@guardianposy[0],37,51,39,39,65,276,277,244; setarray .@masterroom[0],163,167; } else if (strnpcinfo(2) == "payg_cas04") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],251,232,231,32,32,35,36,270; setarray .@guardianposy[0],212,212,175,287,232,45,17,41; setarray .@masterroom[0],151,47; } else if (strnpcinfo(2) == "payg_cas05") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],19,33,266,266,263,263,250,36; setarray .@guardianposy[0],279,260,234,279,37,21,22,36; setarray .@masterroom[0],153,137; } // Prontera (Valkyrie Realms) Castles else if (strnpcinfo(2) == "prtg_cas01") { setarray .@guardiantype[0],1,1,1,2,2,3,3,3; setarray .@guardianposx[0],182,182,153,59,50,184,196,107; setarray .@guardianposy[0],62,116,86,28,36,183,189,179; setarray .@masterroom[0],15,209; } else if (strnpcinfo(2) == "prtg_cas02") { setarray .@guardiantype[0],3,3,3,1,1,2,2,2; setarray .@guardianposx[0],161,153,178,71,49,64,7,75; setarray .@guardianposy[0],161,161,44,75,28,186,196,175; setarray .@masterroom[0],207,229; } else if (strnpcinfo(2) == "prtg_cas03") { setarray .@guardiantype[0],3,3,3,1,1,2,2,2; setarray .@guardianposx[0],191,137,45,50,41,191,179,191; setarray .@guardianposy[0],190,190,99,87,87,42,43,72; setarray .@masterroom[0],190,130; } else if (strnpcinfo(2) == "prtg_cas04") { setarray .@guardiantype[0],3,3,3,1,1,1,2,2; setarray .@guardianposx[0],276,274,246,38,29,33,78,36; setarray .@guardianposy[0],14,35,246,240,240,258,48,61; setarray .@masterroom[0],275,160; } else if (strnpcinfo(2) == "prtg_cas05") { setarray .@guardiantype[0],3,3,3,1,1,1,2,2; setarray .@guardianposx[0],266,287,245,236,251,278,32,44; setarray .@guardianposy[0],262,280,250,63,63,253,253,248; setarray .@masterroom[0],281,176; } // Add custom Guild Castles here. else { end; } mes "[ Steward " + .@name$ + " ]"; if (.@GID == 0) { mes "J'attends le retour de mon maître."; mes "Si vous souhaitez lui parler, vous devrez l'attendre également."; close; } if (getcharid(2) != .@GID || strcharinfo(0) != getguildmaster(.@GID)){ mes "Je suis employé ici afin de suivre les ordres de Maître ^ff0000" + getguildmaster(.@GID) + "^000000. En tant que Gardien de ce château, je le défendrai jusqu'à la mort!"; close; } mes "Bienvenue, vénérable Maître ^ff0000" + getguildmaster(.@GID) + "^000000..."; mes "Je suis à votre humble service pour vous assister du mieux possible."; next; switch(select("Résumé de l'état du Château:Investissements Commerciaux:Investissements Défensifs:Mise en Place de Gardiens:Emploi ou Renvoi d'une Kafra:Entrer dans la Salle des Coffres")) { case 1: mes "[ Steward " + .@name$ + " ]"; mes "Voici le résumé des investissements du château, Maître."; mes " "; mes " ^0000ffLe taux d'investissement commercial est de " + GetCastleData(strnpcinfo(2),2) + "."; if (GetCastleData(strnpcinfo(2),4)) { mes " Vous avez investi " + GetCastleData(strnpcinfo(2),4) + " fois aujourd'hui."; } mes " Le taux d'investissement défensif est de " + GetCastleData(strnpcinfo(2),3) + ".^000000"; if (GetCastleData(strnpcinfo(2),5)) { mes " ^0000ff- Vous avez investi " + GetCastleData(strnpcinfo(2),5) + " fois aujourd'hui.^000000"; } mes " "; mes "C'est tout pour le moment, Maître."; close; case 2: set .@Economy,GetCastleData(strnpcinfo(2),2); if (.@Economy < 6) { set .@eco_invest,5000; } else if ((.@Economy >= 6) && (.@Economy <= 10)) { set .@eco_invest,10000; } else if ((.@Economy >= 11) && (.@Economy <= 15)) { set .@eco_invest,20000; } else if ((.@Economy >= 16) && (.@Economy <= 20)) { set .@eco_invest,35000; } else if ((.@Economy >= 21) && (.@Economy <= 25)) { set .@eco_invest,55000; } else if ((.@Economy >= 26) && (.@Economy <= 30)) { set .@eco_invest,80000; } else if ((.@Economy >= 31) && (.@Economy <= 35)) { set .@eco_invest,110000; } else if ((.@Economy >= 36) && (.@Economy <= 40)) { set .@eco_invest,145000; } else if ((.@Economy >= 41) && (.@Economy <= 45)) { set .@eco_invest,185000; } else if ((.@Economy >= 46) && (.@Economy <= 50)) { set .@eco_invest,230000; } else if ((.@Economy >= 51) && (.@Economy <= 55)) { set .@eco_invest,280000; } else if ((.@Economy >= 56) && (.@Economy <= 60)) { set .@eco_invest,335000; } else if ((.@Economy >= 61) && (.@Economy <= 65)) { set .@eco_invest,395000; } else if ((.@Economy >= 66) && (.@Economy <= 70)) { set .@eco_invest,460000; } else if ((.@Economy >= 71) && (.@Economy <= 75)) { set .@eco_invest,530000; } else if ((.@Economy >= 76) && (.@Economy <= 80)) { set .@eco_invest,605000; } else if ((.@Economy >= 81) && (.@Economy <= 85)) { set .@eco_invest,685000; } else if ((.@Economy >= 86) && (.@Economy <= 90)) { set .@eco_invest,770000; } else if ((.@Economy >= 91) && (.@Economy <= 95)) { set .@eco_invest,860000; } else if ((.@Economy >= 96) && (.@Economy <= 100)) { set .@eco_invest,955000; } //Quadruple the cost of investing if you've already invested once. if (GetCastleData(strnpcinfo(2),4)) { set .@eco_invest,.@eco_invest*4; } mes "[ Steward " + .@name$ + " ]"; mes "Grâce aux Investissements Commerciaux, la production de la Guilde augmentera. Si vous espérez un avenir prospère, un investissement serait un bon placement."; mes " "; mes "Vous pouvez investir jusqu'à deux fois par jour. La seconde fois vous coûtera plus cher."; mes " "; if (.@Economy == 100) { mes "^ff0000L'Investissement Commercial de notre Château est à son maximum. Vous êtes un Maître très dévoué, comme je m'en doutais.^000000"; close; } if (GetCastleData(strnpcinfo(2),4) >= 2) { mes "^ff0000Vous avez déjà investi deux fois aujourd'hui, c'est le maximum possible.^000000 J'espère que nos richesses ne cesseront de s'accroître!"; close; } if (GetCastleData(strnpcinfo(2),4) == 0) { mes "L'argent nécessaire pour cet investissement est de ^ff0000" + .@eco_invest + "^000000 Zenys. Souhaitez-vous investir?"; } else { mes "Vous avez déjà investi une fois aujourd'hui, vous pouvez investir à nouveau pour ^ff0000" + .@eco_invest + "^000000 Zenys."; } next; switch(select("Investir en Commerce.:Annuler")) { case 1: if (GetCastleData(strnpcinfo(2),4) >= 2) { mes "[ Steward " + .@name$ + " ]"; mes "Je suis désolé mais vous avez déjà investi deux fois aujourd'hui. Vous ne pouvez investir plus."; close; } if (Zeny < .@eco_invest) { mes "[ Steward " + .@name$ + " ]"; mes "Maître, vous n'avez pas assez d'argent pour investir. L'investissement est donc annulé."; close; } set zeny,zeny-.@eco_invest; SetCastleData strnpcinfo(2),4,GetCastleData(strnpcinfo(2),4)+1; mes "[ Steward " + .@name$ + "]"; mes "L'investissement a été pris en compte. J'espère que notre prospérité s'accroîtra demain également."; close; case 2: mes "[ Steward " + .@name$ + " ]"; mes "Je ferai selon vos instructions, Maître... Rien n'est impossible à accomplir pour vous et votre guilde."; close; } case 3: set .@Defence,GetCastleData(strnpcinfo(2),3); if (.@Defence < 6) { set .@def_invest,10000; } else if ((.@Defence >= 6) && (.@Defence <= 10)) { set .@def_invest,20000; } else if ((.@Defence >= 11) && (.@Defence <= 15)) { set .@def_invest,40000; } else if ((.@Defence >= 16) && (.@Defence <= 20)) { set .@def_invest,70000; } else if ((.@Defence >= 21) && (.@Defence <= 25)) { set .@def_invest,110000; } else if ((.@Defence >= 26) && (.@Defence <= 30)) { set .@def_invest,160000; } else if ((.@Defence >= 31) && (.@Defence <= 35)) { set .@def_invest,220000; } else if ((.@Defence >= 36) && (.@Defence <= 40)) { set .@def_invest,290000; } else if ((.@Defence >= 41) && (.@Defence <= 45)) { set .@def_invest,370000; } else if ((.@Defence >= 46) && (.@Defence <= 50)) { set .@def_invest,460000; } else if ((.@Defence >= 51) && (.@Defence <= 55)) { set .@def_invest,560000; } else if ((.@Defence >= 56) && (.@Defence <= 60)) { set .@def_invest,670000; } else if ((.@Defence >= 61) && (.@Defence <= 65)) { set .@def_invest,790000; } else if ((.@Defence >= 66) && (.@Defence <= 70)) { set .@def_invest,920000; } else if ((.@Defence >= 71) && (.@Defence <= 75)) { set .@def_invest,1060000; } else if ((.@Defence >= 76) && (.@Defence <= 80)) { set .@def_invest,1210000; } else if ((.@Defence >= 81) && (.@Defence <= 85)) { set .@def_invest,1370000; } else if ((.@Defence >= 86) && (.@Defence <= 90)) { set .@def_invest,1540000; } else if ((.@Defence >= 91) && (.@Defence <= 95)) { set .@def_invest,1720000; } else if ((.@Defence >= 96) && (.@Defence <= 100)) { set .@def_invest,1910000; } //Quadruple the cost of investing if you've already invested once. if (GetCastleData(strnpcinfo(2),5)) { set .@def_invest,.@def_invest*4; } mes "[ Steward " + .@name$ + " ]"; mes "Grâce aux Investissements Défensifs, les Gardiens et l'Emperium deviendront plus résistants. Si vous souhaitez accroître vos défenses à l'avenir, un investissement est nécessaire."; mes " "; mes "Vous pouvez investir jusqu'à deux fois par jour. La seconde fois vous coûtera plus cher."; mes " "; if (.@Defence == 100) { mes "^ff0000L'investissement défensif de ce château a déjà atteint le maximum de 100 points. Il n'est plus nécessaire d'investir à nouveau.^000000"; close; } if (GetCastleData(strnpcinfo(2),5) >= 2) { mes "^ff0000Vous avez déjà investi deux fois aujourd'hui, c'est le maximum possible.^000000 J'espère que nos défenses ne cesseront de s'accroître!"; close; } if (GetCastleData(strnpcinfo(2),5) == 0) { mes "L'argent nécessaire pour cet investissement est de ^ff0000" + .@def_invest + "^000000 Zenys. Souhaitez-vous investir?"; } else { mes "Vous avez déjà investi une fois aujourd'hui, vous pouvez investir à nouveau pour ^ff0000" + .@def_invest + "^000000 Zenys."; } next; switch(select("Investir en Défense.:Annuler")) { case 1: if (GetCastleData(strnpcinfo(2),5) >= 2) { mes "[ Steward " + .@name$ + " ]"; mes "Je suis désolé mais vous avez déjà investi deux fois aujourd'hui. Vous ne pouvez investir plus."; close; } if (Zeny < .@def_invest) { mes "[ Steward " + .@name$ + " ]"; mes "Maître, vous n'avez pas assez d'argent pour investir. L'investissement est donc annulé."; close; } set zeny,zeny-.@def_invest; SetCastleData strnpcinfo(2),5,GetCastleData(strnpcinfo(2),5)+1; mes "[ Steward " + .@name$ + "]"; mes "L'investissement a été pris en compte. J'espère que notre défense s'accroîtra demain également."; close; case 2: mes "[ Steward " + .@name$ + " ]"; mes "Je ferai selon vos instructions, Maître... Rien n'est impossible à accomplir pour vous et votre guilde."; close; } case 4: mes "[ Steward " + .@name$ + " ]"; mes "Voulez vous invoquer un Gardien? Ce sera un protecteur dévoué."; mes "Veuillez choisir un Gardien."; next; for( set .@i, 0; .@i <= 7 ; set .@i, .@i+1 ) { if (.@guardiantype[.@i] == 1) { set .@type$,"Gardien Soldat"; } else if (.@guardiantype[.@i] == 2) { set .@type$,"Gardien Archer"; } else { set .@type$,"Gardien Chevalier"; } if (guardianinfo(strnpcinfo(2),.@i,0)) { setarray .@gname$[.@i], .@type$ + " - En Place (" + guardianinfo(strnpcinfo(2),.@i,2) + "/" + guardianinfo(strnpcinfo(2),.@i,1) + ")"; } else { setarray .@gname$[.@i], .@type$ + " - Non Déployé"; } } set .@menu$,.@gname$[0]+":"+.@gname$[1]+":"+.@gname$[2]+":"+.@gname$[3]+":"+.@gname$[4]+":"+.@gname$[5]+":"+.@gname$[6]+":"+.@gname$[7]; set .@GDnum,select(.@menu$)+9; mes "[ Steward " + .@name$ + " ]"; mes "Voulez-vous réellement mettre en place un Gardien? Cela vous coûtera 10 000 Zenys."; next; switch(select("Mise en Place:Annuler")) { case 1: mes "[ Steward " + .@name$ + " ]"; if (getgdskilllv(.@GID,10002) == 0) { mes "Maître, je suis désolé, mais vous ne pouvez pas mettre en place de Gardiens pour le moment. Votre Guilde doit d'abord apprendre la compétence ^ff0000Connaissance des Gardiens^000000."; mes "La mise en place de Gardiens a été annulée."; close; } if (GetCastleData(strnpcinfo(2),.@GDnum) == 1) { mes "Maître, ce Gardien a déjà été mis en place..."; close; } if (Zeny < 10000) { mes "Je suis désolé, Maître, mais vous n'avez pas assez d'argent. La mise en place de Gardiens a été annulée."; close; } set zeny,zeny-10000; SetCastleData strnpcinfo(2),.@GDnum,1; // mark as 'installed' set .@UseGID,.@GDnum - 10; if (.@guardiantype[.@UseGID] == 1) { set .@type,1287; } else if (.@guardiantype[.@UseGID] == 2) { set .@type,1285; } else { set .@type,1286; } guardian strnpcinfo(2),.@guardianposx[.@UseGID],.@guardianposy[.@UseGID],strmobinfo(2,.@type),.@type,"Gardien#"+strnpcinfo(2)+"::OnGuardianDied",.@UseGID; mes "Un Gardien a été mis en place. Il protègera le château des attaques ennemies."; close; case 2: mes "[ Steward " + .@name$ + " ]"; mes "J'ai fait selon vos ordres, Maître, mais je vous recommande tout de même la mise en place de Gardiens pour notre défense."; close; } case 5: if (GetCastleData(strnpcinfo(2),9) == 1) { mes "[ Steward " + .@name$ + " ]"; mes "Nous employons actuellement une Employée Kafra... Voulez vous renvoyer l'actuelle Employée Kafra?"; next; switch(select("Renvoyer:Annuler")) { case 1: cutin "kafra_01",2; mes "[ Employée Kafra ]"; mes "J'ai travaillé de mon mieux... Maître, je vous l'assure!... Je travaillerais plus encore s'il le faut si vous êtes mécontent, mais s'il vous plaît... ne me renvoyez pas, Maître."; next; switch(select("Renvoyer:Annuler")) { case 1: mes "[ Employée Kafra ]"; mes "Je suis confuse de ne pas avoir réussi à servir votre Guilde comme j'aurais dû...."; next; cutin "kafra_01",255; break; case 2: mes "[ Employée Kafra ]"; mes "Je travaillerai dur pour vous... Merci!"; close2; cutin "kafra_01",255; end; } break; case 2: mes "[ Steward " + .@name$ + " ]"; mes "Elle est très travailleuse, vous avez raison de le garder à votre service."; close; } disablenpc "Kafra#"+strnpcinfo(2); SetCastleData strnpcinfo(2),9,0; mes "[ Steward " + .@name$ + " ]"; mes "...."; mes "J'ai renvoyé l'Employée Kafra... Mais... Êtes-vous satisfait de votre décision?"; close; } else { mes "[ Steward " + .@name$ + " ]"; mes "Voulez-vous contacter la Corporation Kafra pour engager une Employée dans votre Château?"; mes "^ff000010 000 Zenys sont nécessaires pour leurs services."; next; switch(select("Engager.:Annuler")) { case 1: mes "[ Steward " + .@name$ + " ]"; if (getgdskilllv(.@GID,10001) == 0) { mes "Maître, vous n'avez pas de contrat avec la Corporation Kafra."; mes "Afin de pouvoir employer une Kafra, votre guilde doit d'abord apprendre la compétence ^ff0000Contrat Kafra^000000."; close; } if (Zeny < 10000) { mes "Maître, vous n'avez pas assez d'argent. L'emploi d'une Kafra a été annulé."; close; } set zeny,zeny-10000; enablenpc "Kafra#"+strnpcinfo(2); SetCastleData strnpcinfo(2),9,1; mes "Vous avez passé un contrat avec la Corporation Kafra."; next; cutin "kafra_01",2; mes "[ Employée Kafra ]"; mes "C'est un honneur de pouvoir vous proposer mes services. Je vous aiderai au mieux."; next; cutin "kafra_01",255 ; mes "[ Steward " + .@name$ + " ]"; mes "Le contrat avec la Corporation Kafra dure 1 mois. Après cela, vous devrez de nouveau payer pour renouveler le contrat."; mes "Je pense que l'Employée Kafra sera très bénéfique pour les membres de la Guilde."; close; case 2: mes "[ Steward " + .@name$ + " ]"; mes "J'ai fait selon vos ordres, mais je vous suggère d'employer une Kafra très bientôt!"; close; } } case 6: mes "[ Steward " + .@name$ + " ]"; mes "Voulez-vous vous rendre dans la Salle des Coffres? Seul vous, le Chef de Guilde, êtes autorisé à entrer dans cette salle."; next; switch(select("Entrer.:Annuler")) { case 1: mes "[ Steward " + .@name$ + " ]"; mes "Suivez-moi, je vais vous montrer le passage secret pour y accéder."; mes "Vous devrez activer le petit levier dans la salle afin d'en ressortir."; close2; warp strnpcinfo(2),.@masterroom[0],.@masterroom[1]; end; case 2: mes "[ Steward " + .@name$ + " ]"; mes "Nous recevons des coffres chaque jour."; mes "Vous devriez en prendre possession chaque fois que vous le pouvez."; close; } } } // Guardian Spawner Template //============================================================ - script Gld_Guard_Template::Gld_Guard_Template -1,{ // Spawn Guardians in castles // When adding new castles, ensure that the coordinates coincide // with the coordinates defined in the Guild Steward template. OnSpawnGuardians: // Define the types of guardians on a per castle basis. // 1 - Soldier Guardian; 2 - Archer Guardian; 3 - Knight Guardian // Define the x spawn point for each uardian. // [0] = 1st guardian's x spawn point. // Define the y spawn point for each uardian. // [0] = 1st guardian's y spawn point. // Aldebaran (Luina) Castles if (strnpcinfo(2) == "aldeg_cas01") { setarray .@guardiantype[0],1,2,2,2,2,3,3,3; setarray .@guardianposx[0],17,39,38,45,21,218,213,73; setarray .@guardianposy[0],218,208,196,228,194,24,24,70; } else if (strnpcinfo(2) == "aldeg_cas02") { setarray .@guardiantype[0],3,3,3,1,1,2,2,2; setarray .@guardianposx[0],27,88,117,60,51,21,36,210; setarray .@guardianposy[0],184,43,46,202,183,177,183,7; } else if (strnpcinfo(2) == "aldeg_cas03") { setarray .@guardiantype[0],3,3,1,1,1,2,2,2; setarray .@guardianposx[0],90,116,86,116,64,212,195,110; setarray .@guardianposy[0],112,112,120,76,103,160,151,217; } else if (strnpcinfo(2) == "aldeg_cas04") { setarray .@guardiantype[0],2,2,2,1,1,1,3,3; setarray .@guardianposx[0],187,192,148,145,169,198,48,55; setarray .@guardianposy[0],100,42,88,209,53,77,72,88; } else if (strnpcinfo(2) == "aldeg_cas05") { setarray .@guardiantype[0],2,2,1,1,3,3,3,3; setarray .@guardianposx[0],51,188,157,157,27,145,156,41; setarray .@guardianposy[0],202,79,192,74,221,78,73,112; } // Geffen (Britoniah) Castles else if (strnpcinfo(2) == "gefg_cas01") { setarray .@guardiantype[0],1,1,1,2,2,3,3,3; setarray .@guardianposx[0],67,184,62,36,50,50,189,200; setarray .@guardianposy[0],179,20,41,186,186,67,41,167; } else if (strnpcinfo(2) == "gefg_cas02") { setarray .@guardiantype[0],1,1,1,2,2,3,3,3; setarray .@guardianposx[0],64,56,166,35,20,19,166,159; setarray .@guardianposy[0],168,41,25,148,150,41,42,188; } else if (strnpcinfo(2) == "gefg_cas03") { setarray .@guardiantype[0],2,2,1,1,1,3,3,3; setarray .@guardianposx[0],48,113,48,157,243,157,234,238; setarray .@guardianposy[0],176,214,207,62,41,45,25,160; } else if (strnpcinfo(2) == "gefg_cas04") { setarray .@guardiantype[0],2,2,1,1,1,3,3,3; setarray .@guardianposx[0],53,31,49,29,147,57,160,148; setarray .@guardianposy[0],191,178,220,46,65,46,50,189; } else if (strnpcinfo(2) == "gefg_cas05") { setarray .@guardiantype[0],2,2,1,1,1,3,3,3; setarray .@guardianposx[0],45,71,72,66,177,66,177,193; setarray .@guardianposy[0],149,163,142,47,50,17,35,166; } // Payon (Baulder) Castles else if (strnpcinfo(2) == "payg_cas01") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],229,225,222,99,65,36,51,138; setarray .@guardianposy[0],92,80,111,45,31,127,144,133; } else if (strnpcinfo(2) == "payg_cas02") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],237,228,210,57,42,287,264,27; setarray .@guardianposy[0],54,72,41,241,241,257,272,20; } else if (strnpcinfo(2) == "payg_cas03") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],245,269,36,41,39,19,37,268; setarray .@guardianposy[0],37,51,39,39,65,276,277,244; } else if (strnpcinfo(2) == "payg_cas04") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],251,232,231,32,32,35,36,270; setarray .@guardianposy[0],212,212,175,287,232,45,17,41; } else if (strnpcinfo(2) == "payg_cas05") { setarray .@guardiantype[0],2,2,2,2,2,2,2,3; setarray .@guardianposx[0],19,33,266,266,263,263,250,36; setarray .@guardianposy[0],279,260,234,279,37,21,22,36; } // Prontera (Valkyrie Realms) Castles else if (strnpcinfo(2) == "prtg_cas01") { setarray .@guardiantype[0],1,1,1,2,2,3,3,3; setarray .@guardianposx[0],182,182,153,59,50,184,196,107; setarray .@guardianposy[0],62,116,86,28,36,183,189,179; } else if (strnpcinfo(2) == "prtg_cas02") { setarray .@guardiantype[0],3,3,3,1,1,2,2,2; setarray .@guardianposx[0],161,153,178,71,49,64,7,75; setarray .@guardianposy[0],161,161,44,75,28,186,196,175; } else if (strnpcinfo(2) == "prtg_cas03") { setarray .@guardiantype[0],3,3,3,1,1,2,2,2; setarray .@guardianposx[0],191,137,45,50,41,191,179,191; setarray .@guardianposy[0],190,190,99,87,87,42,43,72; } else if (strnpcinfo(2) == "prtg_cas04") { setarray .@guardiantype[0],3,3,3,1,1,1,2,2; setarray .@guardianposx[0],276,274,246,38,29,33,78,36; setarray .@guardianposy[0],14,35,246,240,240,258,48,61; } else if (strnpcinfo(2) == "prtg_cas05") { setarray .@guardiantype[0],3,3,3,1,1,1,2,2; setarray .@guardianposx[0],266,287,245,236,251,278,32,44; setarray .@guardianposy[0],262,280,250,63,63,253,253,248; } // Add custom Guild Castles here. else { end; } // Kill all existing guardians before spawning new ones. // This should prevent duplicating Guardians when char Server disconnects. killmonster strnpcinfo(2),strnpcinfo(0)+"::OnGuardianDied"; for( set .@i, 0; .@i <= 7 ; set .@i, .@i+1 ) { set .@UseGID,.@i + 10; if (.@guardiantype[.@i] == 1) { set .@type,1287; } else if (.@guardiantype[.@i] == 2) { set .@type,1285; } else { set .@type,1286; } if (GetCastleData(strnpcinfo(2),.@UseGID)) { guardian strnpcinfo(2),.@guardianposx[.@i],.@guardianposy[.@i],strmobinfo(2,.@type),.@type,"Gardien#"+strnpcinfo(2)+"::OnGuardianDied",.@i; } } end; OnGuardianDied: end; } // Kafra Template //============================================================ - script Gld_Kafra_Template::Gld_Kafra_Template -1,{ // Store the Guild ID of castle occupant. set .@GID, GetCastleData(strnpcinfo(2),1); if (compare(strnpcinfo(2),"aldeg")) { setarray .@destination$[0],"Al De Baran","aldebaran"; setarray .@coordinates[0],132,103; } else if (compare(strnpcinfo(2),"gefg")) { setarray .@destination$[0],"Geffen","geffen"; setarray .@coordinates[0],120,39; } else if (compare(strnpcinfo(2),"payg")) { setarray .@destination$[0],"Payon","payon"; setarray .@coordinates[0],70,100; } else if (compare(strnpcinfo(2),"prtg")) { setarray .@destination$[0],"Prontera","prontera"; setarray .@coordinates[0],116,72; } // Add custom Guild Castles here. else { end; } cutin "kafra_01",2; if (getcharid(2) == .@GID) { mes "[Employée Kafra]"; mes "Bienvenue, membre de la Guilde ^ff0000" + getguildname(.@GID) + "^000000."; mes "La Corporation Kafra vous accompagne où que vous alliez!"; next; switch(select("Ouvrir mon Stock:Ouvrir le Stock de Guilde:Service de Téléportation:Louer une Charrette:Annuler")) { case 1: if (basicskillcheck() && getskilllv(1) < 6) { mes "[Employée Kafra]"; mes "Je suis désolée, mais vous devez être un Novice de Niveau de Métier 6 au minimum pour pouvoir consulter votre stock."; } else { callfunc("F_CheckKafCode"); //check your storage password, if set openstorage; } break; case 2: // Unofficial, but since it's already been in eA for ages // and used, I can't exactly remove it, now, can I? >:( if(guildopenstorage() == 1){ mes "[Employée Kafra]"; mes "Je suis désolée, mais un autre membre de la guilde est déjà en train de consulter le stock."; mes "Veuillez patienter jusqu'à ce que ce membre ait terminé."; close2; cutin "", 255; end; } cutin "", 255; close; case 3: mes "[Employée Kafra]"; mes "Où souhaitez-vous aller?"; next; switch(select(.@destination$ + " ^880000200 ^000000z:Annuler")) { case 1: if (Zeny < 200) { mes "[Employée Kafra]"; mes "Je suis désolée, mais vous n'avez pas assez d'argent pour accéder à ce service."; } else { set zeny,zeny-200; set kf_10_pit,kf_10_pit+2; cutin "kafra_01",255; warp .@destination$[1],.@coordinates[0],.@coordinates[1]; end; } break; case 2: break; } break; case 4: if(baseClass != Job_Merchant){ mes "[Employée Kafra]"; mes "Je suis désolée, mais la location de charrettes n'est proposée qu'aux Marchands, Forgerons et Alchimistes."; } else if(checkcart() == 1){ mes "[Employée Kafra]"; mes "Désolée... Mais vous avez déjà une Charrette...."; } else if(!getskilllv(39)){ // Bugfix: on check si le perso a appris la compétence mes "[Employée Kafra]"; mes "Je suis désolée, mais vous n'avez pas encore passé votre Permis Charrette!"; } else { mes "[Employée Kafra]"; mes "La location de charrette coûte 800 Zenys. Acceptez-vous ce tarif?"; next; switch(select("Oui.:Annuler.")) { case 1: if (Zeny < 800) { mes "[Employée Kafra]"; mes "Je suis désolée, mais vous n'avez pas assez d'argent pour accéder à ce service."; } else { close2; cutin "kafra_01",255; set kf_10_pit,kf_10_pit+8; set zeny,zeny-800; setcart; end; } break; case 2: break; } } break; case 5: mes "[Employée Kafra]"; mes "La Corporation Kafra restera toujours à votre disposition."; mes "Merci d'avoir utilisé nos services. A bientôt."; } } else { mes "[Employée Kafra]"; mes "Je suis employée ici afin de servir les membres de la Guilde ^ff0000" + getguildname(.@GID) + "^000000 uniquement. Merci de vous adresser à un autre Agent de la Corporation Kafra."; } close2; cutin "kafra_01",255; end; } // Guild Dungeon Switch Template //============================================================ - script Gld_Dun_Template::Gld_Dun_Template -1,{ // Store the Guild ID of castle occupant. set .@GID, GetCastleData(strnpcinfo(2),1); // Pick what Dungeon I should warp too, and where in that dungeon. if (compare(strnpcinfo(2),"aldeg")) { set .@destination$,"gld_dun02"; if (compare(strnpcinfo(2),"cas01")) setarray .@coordinates[0],32,122; else if (compare(strnpcinfo(2),"cas02")) setarray .@coordinates[0],79,32; else if (compare(strnpcinfo(2),"cas03")) setarray .@coordinates[0],165,38; else if (compare(strnpcinfo(2),"cas04")) setarray .@coordinates[0],160,148; else if (compare(strnpcinfo(2),"cas05")) setarray .@coordinates[0],103,169; } else if (compare(strnpcinfo(2),"gefg")) { set .@destination$,"gld_dun04"; if (compare(strnpcinfo(2),"cas01")) setarray .@coordinates[0],39,258; else if (compare(strnpcinfo(2),"cas02")) setarray .@coordinates[0],125,270; else if (compare(strnpcinfo(2),"cas03")) setarray .@coordinates[0],268,251; else if (compare(strnpcinfo(2),"cas04")) setarray .@coordinates[0],268,108; else if (compare(strnpcinfo(2),"cas05")) setarray .@coordinates[0],230,35; } else if (compare(strnpcinfo(2),"payg")) { set .@destination$,"gld_dun01"; if (compare(strnpcinfo(2),"cas01")) setarray .@coordinates[0],186,165; else if (compare(strnpcinfo(2),"cas02")) setarray .@coordinates[0],54,165; else if (compare(strnpcinfo(2),"cas03")) setarray .@coordinates[0],54,39; else if (compare(strnpcinfo(2),"cas04")) setarray .@coordinates[0],186,39; else if (compare(strnpcinfo(2),"cas05")) setarray .@coordinates[0],223,202; } else if (compare(strnpcinfo(2),"prtg")) { set .@destination$,"gld_dun03"; if (compare(strnpcinfo(2),"cas01")) setarray .@coordinates[0],28,251; else if (compare(strnpcinfo(2),"cas02")) setarray .@coordinates[0],164,268; else if (compare(strnpcinfo(2),"cas03")) setarray .@coordinates[0],164,179; else if (compare(strnpcinfo(2),"cas04")) setarray .@coordinates[0],268,203; else if (compare(strnpcinfo(2),"cas05")) setarray .@coordinates[0],199,28; } // Add custom Guild Castles here. else { end; } if (.@GID == 0) { mes "[ Voix Mystérieuse ]"; mes " ' Seul les braves pourront trouver la voie... ' "; close; } else { mes "[ Voix Mystérieuse ]"; mes " ' Seuls les braves peuvent franchir cette limite... '"; next; mes " "; mes "(Vous remarquez un petit levier....... Voulez-vous l'activer?)"; next; switch(select("Activer.:Ne rien faire.")) { case 1: if ((getcharid(2) == .@GID)) { warp .@destination$,.@coordinates[0],.@coordinates[1]; end; } else { mes " "; mes " Rien ne se produit."; close; } case 2: close; } } } // Treasure Room Protection Template //============================================================ - script Gld_Trea_Protect::Gld_Trea_Protect -1,{ //OnTouch2: OnTouch: // Store the Guild ID of castle occupant. set .@GID, GetCastleData(strnpcinfo(2),1); if (strcharinfo(0) != getguildmaster(.@GID)) { if (compare(strnpcinfo(2),"aldeg")) { warp "aldebaran",132,103; } else if (compare(strnpcinfo(2),"gefg")) { warp "geffen",120,39; } else if (compare(strnpcinfo(2),"payg")) { warp "payon",70,100; } else if (compare(strnpcinfo(2),"prtg")) { warp "prontera",116,72; } // Add custom Guild Castles here. else { end; } } end; } // Treasure Room Spawn Template //============================================================ - script Gld_Trea_Spawn::Gld_Trea_Spawn -1,{ end; OnClock0001: // Do nothing if this script is the template. if (strnpcinfo(1) == "Gld_Trea_Spawn") end; set .@GID, GetCastleData(strnpcinfo(2),1); // If there is no owner, do nothing. if (!.@GID) end; // Is there Economy in this castle? set .@Treasure,GetCastleData(strnpcinfo(2),2)/5+4; // Set information if (strnpcinfo(2) == "aldeg_cas01") { set .@treasurebox,1324; setarray .@treasurex[0],115,122,115,122,116,117,118,119,120,121,121,121,121,121,121,120,119,118,117,116,116,116,116,116; setarray .@treasurey[0],226,226,219,219,225,225,225,225,225,225,224,223,222,221,220,220,220,220,220,220,221,222,223,224; } else if (strnpcinfo(2) == "aldeg_cas02") { set .@treasurebox,1326; setarray .@treasurex[0],134,135,135,134,132,133,134,135,136,137,137,137,137,137,137,136,135,134,133,132,132,132,132,132; setarray .@treasurey[0],231,231,230,230,233,233,233,233,233,233,232,231,230,229,228,228,228,228,228,228,229,230,231,232; } else if (strnpcinfo(2) == "aldeg_cas03") { set .@treasurebox,1328; setarray .@treasurex[0],224,225,225,224,222,223,224,225,226,227,227,227,227,227,227,226,225,224,223,222,222,222,222,222; setarray .@treasurey[0],269,269,268,268,271,271,271,271,271,271,270,269,268,267,266,266,266,266,266,266,267,268,269,270; } else if (strnpcinfo(2) == "aldeg_cas04") { set .@treasurebox,1330; setarray .@treasurex[0],84,85,85,84,82,83,84,85,86,87,87,87,87,87,87,86,85,84,83,82,82,82,82,82; setarray .@treasurey[0],13,13,12,12,15,15,15,15,15,15,14,13,12,11,10,10,10,10,10,10,11,12,13,14; } else if (strnpcinfo(2) == "aldeg_cas05") { set .@treasurebox,1332; setarray .@treasurex[0],61,62,62,61,59,60,61,62,63,64,64,64,64,64,64,63,62,61,60,59,59,59,59,59; setarray .@treasurey[0],12,12,11,11,14,14,14,14,14,14,13,12,11,10,9,9,9,9,9,9,10,11,12,13; } else if (strnpcinfo(2) == "gefg_cas01") { set .@treasurebox,1334; setarray .@treasurex[0],153,154,154,153,151,152,153,154,155,156,156,156,156,156,156,155,154,153,152,151,151,151,151,151; setarray .@treasurey[0],113,113,112,112,115,115,115,115,115,115,114,113,112,111,110,110,110,110,110,110,111,112,113,114; } else if (strnpcinfo(2) == "gefg_cas02") { set .@treasurebox,1336; setarray .@treasurex[0],139,140,140,139,137,138,139,140,141,142,142,142,142,142,142,141,140,139,138,137,137,137,137,137; setarray .@treasurey[0],115,115,114,114,117,117,117,117,117,117,116,115,114,113,112,112,112,112,112,112,113,114,115,116; } else if (strnpcinfo(2) == "gefg_cas03") { set .@treasurebox,1338; setarray .@treasurex[0],269,270,270,269,267,268,269,270,271,272,272,272,272,272,272,271,270,269,268,267,267,267,267,267; setarray .@treasurey[0],291,291,290,290,293,293,293,293,293,293,292,291,290,289,288,288,288,288,288,288,289,290,291,292; } else if (strnpcinfo(2) == "gefg_cas04") { set .@treasurebox,1340; setarray .@treasurex[0],115,116,116,115,113,114,115,116,117,118,118,118,118,118,118,117,116,115,114,113,113,113,113,113; setarray .@treasurey[0],119,119,118,118,121,121,121,121,121,121,120,119,118,117,116,116,116,116,116,116,117,118,119,120; } else if (strnpcinfo(2) == "gefg_cas05") { set .@treasurebox,1342; setarray .@treasurex[0],143,144,144,143,141,142,143,144,145,146,146,146,146,146,146,145,144,143,142,141,141,141,141,141; setarray .@treasurey[0],110,110,109,109,112,112,112,112,112,112,111,110,109,108,107,107,107,107,107,107,108,109,110,111; } else if (strnpcinfo(2) == "payg_cas01") { set .@treasurebox,1344; setarray .@treasurex[0],289,292,292,289,288,289,290,291,292,293,293,293,293,293,293,292,291,290,289,288,288,288,288,288; setarray .@treasurey[0],10,10,7,7,11,11,11,11,11,11,10,9,8,7,6,6,6,6,6,6,7,8,9,10; } else if (strnpcinfo(2) == "payg_cas02") { set .@treasurebox,1346; setarray .@treasurex[0],143,146,146,143,142,143,144,145,146,147,147,147,147,147,147,146,145,144,143,142,142,142,142,142; setarray .@treasurey[0],146,146,143,143,147,147,147,147,147,147,146,145,144,143,142,142,142,142,142,142,143,144,145,146; } else if (strnpcinfo(2) == "payg_cas03") { set .@treasurebox,1348; setarray .@treasurex[0],158,159,159,158,156,157,158,159,160,161,161,161,161,161,161,160,159,158,157,156,156,156,156,156; setarray .@treasurey[0],169,169,168,168,171,171,171,171,171,171,170,169,168,167,166,166,166,166,166,166,167,168,169,170; } else if (strnpcinfo(2) == "payg_cas04") { set .@treasurebox,1350; setarray .@treasurex[0],146,147,147,146,144,145,146,147,148,149,149,149,149,149,149,148,147,146,145,144,144,144,144,144; setarray .@treasurey[0],48,48,47,47,50,50,50,50,50,50,49,48,47,46,45,45,45,45,45,45,46,47,48,49; } else if (strnpcinfo(2) == "payg_cas05") { set .@treasurebox,1352; setarray .@treasurex[0],155,158,158,155,154,155,156,157,158,159,159,159,159,159,159,158,157,156,155,154,154,154,154,154; setarray .@treasurey[0],134,134,131,131,135,135,135,135,135,135,134,133,132,131,130,130,130,130,130,130,131,132,133,134; } else if (strnpcinfo(2) == "prtg_cas01") { set .@treasurebox,1354; setarray .@treasurex[0],10,11,11,10,8,9,10,11,12,13,13,13,13,13,13,12,11,10,9,8,8,8,8,8; setarray .@treasurey[0],209,209,208,208,211,211,211,211,211,211,210,209,208,207,206,206,206,206,206,206,207,208,209,210; } else if (strnpcinfo(2) == "prtg_cas02") { set .@treasurebox,1356; setarray .@treasurex[0],201,202,202,201,199,200,201,202,203,204,204,204,204,204,204,203,202,201,200,199,199,199,199,199; setarray .@treasurey[0],228,228,227,227,230,230,230,230,230,230,229,228,227,226,225,225,225,225,225,225,226,227,228,229; } else if (strnpcinfo(2) == "prtg_cas03") { set .@treasurebox,1358; setarray .@treasurex[0],187,188,188,187,185,186,187,188,189,190,190,190,190,190,190,189,188,187,186,185,185,185,185,185; setarray .@treasurey[0],132,132,131,131,134,134,134,134,134,134,133,132,131,130,129,129,129,129,129,129,130,131,132,133; } else if (strnpcinfo(2) == "prtg_cas04") { set .@treasurebox,1360; setarray .@treasurex[0],269,270,270,269,267,268,269,270,271,272,272,272,272,272,272,271,270,269,268,267,267,267,267,267; setarray .@treasurey[0],162,162,161,161,164,164,164,164,164,164,163,162,161,160,159,159,159,159,159,159,160,161,162,163; } else if (strnpcinfo(2) == "prtg_cas05") { set .@treasurebox,1362; setarray .@treasurex[0],275,276,276,275,273,274,275,276,277,278,278,278,278,278,278,277,276,275,274,273,273,273,273,273; setarray .@treasurey[0],178,178,177,177,180,180,180,180,180,180,179,178,177,176,175,175,175,175,175,175,176,177,178,179; } // Add custom Guild Castles here. else { end; } // Apply investment to Eco. and Def. Only happens if there were investments made. // Permanent Development can only happen once per day. if (GetCastleData(strnpcinfo(2),4)) { set .@Economy,GetCastleData(strnpcinfo(2),2); SetCastleData strnpcinfo(2),2,.@Economy + GetCastleData(strnpcinfo(2),4) + (rand(2) && getgdskilllv(.@GID,10014)); if (GetCastleData(strnpcinfo(2),2) > 100) SetCastleData strnpcinfo(2),2,100; } if (GetCastleData(strnpcinfo(2),5)) { set .@Defence,GetCastleData(strnpcinfo(2),3); SetCastleData strnpcinfo(2),3,.@Defence + GetCastleData(strnpcinfo(2),5); if (GetCastleData(strnpcinfo(2),3) > 100) SetCastleData strnpcinfo(2),3,100; } // Reset daily investment limits. setcastledata strnpcinfo(2),4,0; setcastledata strnpcinfo(2),5,0; // Spawn boxes in proper order. for (set .@i,0; .@i < .@Treasure ; set .@i,.@i+1) { // set treasure box ID set .@boxid, .@treasurebox + (.@i+2) % 2; set .@box,1 << .@i; // Spawn or do not spawn chests if one already exists. if ((getd("$@"+strnpcinfo(2)+"_treasure") & .@box) == 0) { monster strnpcinfo(2),.@treasurex[.@i],.@treasurey[.@i],"Coffre",.@boxid,1,"Coffre#"+strnpcinfo(2)+"::OnTreasureDied"+.@i; setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") | .@box; } } end; // Individual "You killed a chest" events to ensure proper spawning at the change of day. OnTreasureDied0: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~1; end; OnTreasureDied1: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~2; end; OnTreasureDied2: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~4; end; OnTreasureDied3: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~8; end; OnTreasureDied4: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~16; end; OnTreasureDied5: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~32; end; OnTreasureDied6: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~64; end; OnTreasureDied7: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~128; end; OnTreasureDied8: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~256; end; OnTreasureDied9: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~512; end; OnTreasureDied10: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~1024; end; OnTreasureDied11: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~2048; end; OnTreasureDied12: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~4096; end; OnTreasureDied13: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~8192; end; OnTreasureDied14: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~16384; end; OnTreasureDied15: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~32768; end; OnTreasureDied16: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~65536; end; OnTreasureDied17: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~131072; end; OnTreasureDied18: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~262144; end; OnTreasureDied19: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~524288; end; OnTreasureDied20: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~1048576; end; OnTreasureDied21: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~2097152; end; OnTreasureDied22: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~4194304; end; OnTreasureDied23: setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~8388608; end; }