// http://www.eathena.ws/board/index.php?showtopic=239081 // The Lvl99 GM set how many castle will be a available, add and delete time // and the castle that going to be on is RANDOM, as in RANDOM (if its possible) // if it's one castle is on, it will pick 1 castle randomly... // and if its 2, it will pick 2 castle randomy... and so on... // // http://rathena.org/board/topic/56147-edit-random-woe-using-brianl-script/ // I want to change the castle ownership. Say prtg_cas01 is open and GuildA // takes it. Then next woe gefg_cas04 is open, the castle ownership will move // to gefg_cas04 and prtg_cas01 will be unoccupied. // // https://rathena.org/board/topic/104738-help-random-woe-castle-not-compatible-rathena/ // --> updated warp names to match changes in https://github.com/rathena/rathena/commit/49459d342ec4e3b5d2ca8dbf85ab924ffa89faca - script Agit_Event -1,{ end; OnClock2100: //start time for Tues(2), Thurs(4) OnClock2300: //end time for Tues(2), Thurs(4) OnClock1600: //start time for Sat(6) OnClock1800: //end time for Sat(6) OnAgitInit: set .@num_castles_open, 5; // the number of castles open each WoE set .@transfer_ownership, 1; // transfer ownership to the next (random) castle? setarray .maps$[0], "aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05", "gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05", "payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05", "prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05"; // starting time checks if((gettime(4)==2) && (gettime(3)>=21 && gettime(3)<23) || (gettime(4)==4) && (gettime(3)>=21 && gettime(3)<23) || (gettime(4)==6) && (gettime(3)>=16 && gettime(3)<18)) { if (!agitcheck()) { // close ALL castles disablenpc "aldeg-1_aldeg-1-1"; maprespawnguildid "aldeg_cas01",0,7; disablenpc "aldeg-2_aldeg-2-1"; maprespawnguildid "aldeg_cas02",0,7; disablenpc "aldeg-3_aldeg-3-1"; maprespawnguildid "aldeg_cas03",0,7; disablenpc "aldeg-4_aldeg-4-1"; maprespawnguildid "aldeg_cas04",0,7; disablenpc "aldeg-5_aldeg-5-1"; maprespawnguildid "aldeg_cas05",0,7; disablenpc "gef-g1-0_gefg-1-07"; disablenpc "gef-g1-1_gefg-1-04"; maprespawnguildid "gefg_cas01",0,7; disablenpc "gef-g2_gefg-2-07"; maprespawnguildid "gefg_cas02",0,7; disablenpc "gef-g3-0_g-cas3-12"; disablenpc "gef-g3-1_g-cas3-13"; disablenpc "gef-g3-2_g-cas3-14"; disablenpc "gef-g3-3_g-cas3-15"; maprespawnguildid "gefg_cas03",0,7; disablenpc "gef-g4_gefg-4-05"; maprespawnguildid "gefg_cas04",0,7; disablenpc "gef-5-0_gefg-5-04"; disablenpc "gef-5-1_gefg-5-01"; maprespawnguildid "gefg_cas05",0,7; disablenpc "payg-1_payg-1-06"; maprespawnguildid "payg_cas01",0,7; disablenpc "payg-2_payg-2-02"; maprespawnguildid "payg_cas02",0,7; disablenpc "payg-3_payg-3-07"; maprespawnguildid "payg_cas03",0,7; disablenpc "payg-4_payg-4-01"; maprespawnguildid "payg_cas04",0,7; disablenpc "payg-5_payg-5-03"; maprespawnguildid "payg_cas05",0,7; disablenpc "prtg-1_prtg-1-01"; maprespawnguildid "prtg_cas01",0,7; disablenpc "prtg-2_prtg-2"; maprespawnguildid "prtg_cas02",0,7; disablenpc "prtg-3_prtg-3"; maprespawnguildid "prtg_cas03",0,7; disablenpc "prtg-4_prtg-4"; maprespawnguildid "prtg_cas04",0,7; disablenpc "prtg-5_prtg-5"; maprespawnguildid "prtg_cas05",0,7; // randomize castle order for( set .@i,1; .@i <= getarraysize(.maps$); set .@i,.@i+1 ) { while( set(.@rand,rand(1,getarraysize(.maps$))) == getd(".@__tmp_"+.@rand) ); setd ".@__tmp_"+.@rand, set(.@array[.@i],.@rand); } // open castles announce (.@num_castles_open==1 ? "There is 1 castle" : ("There are "+.@num_castles_open+" castles")) + " open for WoE today:",bc_all|bc_woe; for( set .@i,1; .@i <= .@num_castles_open; set .@i,.@i+1 ) { // transfer ownership? ... only if there's a previous castle to transfer from! if (.@transfer_ownership && getd("$castle_"+.@i+"$")!="") callsub S_TransferOwnership, atoi(getd("$castle_"+.@i+"$")), .@array[.@i]; callsub S_OpenCastle, .@array[.@i]; } AgitStart; announce "The War of Emperium has begun!",bc_all|bc_woe; } end; } // end time checks if ((gettime(4)==2) && (gettime(3)==23) || (gettime(4)==4) && (gettime(3)==23) || (gettime(4)==6) && (gettime(3)==18)) { if (agitcheck()) { AgitEnd; announce "The War of Emperium is over!",bc_all|bc_woe; } // open ALL castles enablenpc "aldeg-1_aldeg-1-1"; // aldeg_cas01 enablenpc "aldeg-2_aldeg-2-1"; // aldeg_cas02 enablenpc "aldeg-3_aldeg-3-1"; // aldeg_cas03 enablenpc "aldeg-4_aldeg-4-1"; // aldeg_cas04 enablenpc "aldeg-5_aldeg-5-1"; // aldeg_cas05 enablenpc "gef-g1-0_gefg-1-07"; // gefg_cas01 enablenpc "gef-g1-1_gefg-1-04"; // gefg_cas01 enablenpc "gef-g2_gefg-2-07"; // gefg_cas02 enablenpc "gef-g3-0_g-cas3-12"; // gefg_cas03 enablenpc "gef-g3-1_g-cas3-13"; // gefg_cas03 enablenpc "gef-g3-2_g-cas3-14"; // gefg_cas03 enablenpc "gef-g3-3_g-cas3-15"; // gefg_cas03 enablenpc "gef-g4_gefg-4-05"; // gefg_cas04 enablenpc "gef-5-0_gefg-5-04"; // gefg_cas05 enablenpc "gef-5-1_gefg-5-01"; // gefg_cas05 enablenpc "payg-1_payg-1-06"; // payg_cas01 enablenpc "payg-2_payg-2-02"; // payg_cas02 enablenpc "payg-3_payg-3-07"; // payg_cas03 enablenpc "payg-4_payg-4-01"; // payg_cas04 enablenpc "payg-5_payg-5-03"; // payg_cas05 enablenpc "prtg-1_prtg-1-01"; // prtg_cas01 enablenpc "prtg-2_prtg-2"; // prtg_cas02 enablenpc "prtg-3_prtg-3"; // prtg_cas03 enablenpc "prtg-4_prtg-4"; // prtg_cas04 enablenpc "prtg-5_prtg-5"; // prtg_cas05 end; } end; S_TransferOwnership: // getarg(0) = previous CastleID // getarg(1) = new CastleID (to transfer owner to) if ( getcastledata(.maps$[getarg(0)],1) && getarg(0)!=getarg(1) ) { for (set .@i,1; .@i<=17; set .@i,.@i+1) { setcastledata .maps$[getarg(1)],.@i, getcastledata(.maps$[getarg(0)],.@i); setcastledata .maps$[getarg(0)],.@i, 0; } setd "$castle_"+.@i+"$", getarg(1); } return; S_OpenCastle: // getarg(0) = CastleID in /db/castle_db.txt switch( getarg(0) ) { case 0: enablenpc "aldeg-1_aldeg-1-1"; break; // aldeg_cas01 case 1: enablenpc "aldeg-2_aldeg-2-1"; break; // aldeg_cas02 case 2: enablenpc "aldeg-3_aldeg-3-1"; break; // aldeg_cas03 case 3: enablenpc "aldeg-4_aldeg-4-1"; break; // aldeg_cas04 case 4: enablenpc "aldeg-5_aldeg-5-1"; break; // aldeg_cas05 case 5: enablenpc "gef-g1-0_gefg-1-07"; enablenpc "gef-g1-1_gefg-1-04"; break; // gefg_cas01 case 6: enablenpc "gef-g2_gefg-2-07"; break; // gefg_cas02 case 7: enablenpc "gef-g3-0_g-cas3-12"; enablenpc "gef-g3-1_g-cas3-13"; enablenpc "gef-g3-2_g-cas3-14"; enablenpc "gef-g3-3_g-cas3-15"; break; // gefg_cas03 case 8: enablenpc "gef-g4_gefg-4-05"; break; // gefg_cas04 case 9: enablenpc "gef-5-0_gefg-5-04"; enablenpc "gef-5-1_gefg-5-01"; break; // gefg_cas05 case 10: enablenpc "payg-1_payg-1-06"; break; // payg_cas01 case 11: enablenpc "payg-2_payg-2-02"; break; // payg_cas02 case 12: enablenpc "payg-3_payg-3-07"; break; // payg_cas03 case 13: enablenpc "payg-4_payg-4-01"; break; // payg_cas04 case 14: enablenpc "payg-5_payg-5-03"; break; // payg_cas05 case 15: enablenpc "prtg-1_prtg-1-01"; break; // prtg_cas01 case 16: enablenpc "prtg-2_prtg-2"; break; // prtg_cas02 case 17: enablenpc "prtg-3_prtg-3"; break; // prtg_cas03 case 18: enablenpc "prtg-4_prtg-4"; break; // prtg_cas04 case 19: enablenpc "prtg-5_prtg-5"; break; // prtg_cas05 } if (GetCastleData(.maps$[getarg(0)],1)) { announce "The [" + GetCastleName(.maps$[getarg(0)]) + "] castle is owned by the [" + GetGuildName(GetCastleData(.maps$[getarg(0)],1)) + "] guild.",bc_all|bc_woe; } else { announce "The [" + GetCastleName(.maps$[getarg(0)]) + "] castle is currently unoccupied.",bc_all|bc_woe; } return; }