From 8832adba3ec9df0f7f890154f69f0993b8d1d8e5 Mon Sep 17 00:00:00 2001 From: daegaladh Date: Wed, 1 Aug 2012 04:29:56 +0000 Subject: Full npc folder reorganization. (I hope I didn't break anything D:) -Now common scripts goes to the main npc folder, and pre-re-only/re-only ones goes to their respective folders. -NPCs with practically the same script but little differences have been left in the main folder and uses the command checkre() for the differences. -For those NPCs with different coordinates but same script, the script has been left in the main folder but the NPCs splitted as duplicates. -All pre-renewal files has been reverted back to their pre-renewal behavior. TODO: -Correct pre-re quest rewards. -Check for pre-re/re differences in mapflags. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16545 54d463be-8e91-2dee-dedb-b68131a5f0ec --- npc/events/nguild/nguild_dunsw.txt | 67 ++++++++++ npc/events/nguild/nguild_ev_agit.txt | 216 +++++++++++++++++++++++++++++++++ npc/events/nguild/nguild_flags.txt | 192 +++++++++++++++++++++++++++++ npc/events/nguild/nguild_guardians.txt | 89 ++++++++++++++ npc/events/nguild/nguild_kafras.txt | 71 +++++++++++ npc/events/nguild/nguild_managers.txt | 174 ++++++++++++++++++++++++++ npc/events/nguild/nguild_treas.txt | 167 +++++++++++++++++++++++++ npc/events/nguild/nguild_warper.txt | 111 +++++++++++++++++ 8 files changed, 1087 insertions(+) create mode 100644 npc/events/nguild/nguild_dunsw.txt create mode 100644 npc/events/nguild/nguild_ev_agit.txt create mode 100644 npc/events/nguild/nguild_flags.txt create mode 100644 npc/events/nguild/nguild_guardians.txt create mode 100644 npc/events/nguild/nguild_kafras.txt create mode 100644 npc/events/nguild/nguild_managers.txt create mode 100644 npc/events/nguild/nguild_treas.txt create mode 100644 npc/events/nguild/nguild_warper.txt (limited to 'npc/events/nguild') diff --git a/npc/events/nguild/nguild_dunsw.txt b/npc/events/nguild/nguild_dunsw.txt new file mode 100644 index 000000000..8a34362f3 --- /dev/null +++ b/npc/events/nguild/nguild_dunsw.txt @@ -0,0 +1,67 @@ +//===== rAthena Script ======================================= +//= War of Emperium Dungeon Switch for NGuild Castles +//===== By: ================================================== +//= kobra_k88 +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= rAthena 0.1+; RO Episode 4+ +//===== Description: ========================================= +//= Switch that warps guild members to the guild dungeon +//===== Additional Comments: ================================= +//= Based off existing guild scripts. Do not know if it is accurate.[kobra_k88] +//= 1.1 Guild Dungeon Switch Fucntion added. [L0ne_W0lf] +//============================================================ + + +//================================================== +function script F_GldDunSw { + set .@GID, GetCastleData(getarg(0),1); + if (.@GID == 0) { + mes "[ Echoing Voice ]"; + mes " ' The one who can overcome an ordeal and show true bravery... will find the way... ' "; + close; + } + else { + mes "[ Echoing Voice ]"; + mes " ' Only the one who can show true bravery can take this test. '"; + next; + mes " "; + mes "There's a small lever. Will you pull it?"; + next; + + if (select("Pull.:Do not.") == 1) { + if (getcharid(2) == .@GID) { + warp "gld_dun"+getarg(1),getarg(2),getarg(3); + end; + } + mes " "; + mes " Nothing happened."; + } + return; + } +} + +// Castle 1 =============================================== +nguild_alde,212,181,0 script Switch#DunN01 111,{ + callfunc "F_GldDunSw","nguild_alde","02",32,122; + close; +} + +// Castle 2 =============================================== +nguild_gef,78,84,0 script Switch#DunN02 111,{ + callfunc "F_GldDunSw","nguild_gef","04",39,258; + close; +} + +// Castle 3 =============================================== +nguild_pay,101,25,0 script Switch#DunN03 111,{ + callfunc "F_GldDunSw","nguild_pay","01",186,165; + close; +} + +// Castle 4 =============================================== +nguild_prt,94,200,0 script Switch#DunN04 111,{ + callfunc "F_GldDunSw","nguild_prt","03",28,251; + close; +} diff --git a/npc/events/nguild/nguild_ev_agit.txt b/npc/events/nguild/nguild_ev_agit.txt new file mode 100644 index 000000000..1dad83b83 --- /dev/null +++ b/npc/events/nguild/nguild_ev_agit.txt @@ -0,0 +1,216 @@ +//===== rAthena Script ======================================= +//= War of Emperium - NGuild Wars Events +//===== By: ================================================== +//= kobra_k88 +//===== Current Version: ===================================== +//= 1.5 +//===== Compatible With: ===================================== +//= rAthena 0.1+; RO Episode 4+ +//===== Description: ========================================= +//= Event Triggers for NGuild Wars +//===== Additional Comments: ================================= +// Based off existing guild scripts. Do not know if it is accurate.[kobra_k88] +//= 1.3 Added code for abandoning captured castles on /breakguild [Lupus] +//= 1.4 AGIT Functions added, treasure spawning added. [L0ne_W0lf] +//= 1.5 Emperium should now properly respawn. [L0ne_W0lf] +//============================================================ + + +// Function for OnAgitStart ========================================= +function script F_AgitStart { + set .@map$, getarg(0); + set .@castle$, getarg(1); + set .@empx, getarg(2); + set .@empy, getarg(3); + + MapRespawnGuildID .@map$,GetCastleData(.@map$,1),2; + monster .@map$,.@empx,.@empy,"Emperium",1288,1,"Agit_"+.@castle$+"::OnAgitBreak"; + GvgOn .@map$; + if (GetCastleData(.@map$,1) != 0) return; + end; +} + +// Function for OnGuildBreak ====================================== +function script F_GuildBreak { + set .@map$, getarg(0); + set .@castle$, getarg(1); + + killmonsterall .@map$; + + Announce "Guild Base [" + GetCastleName(.@map$) + "] has been abandoned.",0; + disablenpc "Kafra Staff#"+.@castle$; + + SetCastleData .@map$,0,0; + return; +} + +// Function for OnAgitBreak ====================================== +function script F_AgitBreak { + set .@map$, getarg(0); + set .@castle$, getarg(1); + + set .@GID,getcharid(2); + if (.@GID <= 0) return; + + set .@Economy,GetCastleData(.@map$,2) - 5; + if (.@Economy < 0) set .@Economy, 0; + SetCastleData .@map$, 2, .@Economy; + + set .@Defence,GetCastleData(.@map$,3) - 5; + if (.@Defence < 0) set .@Defence, 0; + SetCastleData .@map$, 3, .@Defence; + + SetCastleData .@map$,1, .@GID; + MapAnnounce .@map$,"The emperium has been destroyed.",bc_map,0x00CCFF; + Announce "The [" + GetCastleName(.@map$) + "] castle has been conquered by the [" + GetGuildName(.@GID) + "] guild.",bc_all; + donpcevent "::OnRecvCastle"+.@castle$; + + disablenpc "Kafra Staff#"+.@castle$; + + // remove investment data and kafra + for( set .@i, 4; .@i <= 9; set .@i, .@i+1 ) + SetCastleData .@map$, .@i, 0; + + // if the new guild doesn't have Guardian Research, erase guardians + if( getgdskilllv(.@GID,10002) == 0 ) + for( set .@i, 10; .@i <= 17; set .@i, .@i+1 ) + SetCastleData .@map$, .@i, 0; + + return; +} + + +// Function for OnAgitEnd ====================================== +function script F_AgitEnd { + set .@map$, getarg(0); + set .@castle$, getarg(1); + + GvgOff .@map$; + // Disable the following if statment to keep empty + // castles from being aquired after after WoE ends. + if (GetCastleData(.@map$,1) == 0) return; + MapRespawnGuildID .@map$,GetCastleData(.@map$,1),4; + KillMonster .@map$,"Agit_"+.@castle$+"::OnAgitBreak"; + end; +} + +// Castle 1 ================================================================ +nguild_alde,0,0,0 script Agit_N01 -1,{ +OnInterIfInitOnce: + donpcevent "::OnRecvCastleN01"; + end; +OnRecvCastleN01: + RequestGuildInfo GetCastleData("nguild_alde",1); + end; +OnAgitStart: + callfunc "F_AgitStart","nguild_alde","N01",216,24; + end; +OnAgitBreak: + callfunc "F_AgitBreak","nguild_alde","N01"; + goto OnAgitEliminate; + end; +OnGuildBreak: + callfunc "F_GuildBreak","nguild_alde","N01"; + end; +OnAgitEliminate: + MapRespawnGuildID "nguild_alde",GetCastleData("nguild_alde",1),6; + Monster "nguild_alde",216,24,"EMPERIUM",1288,1,"Agit_N01::OnAgitBreak"; + end; +OnAgitEnd: + callfunc "F_AgitEnd","nguild_alde","N01"; + end; +} + +// Castle 2 ================================================================ +nguild_gef,0,0,0 script Agit_N02 -1,{ +OnInterIfInitOnce: + donpcevent "::OnRecvCastleN02"; + end; +OnRecvCastleN02: + RequestGuildInfo GetCastleData("nguild_gef",1); + end; +OnAgitStart: + callfunc "F_AgitStart","nguild_gef","N02",198,182; + end; +OnAgitBreak: + callfunc "F_AgitBreak","nguild_gef","N02"; + goto OnAgitEliminate; + end; +OnGuildBreak: + callfunc "F_GuildBreak","nguild_gef","N02"; + end; +OnAgitEliminate: + MapRespawnGuildID "nguild_gef",GetCastleData("nguild_gef",1),6; + Monster "nguild_gef",198,182,"EMPERIUM",1288,1,"Agit_N02::OnAgitBreak"; + end; +OnAgitEnd: + callfunc "F_AgitEnd","nguild_gef","N02"; + end; +} + +// Castle 3 ================================================================ +nguild_pay,0,0,0 script Agit_N03 -1,{ +OnInterIfInitOnce: + donpcevent "::OnRecvCastleN03"; + end; +OnRecvCastleN03: + RequestGuildInfo GetCastleData("nguild_pay",1); + end; +OnAgitStart: + callfunc "F_AgitStart","nguild_pay","N03",139,139; + end; +OnAgitBreak: + callfunc "F_AgitBreak","nguild_pay","N03"; + goto OnAgitEliminate; + end; +OnGuildBreak: + callfunc "F_GuildBreak","nguild_pay","N03"; + end; +OnAgitEliminate: + MapRespawnGuildID "nguild_pay",GetCastleData("nguild_pay",1),6; + Monster "nguild_pay",139,139,"EMPERIUM",1288,1,"Agit_N03::OnAgitBreak"; + end; +OnAgitEnd: + callfunc "F_AgitEnd","nguild_pay","N03"; + end; +} + +// Castle 4 ================================================================ +nguild_prt,0,0,0 script Agit_N04 -1,{ +OnInterIfInitOnce: + donpcevent "::OnRecvCastleN04"; + end; +OnRecvCastleN04: + RequestGuildInfo GetCastleData("nguild_prt",1); + end; +OnAgitStart: + callfunc "F_AgitStart","nguild_prt","N04",197,197; + end; +OnAgitBreak: + callfunc "F_AgitBreak","nguild_prt","N04"; + goto OnAgitEliminate; + end; +OnGuildBreak: + callfunc "F_GuildBreak","nguild_prt","N04"; + end; +OnAgitEliminate: + MapRespawnGuildID "nguild_prt",GetCastleData("nguild_prt",1),6; + Monster "nguild_prt",197,197,"EMPERIUM",1288,1,"Agit_N04::OnAgitBreak"; + end; +OnAgitEnd: + callfunc "F_AgitEnd","nguild_prt","N04"; + end; +} + +// Treasure Spawn Time +//======================================== +- script TreasSpawn -1,{ + end; + +OnClock0005: + callfunc "F_GldTreas","nguild_alde","N01",$boxNumN01,$@bxN01,$@boxIdN01,1324,114,218,123,227,0; + callfunc "F_GldTreas","nguild_gef","N02",$boxNumN02,$@bxN02,$@boxIdN02,1334,150,108,158,114,0; + callfunc "F_GldTreas","nguild_pay","N03",$boxNumN03,$@bxN03,$@boxIdN03,1344,286,4,295,13,0; + callfunc "F_GldTreas","nguild_prt","N04",$boxNumN04,$@bxN04,$@boxIdN04,1354,6,204,15,213,0; + end; +} diff --git a/npc/events/nguild/nguild_flags.txt b/npc/events/nguild/nguild_flags.txt new file mode 100644 index 000000000..1642c4419 --- /dev/null +++ b/npc/events/nguild/nguild_flags.txt @@ -0,0 +1,192 @@ +//===== rAthena Script ======================================= +//= War of Emperium N Guild Flags +//===== By: ================================================== +//= kobra_k88 +//===== Current Version: ===================================== +//= 1.3 +//===== Compatible With: ===================================== +//= rAthena 0.1+; RO Episode 4+ +//===== Description: ========================================= +//= WoE flag scripts. Display guild emblems on flags. +//===== Additional Comments: ================================= +// Based off existing guild scripts. Do not know if it is accurate.[kobra_k88] +// 1.1 Inner Flags don't teleport you to your HQ anymore [Lupus] +// 1.2 updated flags to use the new arguments. [L0ne__W0lf] +// 1.3 Guild flag function added. [L0ne_W0lf] +//============================================================ + +/// Flag Function +//============================================================ +function script F_Flags { + set .@GID, GetCastleData(getarg(1),1); + if (getarg(5) == 0) return; + if (.@GID == 0) { + mes " [ Edict of the Divine Rune Midgard Kingdom ]"; + mes " "; + mes "1. Follow the ordinance of The Divine Rune Midgard Kingdom, "; + mes "We declare that"; + mes "there is no formal master of this castle."; + mes " "; + mes "2. To the one who can "; + mes "overcome all trials"; + mes "and destroy the Emperium,"; + mes "the king will endow the one with"; + mes "ownership of this castle."; + return; + } + else { + if (getcharid(2) == .@GID && getarg(4) == 1) { + mes "Brave ones..."; + mes "Do you wish to return to your honorable place?"; + next; + if (select("Return to the guild castle.:Quit.") == 1) { + if (getcharid(2) == GetCastleData(getarg(1),1)) + warp getarg(1),getarg(2),getarg(3); + } + return; + } + mes "[ Edict of the Divine Rune Midgard Kingdom ]"; + mes " "; + mes "1. Following the ordinance of the"; + mes "Divine Rune Midgard Kingdom,"; + mes "we approve that this place is in"; + mes "the private possession of ^ff0000" + GetGuildName(.@GID) + "^000000 Guild."; + mes " "; + mes "2. The guild Master of ^ff0000"+ GetGuildName(.@GID) + "^000000 Guild is"; + mes "^FF0000" + GetGuildMaster(.@GID) + "^000000"; + mes "If there is anyone who objects to this,"; + mes " prove your strength and honor with a steel blade in your hand."; + return; + } +} + +//============================================================================// +// Castle 1 +//============================================================================// +n_castle,110,96,1 script NGuild Aldebaran#a1-1 722,{ + callfunc "F_Flags","Al De Baran","nguild_alde",218,170,1,1; + close; + +OnRecvCastleN01: + FlagEmblem GetCastleData("nguild_alde",1); + end; +} + +nguild_alde,30,248,4 script NGuild Aldebaran#a1-6::NGuildAlde 722,{ + callfunc "F_Flags","Al De Baran","nguild_alde",218,170,0,1; + close; + +OnRecvCastleN01: + FlagEmblem GetCastleData("nguild_alde",1); + end; +} +// In Castle ============================================ +nguild_alde,30,246,4 duplicate(NGuildAlde) NGuild Aldebaran#a1-7 722 +nguild_alde,37,248,4 duplicate(NGuildAlde) NGuild Aldebaran#a1-8 722 +nguild_alde,37,246,4 duplicate(NGuildAlde) NGuild Aldebaran#a1-9 722 +nguild_alde,95,80,2 duplicate(NGuildAlde) NGuild Aldebaran#a1-10 722 +nguild_alde,95,59,2 duplicate(NGuildAlde) NGuild Aldebaran#a1-11 722 +nguild_alde,62,75,2 duplicate(NGuildAlde) NGuild Aldebaran#a1-12 722 +nguild_alde,70,75,2 duplicate(NGuildAlde) NGuild Aldebaran#a1-13 722 +nguild_alde,74,75,2 duplicate(NGuildAlde) NGuild Aldebaran#a1-14 722 +nguild_alde,62,64,2 duplicate(NGuildAlde) NGuild Aldebaran#a1-15 722 +nguild_alde,66,64,2 duplicate(NGuildAlde) NGuild Aldebaran#a1-16 722 +nguild_alde,70,64,2 duplicate(NGuildAlde) NGuild Aldebaran#a1-17 722 +nguild_alde,74,64,2 duplicate(NGuildAlde) NGuild Aldebaran#a1-18 722 +nguild_alde,203,150,4 duplicate(NGuildAlde) NGuild Aldebaran#a1-19 722 +nguild_alde,210,150,4 duplicate(NGuildAlde) NGuild Aldebaran#a1-20 722 + + + + +//============================================================================// +// Castle 2 +//============================================================================// +n_castle,110,109,3 script NGuild Geffen#g1-1 722,{ + callfunc "F_Flags","Geffen","nguild_gef",83,47,1,1; + close; + +OnRecvCastleN02: + FlagEmblem GetCastleData("nguild_gef",1); + end; +} + +nguild_gef,28,157,4 script NGuild Geffen#g1-6::NGuildGef 722,{ + callfunc "F_Flags","Geffen","nguild_gef",83,47,0,1; + close; + +OnRecvCastleN02: + FlagEmblem GetCastleData("nguild_gef",1); + end; +} +// In Castle ============================================= +nguild_gef,32,157,4 duplicate(NGuildGef) NGuild Geffen#g1-7 722 +nguild_gef,22,156,5 duplicate(NGuildGef) NGuild Geffen#g1-8 722 +nguild_gef,68,185,3 duplicate(NGuildGef) NGuild Geffen#g1-9 722 +nguild_gef,17,171,5 duplicate(NGuildGef) NGuild Geffen#g1-10 722 +nguild_gef,59,16,4 duplicate(NGuildGef) NGuild Geffen#g1-11 722 +nguild_gef,64,16,4 duplicate(NGuildGef) NGuild Geffen#g1-12 722 + + + +//============================================================================// +// Castle 3 +//============================================================================// +n_castle,94,109,5 script NGuild Payon#f1-1 722,{ + callfunc "F_Flags","Payon","nguild_pay",87,29,1,1; + close; + +OnRecvCastleN03: + FlagEmblem GetCastleData("nguild_pay",1); + end; +} + +nguild_pay,238,67,4 script NGuild Payon#f1-6::NGuildPay 722,{ + callfunc "F_Flags","Payon","nguild_pay",87,29,0,1; + close; + +OnRecvCastleN03: + FlagEmblem GetCastleData("nguild_pay",1); + end; +} +// In Castle =============================================== +nguild_pay,238,67,4 duplicate(NGuildPay) NGuild Payon#f1-6 722 +nguild_pay,233,67,4 duplicate(NGuildPay) NGuild Payon#f1-7 722 +nguild_pay,221,123,4 duplicate(NGuildPay) NGuild Payon#f1-8 722 +nguild_pay,221,116,4 duplicate(NGuildPay) NGuild Payon#f1-9 722 +nguild_pay,206,108,4 duplicate(NGuildPay) NGuild Payon#f1-10 722 +nguild_pay,212,108,4 duplicate(NGuildPay) NGuild Payon#f1-11 722 + + + + +//=============================================================================// +// Castle 4 +//=============================================================================// +n_castle,94,96,7 script NGuild Prontera#p1-1 722,{ + callfunc "F_Flags","Prontera","nguild_prt",97,174,1,1; + close; + +OnRecvCastleN04: + FlagEmblem GetCastleData("nguild_prt",1); + end; +} + +nguild_prt,58,56,4 script NGuild Prontera#p1-7::NGuildPrt 722,{ + callfunc "F_Flags","Prontera","nguild_prt",97,174,0,1; + close; + +OnRecvCastleN04: + FlagEmblem GetCastleData("nguild_prt",1); + end; +} +// In Castle ============================================= +nguild_prt,64,56,4 duplicate(NGuildPrt) NGuild Prontera#p1-8 722 +nguild_prt,76,32,4 duplicate(NGuildPrt) NGuild Prontera#p1-9 722 +nguild_prt,84,32,4 duplicate(NGuildPrt) NGuild Prontera#p1-10 722 +nguild_prt,94,39,4 duplicate(NGuildPrt) NGuild Prontera#p1-11 722 +nguild_prt,94,24,4 duplicate(NGuildPrt) NGuild Prontera#p1-12 722 +nguild_prt,73,14,4 duplicate(NGuildPrt) NGuild Prontera#p1-13 722 +nguild_prt,73,6,4 duplicate(NGuildPrt) NGuild Prontera#p1-14 722 +nguild_prt,55,46,4 duplicate(NGuildPrt) NGuild Prontera#p1-15 722 +nguild_prt,45,46,4 duplicate(NGuildPrt) NGuild Prontera#p1-16 722 diff --git a/npc/events/nguild/nguild_guardians.txt b/npc/events/nguild/nguild_guardians.txt new file mode 100644 index 000000000..299c3a380 --- /dev/null +++ b/npc/events/nguild/nguild_guardians.txt @@ -0,0 +1,89 @@ +//===== rAthena Script ======================================= +//= War of Emperium - nguild guardians script +//===== By: ================================================== +//= kobra_k88 +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena 0.1+; RO Episode 4+ +//===== Description: ========================================= +//= Re-spawns guardians on server start if they have been +//= purchased. Also announces when a guardian dies. +//===== Additional Comments: ================================= +//= Based off existing guild scripts. Do not know if it is accurate.[kobra_k88] +//============================================================ + + +//------------------------------------------------------------------------------ +nguild_alde,216,24,0 script Guardian_N01 -1,{ +OnAgitInit: + if (GetCastleData("nguild_alde",10) == 1) guardian "nguild_alde",18,219,"Soldier Guardian",1287,"Guardian_N01::OnGuardianDied",0; + if (GetCastleData("nguild_alde",11) == 1) guardian "nguild_alde",117,42,"Soldier Guardian",1287,"Guardian_N01::OnGuardianDied",1; + if (GetCastleData("nguild_alde",12) == 1) guardian "nguild_alde",207,153,"Soldier Guardian",1287,"Guardian_N01::OnGuardianDied",2; + if (GetCastleData("nguild_alde",13) == 1) guardian "nguild_alde",68,70,"Archer Guardian",1285,"Guardian_N01::OnGuardianDied",3; + if (GetCastleData("nguild_alde",14) == 1) guardian "nguild_alde",187,140,"Archer Guardian",1285,"Guardian_N01::OnGuardianDied",4; + if (GetCastleData("nguild_alde",15) == 1) guardian "nguild_alde",62,204,"Knight Guardian",1286,"Guardian_N01::OnGuardianDied",5; + if (GetCastleData("nguild_alde",16) == 1) guardian "nguild_alde",113,100,"Knight Guardian",1286,"Guardian_N01::OnGuardianDied",6; + if (GetCastleData("nguild_alde",17) == 1) guardian "nguild_alde",211,174,"Knight Guardian",1286,"Guardian_N01::OnGuardianDied",7; + end; + +OnGuardianDied: + // Event when Guardian dies + MapAnnounce "nguild_alde","A Guardian Has Fallen",17; + end; +} + +//------------------------------------------------------------------------------ +nguild_gef,198,182,0 script Guardian_N02 -1,{ +OnAgitInit: + if (GetCastleData("nguild_gef",10) == 1) guardian "nguild_gef",30,178,"Soldier Guardian",1287,"Guardian_N02::OnGuardianDied",0; + if (GetCastleData("nguild_gef",11) == 1) guardian "nguild_gef",64,180,"Soldier Guardian",1287,"Guardian_N02::OnGuardianDied",1; + if (GetCastleData("nguild_gef",12) == 1) guardian "nguild_gef",61,25,"Soldier Guardian",1287,"Guardian_N02::OnGuardianDied",2; + if (GetCastleData("nguild_gef",13) == 1) guardian "nguild_gef",61,44,"Archer Guardian",1285,"Guardian_N02::OnGuardianDied",3; + if (GetCastleData("nguild_gef",14) == 1) guardian "nguild_gef",189,43,"Archer Guardian",1285,"Guardian_N02::OnGuardianDied",4; + if (GetCastleData("nguild_gef",15) == 1) guardian "nguild_gef",51,192,"Knight Guardian",1286,"Guardian_N02::OnGuardianDied",5; + if (GetCastleData("nguild_gef",16) == 1) guardian "nguild_gef",49,67,"Knight Guardian",1286,"Guardian_N02::OnGuardianDied",6; + if (GetCastleData("nguild_gef",17) == 1) guardian "nguild_gef",181,14,"Knight Guardian",1286,"Guardian_N02::OnGuardianDied",7; + end; + +OnGuardianDied: + // Event when Guardian dies + MapAnnounce "nguild_gef","A Guardian Has Fallen",17; + end; +} +//------------------------------------------------------------------------------ +nguild_pay,139,139,0 script Guardian_N03 -1,{ +OnAgitInit: + if (GetCastleData("nguild_pay",10) == 1) guardian "nguild_pay",210,120,"Soldier Guardian",1287,"Guardian_N03::OnGuardianDied",0; + if (GetCastleData("nguild_pay",11) == 1) guardian "nguild_pay",69,26,"Soldier Guardian",1287,"Guardian_N03::OnGuardianDied",1; + if (GetCastleData("nguild_pay",12) == 1) guardian "nguild_pay",23,141,"Soldier Guardian",1287,"Guardian_N03::OnGuardianDied",2; + if (GetCastleData("nguild_pay",13) == 1) guardian "nguild_pay",224,87,"Archer Guardian",1285,"Guardian_N03::OnGuardianDied",3; + if (GetCastleData("nguild_pay",14) == 1) guardian "nguild_pay",81,45,"Archer Guardian",1285,"Guardian_N03::OnGuardianDied",4; + if (GetCastleData("nguild_pay",15) == 1) guardian "nguild_pay",214,53,"Knight Guardian",1286,"Guardian_N03::OnGuardianDied",5; + if (GetCastleData("nguild_pay",16) == 1) guardian "nguild_pay",69,26,"Knight Guardian",1286,"Guardian_N03::OnGuardianDied",6; + if (GetCastleData("nguild_pay",17) == 1) guardian "nguild_pay",23,141,"Knight Guardian",1286,"Guardian_N03::OnGuardianDied",7; + end; + +OnGuardianDied: + // Event when Guardian dies + MapAnnounce "nguild_pay","A Guardian Has Fallen",17; + end; +} +//------------------------------------------------------------------------------ +nguild_prt,197,197,0 script Guardian_N04 -1,{ +OnAgitInit: + if (GetCastleData("nguild_prt",10) == 1) guardian "nguild_prt",196,92,"Soldier Guardian",1287,"Guardian_N04::OnGuardianDied",0; + if (GetCastleData("nguild_prt",11) == 1) guardian "nguild_prt",113,200,"Soldier Guardian",1287,"Guardian_N04::OnGuardianDied",1; + if (GetCastleData("nguild_prt",12) == 1) guardian "nguild_prt",111,186,"Soldier Guardian",1287,"Guardian_N04::OnGuardianDied",2; + if (GetCastleData("nguild_prt",13) == 1) guardian "nguild_prt",76,202,"Archer Guardian",1285,"Guardian_N04::OnGuardianDied",3; + if (GetCastleData("nguild_prt",14) == 1) guardian "nguild_prt",90,26,"Archer Guardian",1285,"Guardian_N04::OnGuardianDied",4; + if (GetCastleData("nguild_prt",15) == 1) guardian "nguild_prt",58,59,"Knight Guardian",1286,"Guardian_N04::OnGuardianDied",5; + if (GetCastleData("nguild_prt",16) == 1) guardian "nguild_prt",112,200,"Knight Guardian",1286,"Guardian_N04::OnGuardianDied",6; + if (GetCastleData("nguild_prt",17) == 1) guardian "nguild_prt",101,194,"Knight Guardian",1286,"Guardian_N04::OnGuardianDied",7; + end; + +OnGuardianDied: + // Event when Guardian dies + MapAnnounce "nguild_prt","A Guardian Has Fallen",17; + end; +} diff --git a/npc/events/nguild/nguild_kafras.txt b/npc/events/nguild/nguild_kafras.txt new file mode 100644 index 000000000..a4bd7ff01 --- /dev/null +++ b/npc/events/nguild/nguild_kafras.txt @@ -0,0 +1,71 @@ +//===== rAthena Script ======================================= +//= War of Emperium Kafras for N Guild Castles +//===== By: ================================================== +//= kobra_k88 +//===== Current Version: ===================================== +//= 1.2 +//===== Compatible With: ===================================== +//= rAthena 0.1+; RO Episode 5+ +//===== Description: ========================================= +//= Provides Kafra services for guild members of NGuild Castles. +//= Used in conjuction with function F_Kafra. +//===== Additional Comments: ================================= +//= Based off existing guild scripts. Do not know if it is accurate.[kobra_k88] +//= 1.1 All N Guild Kafras teleport to Prontera only! [Lupus] +//= 1.2 Added Kafra function. [L0ne_W0lf] +//============================================================ + + +function script F_GKafra { + cutin "kafra_01",2; + set @GID, GetCastleData(getarg(0),1); + if (getcharid(2) == @GID && getgdskilllv(@GID,10001)) goto L_StartG; + + mes "[Kafra Service]"; + mes "I am contracted to provide service only for the ^ff0000" + GetGuildName(@GID) + "^000000 Guild. Please use another Kafra Corporation staff member around here. I am Sorry for your inconvenience."; + cutin "",255; + close; +L_StartG: + set @wrpP[0], 200; + set @wrpD$[0], getarg(1); + setarray @wrpC$[0], @wrpD$[0]+" ^880000"+@wrpP[0]+"^000000 z", "Cancel", "", "", "",""; + callfunc "F_Kafra",2,0,0,0,800; + end; +} + +// Castle 1 =============================================== +nguild_alde,218,170,0 script Kafra Service#N01 117,{ + callfunc "F_GKafra", "nguild_alde", "Prontera"; + end; +OnRecvCastleN01: + if (GetCastleData("nguild_alde",9) < 1) disablenpc "Kafra Service#N01"; + end; +} + +// Castle 2 =============================================== +//nguild_gef,96,173,0 script Kafra Service#N02 117,{ +nguild_gef,35,37,0 script Kafra Service#N02 117,{ + callfunc "F_GKafra", "nguild_gef", "Prontera"; + end; +OnRecvCastleN02: + if (GetCastleData("nguild_gef",9) < 1) disablenpc "Kafra Service#N02"; + end; +} + +// Castle 3 =============================================== +nguild_pay,128,58,3 script Kafra Service#N03 117,{ + callfunc "F_GKafra", "nguild_pay", "Prontera"; + end; +OnRecvCastleN03: + if (GetCastleData("nguild_pay",9) < 1) disablenpc "Kafra Service#N03"; + end; +} + +// Castle 4 =============================================== +nguild_prt,96,173,0 script Kafra Service#N04 117,{ + callfunc "F_GKafra", "nguild_prt", "Prontera"; + end; +OnRecvCastleN04: + if (GetCastleData("nguild_prt",9) < 1) disablenpc "Kafra Service#N04"; + end; +} diff --git a/npc/events/nguild/nguild_managers.txt b/npc/events/nguild/nguild_managers.txt new file mode 100644 index 000000000..7d5bf52ff --- /dev/null +++ b/npc/events/nguild/nguild_managers.txt @@ -0,0 +1,174 @@ +//===== rAthena Script ======================================= +//= War of Emperium Managers for N Guild Castles +//===== By: ================================================== +//= kobra_k88 +//===== Current Version: ===================================== +//= 1.2 +//===== Compatible With: ===================================== +//= rAthena 0.1+; RO Episode 4+ +//===== Description: ========================================= +//= +//============================================== +//= Break down of arguments used in the function: +//= arg(0): name of Castle Manager +//= arg(1): name of guild castle. +//= arg(2): x1 coordinate for warp to treasure room +//= arg(3): y1 coordinate for warp to treasure room +//= arg(4): guild script suffix for kafra, etc. +//===== Additional Comments: ================================= +//= 1.0 Based off existing guild scripts. Do not know if it is accurate.[kobra_k88] +//= 1.1 Added modified guild manager function. [L0ne_W0lf] +//= Removed guardian summoning. +//= 1.2 Corrected function name. (bugreport:1728) [L0ne_W0lf] +//============================================================ + +//============================================== +function script F_GldManager { + + set @GID, GetCastleData(getarg(1),1); + mes "[ "+getarg(0)+" ]"; + if (@GID == 0){ + mes "I am waiting for my master. Brave adventurer, follow your destiny!"; + return; + } + if (getcharid(2) != @GID){ + mes "I am here to follow ^5533FF" + getguildmaster(@GID) + "^000000's command! Hey! Your not even a part of the guild!!"; + mes "Where are the guardians? Destroy these intruders!"; + return; + } + if (strcharinfo(0) != getguildmaster(@GID)){ + mes "You're not ^5533FF" + getguildmaster(@GID) + "^000000! I am here to follow ^5533FF" + getguildmaster(@GID) + "^000000's command only"; + return 0; + } + + mes "Welcome Master ^5533FF" + getguildmaster(@GID) + "^000000 ! I will assist you in any way I can!"; + next; + + menu "Kafra Staff Employment / Dismissal",M_Kaf, "Enter Treasure Room",M_Treas, "Cancel",M_End; + + //=========================== + M_Kaf: + //====== + mes "[ "+getarg(0)+" ]"; + if (GetCastleData(getarg(1),9) == 1) goto L_Dismiss; + if (getgdskilllv(@GID,10001) == 0){ + mes "Master, you don't have a contract with the Kafra Staff Company."; + mes "In order to hire a Kafra, you must first learn the Guild skill ^5533FFContract With Kafra^000000."; + return; + } + + L_Hire: + mes "Would you like to employ the services of a Kafra? You will need ^5533FF10,000 Zeny^000000 to do so... "; + next; + menu "Employ Kafra.",-,"Cancel",sM_KafEnd; + + mes "[ "+getarg(0)+" ]"; + if (Zeny < 10000){ + mes "Master, you do not have enough money to employ a Kafra. Employment has been cancelled."; + return; + } + set Zeny,Zeny-10000; + enablenpc "Kafra Staff#"+getarg(4); + SetCastleData getarg(1),9,1; + mes "You have created a contract with the Kafra Staff Company."; + next; + cutin "kafra_01",2; + mes "[ Kafra Staff ]"; + mes "How do you do? I'm here to provide you with helpful service! I'll do the best I can to serve you."; + next; + cutin "kafra_01",255; + mes "[ "+getarg(0)+" ]"; + //mes "Your employment contract lasts ^5533FF1 month^000000. After this term is over you will have to create a new contract."; + mes "I think the Kafra Staff will benefit our guild members."; + return; + + sM_KafEnd: + mes "[ "+getarg(0)+" ]"; + mes "As you wish Master. But I suggest we get a Kafra as soon as possible!"; + return; + + L_Dismiss: + mes "Would you like to dismiss the current Kafra?"; + next; + menu "Dismissal",-,"Cancel",sM_KafEnd2; + + cutin "kafra_01",2; + mes "[ Kafra Staff ]"; + mes "Have I done anything wrong? If I did, will you please forgive me?"; + next; + menu "Dismiss",-,"Cancel",ssM_KafEnd2; + + mes "[ Kafra Staff ]"; + mes "It's unfortunate that I won't be able to serve your guild anymore...."; + next; + disablenpc "Kafra Staff#"+getarg(4); + SetCastleData getarg(1),9,0; + cutin "kafra_01",255; + mes "[ "+getarg(0)+" ]"; + mes "The Kafra has been dismissed. But... we should really get a Kafra as soon as possible!"; + return; + ssM_KafEnd2: + mes "[ Kafra Staff ]"; + mes "Thank you master, I'll do my best! ^^."; + cutin "kafra_01",255; + return; + sM_KafEnd2: + mes "[ "+getarg(0)+" ]"; + mes "Master, I think you should keep the current Kafra Staff because she is already trying her best to serve us"; + return; + + //========================= + M_Treas: + //======== + mes "[ "+getarg(0)+" ]"; + mes "Would you to go to our Treasure Room? Only you, the Guild Master, are allowed to enter this room."; + next; + menu "Enter Treasure room.",-,"Cancel",sM_TresEnd; + + mes "[ "+getarg(0)+" ]"; + mes "Please follow me through the secret passage way."; + mes "You must pull down on the secret switch in order to get out."; + next; + warp getarg(1),getarg(2),getarg(3); + return; + sM_TresEnd: + mes "[ "+getarg(0)+" ]"; + mes "The goods are produced everyday."; + mes "You should get them whenever you can because they might dissapear if you take them at the wrong time."; + return; + + + //========================== + M_End: + //======= + mes "[ "+getarg(0)+" ]"; + mes "As you wish, master."; + return; +} + +// Castle 1 ================================================================================== +nguild_alde,218,175,0 script Frolo 55,{ + callfunc "F_GldManager","Frolo","nguild_alde",119,223,"N01"; + close; +} + + +// Castle 2 ================================================================================== +nguild_gef,40,48,5 script Leiber 55,{ + callfunc "F_GldManager","Leiber","nguild_gef",155,112,"N02"; + close; +} + + +// Castle 3 ================================================================================== +nguild_pay,120,58,4 script Dundar 55,{ + callfunc "F_GldManager","Dundar","nguild_pay",290,7,"N03"; + close; +} + + +// Castle 4 ================================================================================== +nguild_prt,112,181,0 script Thefton 55,{ + callfunc "F_GldManager","Thefton","nguild_prt",15,209,"N04"; + close; +} diff --git a/npc/events/nguild/nguild_treas.txt b/npc/events/nguild/nguild_treas.txt new file mode 100644 index 000000000..1fc8cbaf9 --- /dev/null +++ b/npc/events/nguild/nguild_treas.txt @@ -0,0 +1,167 @@ +//===== rAthena Script ======================================= +//= War of Emperium Treasure Rooms for NGuild Guild Castles +//===== By: ================================================== +//= kobra_k88 +//===== Current Version: ===================================== +//= 1.3b +//===== Compatible With: ===================================== +//= rAthena 0.1+; RO Episode 4+ +//===== Description: ========================================= +//= +//===== Additional Comments: ================================= +//= Based off existing guild scripts. Do not know if it is accurate.[kobra_k88] +//= 1.2 Official treasure spawn [Lupus] +//= 1.3 Added F_GldTreas function. (bugreport:1788) [L0ne_W0lf] +//= 1.3b Added F_GldTreasSw function. (bugreport:3292) [brianluau] +//============================================================ + + +//================================================ +// Treasure Spawning Function +//================================================ +function script F_GldTreas { + if(getarg(10) != 1) { + setcastledata getarg(0),4,0; + setcastledata getarg(0),5,0; + + // Why on earth are we killing old treasure chest spawns? + //killmonster getarg(0),"Treasure_"+getarg(1)+"::OnDied"; + + // Don't spawn treasures if Castle is empty, or Eco is greater than 100 + if(GetCastleData(getarg(0),2) > 100 || GetCastleData(getarg(0),1) == 0) return; + + // Only spawn one treasure chest for novice castles. + if (compare(getarg(0),"nguild")) + set getarg(2),1; + else + set getarg(2),GetCastleData(getarg(0),2)/5+4; + + if (getarg(2) <= 0) return; + + //sets the counter variable = to the box number amount + set getarg(3), getarg(2); + } + for (set .@i,1; .@i <= getarg(3) ; set .@i,.@i+1) { + // set treasure box ID + set getarg(4), getarg(5) + (.@i+1) % 2; + areamonster getarg(0),getarg(6),getarg(7),getarg(8),getarg(9),"Treasure Chest",getarg(4),1,"Treasure_"+getarg(1)+"::OnDied"; + } + return; +} + +//============================================================== +// Treasure Room Switch +//=============================================================== +function script F_GldTreasSw { + mes " "; + mes "There's a small lever. Will you pull it?"; + next; + + if (select("Pull.:Do not.") == 1) { + warp getarg(0),getarg(1),getarg(2); + return; + } + close; +} + +//<=============================== Castle 1 =================================>\\ + +// Treasure Spawn ----------------------- +nguild_alde,1,1,1 script Treasure_N01 -1,{ + +OnRecvCastleN01: + end; +OnInit: + if($boxNumN01 == 0) end; + set $@bxN01, $boxNumN01; + callfunc "F_GldTreas","nguild_alde","N01",$boxNumN01,$@bxN01,$@boxIdN01,1324+rand(10),114,218,123,227,1; + end; + +OnDied: + mapannounce "nguild_alde","Treasure Chest Broken Open",17; + set $boxNumN01, $boxNumN01 -1; + if($boxNumN01 == 0) mapannounce "nguild_alde", "All of the treasure boxes have been opened. You must wait untill the next day for them to appear again.",0; + end; +} + +// Treasure Room Switch -------------------- +nguild_alde,123,223,0 script Switch#TresN01 111,{ + callfunc "F_GldTreasSw", "nguild_alde",218,176; + end; +} + +//<================================ Castle 2 ================================>\\ + +// Treasure Spawn ---------------------------- +nguild_gef,1,1,1 script Treasure_N02 -1,{ + +OnRecvCastleN02: + end; +OnInit: + if($boxNumN02 == 0) end; + set $@bxN02, $boxNumN02; + callfunc "F_GldTreas","nguild_gef","N02",$boxNumN02,$@bxN02,$@boxIdN02,1334+rand(10),150,108,158,114,1; + end; + +OnDied: + mapannounce "nguild_gef","Treasure Chest Broken Open",17; + set $boxNumN02, $boxNumN02 -1; + if($boxNumN02 == 0) mapannounce "nguild_gef", "All of the treasure boxes have been opened. You must wait untill the next day for them to appear again.",0; + end; +} + +// Room Switch --------------------------------------------------------- +nguild_gef,152,117,0 script Switch#TresN02 111,{ + callfunc "F_GldTreasSw","nguild_gef",40,49; + end; +} + +//<================================ Castle 3 ================================>\\ + +// Treasure Spawn --------------------------- +nguild_pay,1,1,0 script Treasure_N03 -1,{ +OnRecvCastleN03: + end; +OnInit: + if($boxNumN03 == 0) end; + set $@bxN03, $boxNumN03; + callfunc "F_GldTreas","nguild_pay","N03",$boxNumN03,$@bxN03,$@boxIdN03,1344+rand(10),286,4,295,13,1; + end; + +OnDied: + mapannounce "nguild_pay","Treasure Chest Broken Open",17; + set $boxNumN03, $boxNumN03 -1; + if($boxNumN03 == 0) mapannounce "nguild_pay", "All of the treasure boxes have been opened. You must wait untill the next day for them to appear again.",0; + end; +} + +// Treasure Room Switch --------------------------------------------------- +nguild_pay,295,8,0 script Switch#TresN03 111,{ + callfunc "F_GldTreasSw", "nguild_pay",120,59; + end; +} + +//<================================ Castle 4 ================================>\\ + +// Treasure Spawn ------------------------------- +nguild_prt,1,1,0 script Treasure_N04 -1,{ +OnRecvCastleN04: + end; +OnInit: + if($boxNumN04 == 0) end; + set $@bxN04, $boxNumN04; + callfunc "F_GldTreas","nguild_prt","N04",$boxNumN04,$@bxN04,$@boxIdN04,1354+rand(10),6,204,15,213,1; + end; + +OnDied: + mapannounce "nguild_prt","Treasure Chest Broken Open",17; + set $boxNumN04, $boxNumN04 -1; + if($boxNumN04 == 0) mapannounce "nguild_prt", "All of the treasure boxes have been opened. You must wait untill the next day for them to appear again.",0; + end; +} + +// Treasure Room Switch ---------------------------------------------------- +nguild_prt,15,209,0 script Switch#TresN04 111,{ + callfunc "F_GldTreasSw", "nguild_prt",109,179; + end; +} diff --git a/npc/events/nguild/nguild_warper.txt b/npc/events/nguild/nguild_warper.txt new file mode 100644 index 000000000..41d51ca59 --- /dev/null +++ b/npc/events/nguild/nguild_warper.txt @@ -0,0 +1,111 @@ +//===== rAthena Script ======================================= +//= Novice's Guild Castles War of Emperium Usher NPC +//===== By: ================================================== +//= Lupus +//===== Current Version: ===================================== +//= 1.7 +//===== Compatible With: ===================================== +//= rAthena 1+ with eaclass(); RO Episode 4+ +//===== Description: ========================================= +//= +//===== Additional Comments: ================================= +//= Now you have access to 4 N Guild castles. They don't have +//= dungeons. And 2nd Classes can't seize these Castles. +//= These new castles need a new strategy. It would bring some +//= fun and live to your game. +//= NOTE: If your Guild Master is 2nd class, then he could +//= rule the Castles and gather Treasure Boxes after WoE +//= 1.1 Now 2nd classes can't enter NC place at all +//= 1.2 Restricted access of SG/SL. On warp clear some +//= unallowed buffs [Lupus] +//= 1.3 Restricted TK,High classes >=90 BaseLevel, +//= updated list of unallowed buffs [Lupus] +//= 1.4 Restricted it to 80 Base Level [Lupus] +//= 1.5 According to official info: 1 Treasure Chest per Castle +//= 1.6 Only 1st Class < 60 BaseLevel Players can participate +//= 1.7 Guilds with Emergency Call or with 9+ skill points +//= can't take part in NWoE. [Lupus] +//= TODO: The official entrance is in Izlude. +//============================================================ + + +prontera,146,163,6 script Novice Castles 729,{ + mes "[Cita]"; + if(getcharid(2)!=0){ + if(getgdskilllv(getcharid(2),10013)){ + mes "I see... your guild has Emergency Call mastered."; + mes "You cannot enter the Novice Castle area."; + emotion e_hmm; + emotion e_wah,1; + close; + } + if( + getgdskilllv(getcharid(2),10000) + + getgdskilllv(getcharid(2),10001) + + getgdskilllv(getcharid(2),10002) + + getgdskilllv(getcharid(2),10003) + + getgdskilllv(getcharid(2),10004) + + getgdskilllv(getcharid(2),10005) + + getgdskilllv(getcharid(2),10006) + + getgdskilllv(getcharid(2),10007) + + getgdskilllv(getcharid(2),10008) + + getgdskilllv(getcharid(2),10009) + + getgdskilllv(getcharid(2),10010) + + getgdskilllv(getcharid(2),10011) + + getgdskilllv(getcharid(2),10012) + + getgdskilllv(getcharid(2),10013) + + getgdskilllv(getcharid(2),10014) > 9 + ){ + mes "I see... your guild has Emergency Call mastered."; + mes "You cannot enter the Novice Castle area."; + emotion e_hmm; + emotion e_wah,1; + close; + } + } else { + mes "^FF0000You have to enter a guild to be able to hit Emperium!^000000"; + } + mes "I'm a new usher of Novice Castles."; + next; + if( !(eaclass()&(EAJL_2|EAJL_UPPER)) && BaseLevel<60 ) + menu "Warp me to Novice Castles",M_WARP,"Cancel",-; + + mes "[Cita]"; + mes "I'm sorry, you can't enter the sacred Novice Castles place."; + emotion e_sry; + close; + +M_WARP: + //remove several unallowed buffs + sc_end SC_ASSUMPTIO; + sc_end SC_IMPOSITIO; + sc_end SC_SUFFRAGIUM; + sc_end SC_MAGNIFICAT; + sc_end SC_WEAPONPERFECTION; + sc_end SC_GOSPEL; + sc_end SC_BASILICA; + sc_end SC_MAGICPOWER; + sc_end SC_MARIONETTE; + sc_end SC_MARIONETTE2; + sc_end SC_DEVOTION; + sc_end SC_SACRIFICE; + sc_end SC_MAXOVERTHRUST; + sc_end SC_SPIRIT; + warp "n_castle",102,93+rand(14); + close; +} + + +n_castle,102,107,5 script Cita 729,{ + mes "[Cita]"; + mes "Hello, "+ strcharinfo(0) +". Can I help you?"; + next; + menu "Warp me to Prontera!",-,"Cancel",LEnd; + + warp "prontera",155,177+rand(5); + close; + LEnd: + mes "[Cita]"; + mes "Ok."; + close; +} -- cgit v1.2.3-60-g2f50