//===== Cronus Script ======================================= //= Guerra de Emperium - Arquivo Principal //===== Por: ================================================ //= L0ne_W0lf //===== Versão Atual: ======================================= //= 3.0 //===== Compatível com: ===================================== //= Cronus SVN //===== Descrição: ========================================== //= --------------------------------------------------------- //= - ESSE ARQUIVO É NECESSÁRIO PARA FUNÇÕES DOS CASTELOS //= --------------------------------------------------------- //= - Habilita Gerente dentro dos Castelos das Guilds. //= Nome obrigátorio visível: Agit //= Controla diversas funções usadas dentro e fora da WoE. //= //= - Habilita mordomos dentro dos Castelos das Guilds que vão investir //= na Defesa e na Economia, e invocar os guardiões, a Kafra, e entrada //= da Sala do Mestre. //= //= - Modelo de Invocação dos Guardiões //= Nome obrigátorio visível: Guardian //= Invoca guardiões do Castelo quando seus dados são recebidos. //= //= - Habilita o Serviços Kafra dentro dos Castelos. //= Nome obrigátorio visível: Kafra Staff //= Armazém, Armazém da Guild, Serviço de Teleporte, Alugel de Carrinho. //= //= - Sala do Tesouro 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. //===== Comentários Adicionais: ============================== //= 2.0 Puxado e traduzido o script para Português-BR [Asus] // - O changelog original, se encontra no fim do arquivo //= 2.1 Script corrigido [Minos & Soulblaker] //= 2.2 Corrigido bug dos mobs. [SoulBlaker] // - bugid: showissue=69, os monstros já começava mortos // - mesmo sem o Castelo estar dominado. //= 2.3 Corrigido bug do Emperium [Asus/Soulblaker] // - O emperium não aparece no Castelo com a WOE desligada. //= 2.4 Corrigido respawn dos membros que não são da guild que [SoulBlaker] // dominar o castelo. //= 2.4a Corrigido bug, no qual o emperium não sumia se a WOE // acabasse e o castelo não possuir dono. [Lord] //= 2.5 Script corrigido. [Lord] //= 2.5b Corrigido coordenadas do respaw do emperium de payg_cas01. [Lord] //= 2.6 Readicionado delay após a destruição do Emperium [Asus] //= 2.7 Anúncio de conquista do Castelo oficial, de acordo com o bRo [Asus] //= 2.8 Corrigido a checagem de Zeny ao comprar guardiões. [RoM] //= Corrigido o custo do investimento. //= O segundo investimento agora é o quadruplo do valor do primeiro. //= O investimento agora ocorre na mudança do dia. //= 2.8a Revisado. [RoM] //= 2.9 Atualizados os broadcasts. [RoM] //= 3.0 Desativado o spawn dos monstros em caso de o clã ser desfeito //= de acordo com padrão bRO. O spawn é ativado novamente caso a //= opção 'castle_mob_spawn' seja ativada no arquivo 'guild.conf' [Wilk Maia] //============================================================ // 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; // Início da Guerra do Emperium. 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; // O Emperium foi quebrado. OnAgitBreak: set .@GID,getcharid(2); set .@breaker$,strcharinfo(0); // Show and log error if an unguilded player breaks the Emperium. (Should NEVER happen) if (.@GID <= 0) { set .@notice$,"O Jogador "+strcharinfo(0)+" ("+getcharid(0)+") quebrou o Emperim no Castelo: "+strnpcinfo(2)+" enquanto estava sem Guilda. As informações não serão salvas e o Emperium reaparecerá."; 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),"O Emperium foi destruído.",bc_map|bc_woe,"0x00CCFF",FW_NORMAL,12; // 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"); MapRespawnGuildID strnpcinfo(2),.@GID,2; MapRespawnGuildID strnpcinfo(2),.@GID,4; announce "O Clã [" + getguildName(.@GID) + "] conquistou o Castelo [" + getcastlename(strnpcinfo(2)) + "] Graças ao Jogador [ "+ .@breaker$ +" ]",bc_all|bc_woe; end; // Fim da Guerra do Emperium. 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),"Guardian#"+strnpcinfo(2)+"::OnGuardianDied"; disablenpc "Kafra#"+strnpcinfo(2); SetCastleData strnpcinfo(2),0,0; // Wait before refreshing guild information. sleep getbattleflag("gvg_eliminate_time"); Announce "O Castelo [" + GetCastleName(strnpcinfo(2)) + "] foi abandonado.",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); set .@CMR, GetCastleMobRespawnInfo(); // [Wilk Maia] if (.@GID == 0) { killmonsterall strnpcinfo(2); if (compare(strnpcinfo(2),"aldeg")) { // Normal Spawns if (.@CMR) { monster strnpcinfo(2),0,0,"Druida Maligno",1117,10; monster strnpcinfo(2),0,0,"Khalitzburg",1132,4; monster strnpcinfo(2),0,0,"Cavaleiro do Abismo",1219,2; monster strnpcinfo(2),0,0,"Executor",1205,1; monster strnpcinfo(2),0,0,"Penomena",1216,10; monster strnpcinfo(2),0,0,"Alarme",1193,18; monster strnpcinfo(2),0,0,"Relógio",1269,9; monster strnpcinfo(2),0,0,"Raydric Arqueiro",1276,7; monster strnpcinfo(2),0,0,"Andarilho",1208,3; monster strnpcinfo(2),0,0,"Alice",1275,1; monster strnpcinfo(2),0,0,"Cavaleiro Sanguinário",1268,1; monster strnpcinfo(2),0,0,"Senhor das Trevas",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; } if (.@CMR) { monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Senhor das Trevas",1272,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Gerente",1270,4; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Cavaleiro Sanguinário",1268,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Cavaleiro do Abismo",1219,1; monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Raydric Arqueiro",1276,5; } } else if (compare(strnpcinfo(2),"gefg")) { // Normal Spawns if (.@CMR) { monster strnpcinfo(2),0,0,"Druida Maligno",1117,10; monster strnpcinfo(2),0,0,"Xamã do Vento",1263,11; monster strnpcinfo(2),0,0,"Bathory",1102,10; monster strnpcinfo(2),0,0,"Jakk",1130,10; monster strnpcinfo(2),0,0,"Marduk",1140,20; monster strnpcinfo(2),0,0,"Raydric",1163,9; monster strnpcinfo(2),0,0,"Alice",12