nguild_ev_agit.txt 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. //===== rAthena Script =======================================
  2. //= War of Emperium - NGuild Wars Events
  3. //===== By: ==================================================
  4. //= kobra_k88
  5. //===== Current Version: =====================================
  6. //= 1.5
  7. //===== Compatible With: =====================================
  8. //= rAthena Project; RO Episode 4+
  9. //===== Description: =========================================
  10. //= Event Triggers for NGuild Wars
  11. //===== Additional Comments: =================================
  12. // Based off existing guild scripts. Do not know if it is accurate.[kobra_k88]
  13. //= 1.3 Added code for abandoning captured castles on /breakguild [Lupus]
  14. //= 1.4 AGIT Functions added, treasure spawning added. [L0ne_W0lf]
  15. //= 1.5 Emperium should now properly respawn. [L0ne_W0lf]
  16. //============================================================
  17. // Function for OnAgitStart =========================================
  18. function script F_AgitStart {
  19. set .@map$, getarg(0);
  20. set .@castle$, getarg(1);
  21. set .@empx, getarg(2);
  22. set .@empy, getarg(3);
  23. MapRespawnGuildID .@map$,GetCastleData(.@map$,1),2;
  24. monster .@map$,.@empx,.@empy,"Emperium",1288,1,"Agit_"+.@castle$+"::OnAgitBreak";
  25. GvgOn .@map$;
  26. if (GetCastleData(.@map$,1) != 0) return;
  27. end;
  28. }
  29. // Function for OnGuildBreak ======================================
  30. function script F_GuildBreak {
  31. set .@map$, getarg(0);
  32. set .@castle$, getarg(1);
  33. killmonsterall .@map$;
  34. Announce "Guild Base [" + GetCastleName(.@map$) + "] has been abandoned.",0;
  35. disablenpc "Kafra Staff#"+.@castle$;
  36. SetCastleData .@map$,0,0;
  37. return;
  38. }
  39. // Function for OnAgitBreak ======================================
  40. function script F_AgitBreak {
  41. set .@map$, getarg(0);
  42. set .@castle$, getarg(1);
  43. set .@GID,getcharid(2);
  44. if (.@GID <= 0) return;
  45. set .@Economy,GetCastleData(.@map$,2) - 5;
  46. if (.@Economy < 0) set .@Economy, 0;
  47. SetCastleData .@map$, 2, .@Economy;
  48. set .@Defence,GetCastleData(.@map$,3) - 5;
  49. if (.@Defence < 0) set .@Defence, 0;
  50. SetCastleData .@map$, 3, .@Defence;
  51. SetCastleData .@map$,1, .@GID;
  52. MapAnnounce .@map$,"The emperium has been destroyed.",bc_map,0x00CCFF;
  53. Announce "The [" + GetCastleName(.@map$) + "] castle has been conquered by the [" + GetGuildName(.@GID) + "] guild.",bc_all;
  54. donpcevent "::OnRecvCastle"+.@castle$;
  55. disablenpc "Kafra Staff#"+.@castle$;
  56. // remove investment data and kafra
  57. for( set .@i, 4; .@i <= 9; set .@i, .@i+1 )
  58. SetCastleData .@map$, .@i, 0;
  59. // if the new guild doesn't have Guardian Research, erase guardians
  60. if( getgdskilllv(.@GID,10002) == 0 )
  61. for( set .@i, 10; .@i <= 17; set .@i, .@i+1 )
  62. SetCastleData .@map$, .@i, 0;
  63. return;
  64. }
  65. // Function for OnAgitEnd ======================================
  66. function script F_AgitEnd {
  67. set .@map$, getarg(0);
  68. set .@castle$, getarg(1);
  69. GvgOff .@map$;
  70. // Disable the following if statment to keep empty
  71. // castles from being aquired after after WoE ends.
  72. if (GetCastleData(.@map$,1) == 0) return;
  73. MapRespawnGuildID .@map$,GetCastleData(.@map$,1),4;
  74. KillMonster .@map$,"Agit_"+.@castle$+"::OnAgitBreak";
  75. end;
  76. }
  77. // Castle 1 ================================================================
  78. nguild_alde,0,0,0 script Agit_N01 -1,{
  79. OnInterIfInitOnce:
  80. donpcevent "::OnRecvCastleN01";
  81. end;
  82. OnRecvCastleN01:
  83. RequestGuildInfo GetCastleData("nguild_alde",1);
  84. end;
  85. OnAgitStart:
  86. callfunc "F_AgitStart","nguild_alde","N01",216,24;
  87. end;
  88. OnAgitBreak:
  89. callfunc "F_AgitBreak","nguild_alde","N01";
  90. goto OnAgitEliminate;
  91. end;
  92. OnGuildBreak:
  93. callfunc "F_GuildBreak","nguild_alde","N01";
  94. end;
  95. OnAgitEliminate:
  96. MapRespawnGuildID "nguild_alde",GetCastleData("nguild_alde",1),6;
  97. Monster "nguild_alde",216,24,"EMPERIUM",1288,1,"Agit_N01::OnAgitBreak";
  98. end;
  99. OnAgitEnd:
  100. callfunc "F_AgitEnd","nguild_alde","N01";
  101. end;
  102. }
  103. // Castle 2 ================================================================
  104. nguild_gef,0,0,0 script Agit_N02 -1,{
  105. OnInterIfInitOnce:
  106. donpcevent "::OnRecvCastleN02";
  107. end;
  108. OnRecvCastleN02:
  109. RequestGuildInfo GetCastleData("nguild_gef",1);
  110. end;
  111. OnAgitStart:
  112. callfunc "F_AgitStart","nguild_gef","N02",198,182;
  113. end;
  114. OnAgitBreak:
  115. callfunc "F_AgitBreak","nguild_gef","N02";
  116. goto OnAgitEliminate;
  117. end;
  118. OnGuildBreak:
  119. callfunc "F_GuildBreak","nguild_gef","N02";
  120. end;
  121. OnAgitEliminate:
  122. MapRespawnGuildID "nguild_gef",GetCastleData("nguild_gef",1),6;
  123. Monster "nguild_gef",198,182,"EMPERIUM",1288,1,"Agit_N02::OnAgitBreak";
  124. end;
  125. OnAgitEnd:
  126. callfunc "F_AgitEnd","nguild_gef","N02";
  127. end;
  128. }
  129. // Castle 3 ================================================================
  130. nguild_pay,0,0,0 script Agit_N03 -1,{
  131. OnInterIfInitOnce:
  132. donpcevent "::OnRecvCastleN03";
  133. end;
  134. OnRecvCastleN03:
  135. RequestGuildInfo GetCastleData("nguild_pay",1);
  136. end;
  137. OnAgitStart:
  138. callfunc "F_AgitStart","nguild_pay","N03",139,139;
  139. end;
  140. OnAgitBreak:
  141. callfunc "F_AgitBreak","nguild_pay","N03";
  142. goto OnAgitEliminate;
  143. end;
  144. OnGuildBreak:
  145. callfunc "F_GuildBreak","nguild_pay","N03";
  146. end;
  147. OnAgitEliminate:
  148. MapRespawnGuildID "nguild_pay",GetCastleData("nguild_pay",1),6;
  149. Monster "nguild_pay",139,139,"EMPERIUM",1288,1,"Agit_N03::OnAgitBreak";
  150. end;
  151. OnAgitEnd:
  152. callfunc "F_AgitEnd","nguild_pay","N03";
  153. end;
  154. }
  155. // Castle 4 ================================================================
  156. nguild_prt,0,0,0 script Agit_N04 -1,{
  157. OnInterIfInitOnce:
  158. donpcevent "::OnRecvCastleN04";
  159. end;
  160. OnRecvCastleN04:
  161. RequestGuildInfo GetCastleData("nguild_prt",1);
  162. end;
  163. OnAgitStart:
  164. callfunc "F_AgitStart","nguild_prt","N04",197,197;
  165. end;
  166. OnAgitBreak:
  167. callfunc "F_AgitBreak","nguild_prt","N04";
  168. goto OnAgitEliminate;
  169. end;
  170. OnGuildBreak:
  171. callfunc "F_GuildBreak","nguild_prt","N04";
  172. end;
  173. OnAgitEliminate:
  174. MapRespawnGuildID "nguild_prt",GetCastleData("nguild_prt",1),6;
  175. Monster "nguild_prt",197,197,"EMPERIUM",1288,1,"Agit_N04::OnAgitBreak";
  176. end;
  177. OnAgitEnd:
  178. callfunc "F_AgitEnd","nguild_prt","N04";
  179. end;
  180. }
  181. // Treasure Spawn Time
  182. //========================================
  183. - script TreasSpawn -1,{
  184. end;
  185. OnClock0005:
  186. callfunc "F_GldTreas","nguild_alde","N01",$boxNumN01,$@bxN01,$@boxIdN01,1324,114,218,123,227,0;
  187. callfunc "F_GldTreas","nguild_gef","N02",$boxNumN02,$@bxN02,$@boxIdN02,1334,150,108,158,114,0;
  188. callfunc "F_GldTreas","nguild_pay","N03",$boxNumN03,$@bxN03,$@boxIdN03,1344,286,4,295,13,0;
  189. callfunc "F_GldTreas","nguild_prt","N04",$boxNumN04,$@bxN04,$@boxIdN04,1354,6,204,15,213,0;
  190. end;
  191. }