Jump to content

peculiarro

Members
  • Posts

    46
  • Joined

  • Last visited

Posts posted by peculiarro

  1. On 6/3/2017 at 11:19 PM, peculiarro said:
    
    //===== rAthena Script =======================================
    //= Devil Square
    //===== By: ==================================================
    //= Kirlein, Stillhard (translation), AnnieRuru (rewrite)
    //===== Current Version: =====================================
    //= 1.0
    //===== Compatible With: =====================================
    //= rAthena Project
    //===== Description: =========================================
    //= Devil Square, based on the event in MU Online.
    //= Defeat three waves of monsters for treasure.
    //===== Additional Comments: =================================
    //= 1.0 First version, edited. [Euphy]
    //============================================================
    
    prontera,147,140,5	script	Devil Square Guardian#1	406,{
    	set .@gm_level, 99; // GM level required to start/stop the event
    
    	mes "[Devil Square Guardian]";
    	mes "This is the entrance to ^FF0000Devil Square^000000.";
    	mes "If you fail or die, the door will close and you must wait until the event starts again to re-enter.";
    	next;
    	switch(select("Enter.:Information.:" + ((getgmlevel() >= .@gm_level) ? "GM Menu." : "") + ":Cancel.")) {
    	case 1:
    		if (.start != 1) { // registration period
    			mes "[Devil Square Guardian]";
    			mes "Devil Square is now closed.";
    			mes "It will open at these times:";
    			mes "00:00 , 02:00 , 04:00 , 06:00"; // display your times here
    			mes "08:00 , 10:00 , 12:00 , 14:00";
    			mes "16:00 , 18:00 , 20:00 , 22:00";
    			close;
    		}
    		if (BaseLevel < 70 || Zeny < 20000) { // requirements
    			mes "[Devil Square Guardian]";
    			mes "You do not meet the requirements to enter Devil Square.";
    			mes " ";
    			mes "Requirements:";
    			mes " - Base Level 70";
    			mes " - Registration fee 20,000z";
    			close;
    		}
    		Zeny -= 20000;
    		announce strcharinfo(0)+" has entered Devil Square.", bc_npc;
    		percentheal 100,100;
    		warp "ordeal_1-1",183,182;
    		close;
    	case 2:
    		mes "[Devil Square Guardian]";
    		mes "Inside, you will encounter 3 waves of monsters. The monsters will grow stronger with each wave.";
    		next;
    		mes "[Devil Square Guardian]";
    		mes "If you defeat all the enemies, you will be given the opportunity to open 10 Treasure Chests with items, equipment, and rare cards inside!";
    		close;
    	case 3:
    		mes "[Devil Square Guardian]";
    		switch (.start) { // event states
    			case 0: mes "Devil Square has not yet started."; break;
    			case 1: mes "Devil Square is currently accepting participants."; break;
    			case 2: mes "Devil Square Event is currently running on Round "+ .round +" with "+ .mob +" monsters remaining."; break;
    		}
    		next;
    		switch(select("Start event.:Stop event.:Cancel.")) {
    		case 1:
    			mes "[Devil Square Guardian]";
    			if (.start)
    				mes "Devil Square has already started.";
    			else {
    				mes "Starting Devil Square...";
    				donpcevent strnpcinfo(0)+"::OnStartEvent";
    			}
    			close;
    		case 2:
    			mes "[Devil Square Guardian]";
    			if (!.start)
    				mes "Devil Square has not yet started.";
    			else {
    				mes "Stopping Devil Square...";
    				donpcevent strnpcinfo(0)+"::OnStopEvent";
    			}
    			close;
    		case 3:
    			break;
    		}
    		break;
    	case 4:
    		break;
    	}
    	mes "[Devil Square Guardian]";
    	mes "Farewell.";
    	close;
    
    OnStartEvent:
    OnClock0000:
    OnClock0200:
    OnClock0400:
    OnClock0600:
    OnClock0800:
    OnClock1000:
    OnClock1200:
    OnClock1400:
    OnClock1600:
    OnClock1800:
    OnClock2000:
    OnClock2200:
    	.start = 1;
    	disablenpc "ord11-12"; //from npc/warps/pvp.txt
    	disablenpc "Devil Square Guardian#2";
    	mapannounce "ordeal_1-1","Devil Square is now closed.", bc_map;
    	getmapxy .@map$, .@x, .@y, UNITTYPE_NPC;
    	mapwarp "ordeal_1-1", .@map$, .@x, .@y;
    	killmonsterall "ordeal_1-1";
    	announce "Devil Square is OPEN. The event will begin in 5 minutes.", bc_all;
    	sleep 60000;
    	announce "Devil Square will begin in 4 minutes.", bc_all;
    	sleep 60000;
    	announce "Devil Square will begin in 3 minutes.", bc_all;
    	sleep 60000;
    	announce "Devil Square will begin in 2 minutes.", bc_all;
    	sleep 60000;
    	announce "Devil Square will begin in 1 minute.", bc_all;
    	sleep 60000;
    	announce "Devil Square has STARTED!", bc_all;
    	if ( !getmapusers("ordeal_1-1") )
    		goto OnStopEvent;
    	.start = 2;
    	.round = 1;
    	.mob = 75;
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] SOLDIER SKELETON",1028,10,strnpcinfo(0)+"::OnDevilDead";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] ORC ARCHER",1189,15,strnpcinfo(0)+"::OnDevilDead";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] SANDMAN",1165,10,strnpcinfo(0)+"::OnDevilDead";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] ARCHER SKELETON",1016,15,strnpcinfo(0)+"::OnDevilDead";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] MINOROUS",1149,15,strnpcinfo(0)+"::OnDevilDead";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] REQUIEM",1164,10,strnpcinfo(0)+"::OnDevilDead";
    	end;
    
    OnDevilDead:
    	.mob--;
    	if ( .mob == 25 || .mob == 5 )
    		announce "Devil Square : "+ .mob +" monsters remaining in round 1.", bc_map;
    	else if ( .mob <= 0 ) {
    		announce "Devil Square is entering round 2...", bc_map;
    		goto OnDevil2;
    	}
    	end;
    
    OnDevil2:
    	.round = 2;
    	.mob = 70;
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] GARGOYLE",1253,15,strnpcinfo(0)+"::OnDevilDead2";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] ALARM",1193,10,strnpcinfo(0)+"::OnDevilDead2";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] HIGH ORC",1213,10,strnpcinfo(0)+"::OnDevilDead2";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] INJUSTICE",1257,10,strnpcinfo(0)+"::OnDevilDead2";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] MIMIC",1191,15,strnpcinfo(0)+"::OnDevilDead2";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] WRAITH",1192,10,strnpcinfo(0)+"::OnDevilDead2";
    	end;
    
    OnDevilDead2:
    	.mob--;
    	if ( .mob == 25 || .mob == 5 )
    		announce "Devil Square : "+ .mob +" monsters remaining in round 2.", bc_map;
    	else if ( .mob <= 0 ) {
    		announce "Devil Square is entering round 3...", bc_map;
    		goto OnDevil3;
    	}
    	end;
    
    OnDevil3:
    	.round = 3;
    	.mob = 58;
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] ANOLIAN",1206,15,strnpcinfo(0)+"::OnDevilDead3";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] WANDERER",1208,15,strnpcinfo(0)+"::OnDevilDead3";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] DEVIRUCHI",1109,10,strnpcinfo(0)+"::OnDevilDead3";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] JOKER",1131,15,strnpcinfo(0)+"::OnDevilDead3";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] MOONLIGHT",1150,2,strnpcinfo(0)+"::OnDevilDead3";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] DARK ILLUSION",1302,1,strnpcinfo(0)+"::OnDevilDead3";
    	end;
    
    OnDevilDead3:
    	.mob--;
    	if ( .mob == 25 || .mob == 5 )
    		announce "Devil Square : "+ .mob +" monsters remaining in the final round.", bc_map;
    	else if ( .mob <= 0 ) {
    		announce "Devil Square : CONGRATULATIONS. These 10 Treasure Chests are yours.", bc_map;
    		goto OnDevil4;
    	}
    	end;
    
    OnDevil4:
    	.round = 4;
    	.mob = 10;
    	monster "ordeal_1-1",231,250,"Treasure Chest",1324,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",234,247,"Treasure Chest",1328,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",237,244,"Treasure Chest",1332,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",240,241,"Treasure Chest",1336,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",243,238,"Treasure Chest",1340,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",246,235,"Treasure Chest",1344,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",249,232,"Treasure Chest",1348,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",252,229,"Treasure Chest",1352,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",249,241,"Treasure Chest",1356,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",240,249,"Treasure Chest",1360,1,strnpcinfo(0)+"::OnTreasureDead";
    	end;
    
    OnTreasureDead:
    	.mob--;
    	announce "Devil Square : "+ strcharinfo(0) +" has opened the Treasure Chest at Devil Square.", bc_all;
    	if ( .mob <= 0 )
    		goto OnStopEvent;
    	end;
    
    OnStopEvent:
    	killmonsterall "ordeal_1-1";
    	enablenpc "ord11-12"; //from npc/warps/pvp.txt
    	enablenpc "Devil Square Guardian#2";
    	.start = .round = .mob = 0;
    	end;
    }
    
    ordeal_1-1,246,245,7	script	Devil Square Guardian#2	406,{
    	mes "[Exit]";
    	mes "Farewell.";
    	close2;
    	warp "SavePoint",0,0;
    	end;
    }
    
    ordeal_1-1	mapflag	nowarp
    ordeal_1-1	mapflag	nowarpto
    ordeal_1-1	mapflag	noteleport
    ordeal_1-1	mapflag	monster_noteleport
    ordeal_1-1	mapflag	nosave	SavePoint
    ordeal_1-1	mapflag	nomemo
    ordeal_1-1	mapflag	nobranch
    ordeal_1-1	mapflag	nopenalty
    ordeal_1-1	mapflag	noicewall

    Says npc_event Devil Square Guardian#1::OnDevilDead not found

    BUMP~

  2. //===== rAthena Script =======================================
    //= Devil Square
    //===== By: ==================================================
    //= Kirlein, Stillhard (translation), AnnieRuru (rewrite)
    //===== Current Version: =====================================
    //= 1.0
    //===== Compatible With: =====================================
    //= rAthena Project
    //===== Description: =========================================
    //= Devil Square, based on the event in MU Online.
    //= Defeat three waves of monsters for treasure.
    //===== Additional Comments: =================================
    //= 1.0 First version, edited. [Euphy]
    //============================================================
    
    prontera,147,140,5	script	Devil Square Guardian#1	406,{
    	set .@gm_level, 99; // GM level required to start/stop the event
    
    	mes "[Devil Square Guardian]";
    	mes "This is the entrance to ^FF0000Devil Square^000000.";
    	mes "If you fail or die, the door will close and you must wait until the event starts again to re-enter.";
    	next;
    	switch(select("Enter.:Information.:" + ((getgmlevel() >= .@gm_level) ? "GM Menu." : "") + ":Cancel.")) {
    	case 1:
    		if (.start != 1) { // registration period
    			mes "[Devil Square Guardian]";
    			mes "Devil Square is now closed.";
    			mes "It will open at these times:";
    			mes "00:00 , 02:00 , 04:00 , 06:00"; // display your times here
    			mes "08:00 , 10:00 , 12:00 , 14:00";
    			mes "16:00 , 18:00 , 20:00 , 22:00";
    			close;
    		}
    		if (BaseLevel < 70 || Zeny < 20000) { // requirements
    			mes "[Devil Square Guardian]";
    			mes "You do not meet the requirements to enter Devil Square.";
    			mes " ";
    			mes "Requirements:";
    			mes " - Base Level 70";
    			mes " - Registration fee 20,000z";
    			close;
    		}
    		Zeny -= 20000;
    		announce strcharinfo(0)+" has entered Devil Square.", bc_npc;
    		percentheal 100,100;
    		warp "ordeal_1-1",183,182;
    		close;
    	case 2:
    		mes "[Devil Square Guardian]";
    		mes "Inside, you will encounter 3 waves of monsters. The monsters will grow stronger with each wave.";
    		next;
    		mes "[Devil Square Guardian]";
    		mes "If you defeat all the enemies, you will be given the opportunity to open 10 Treasure Chests with items, equipment, and rare cards inside!";
    		close;
    	case 3:
    		mes "[Devil Square Guardian]";
    		switch (.start) { // event states
    			case 0: mes "Devil Square has not yet started."; break;
    			case 1: mes "Devil Square is currently accepting participants."; break;
    			case 2: mes "Devil Square Event is currently running on Round "+ .round +" with "+ .mob +" monsters remaining."; break;
    		}
    		next;
    		switch(select("Start event.:Stop event.:Cancel.")) {
    		case 1:
    			mes "[Devil Square Guardian]";
    			if (.start)
    				mes "Devil Square has already started.";
    			else {
    				mes "Starting Devil Square...";
    				donpcevent strnpcinfo(0)+"::OnStartEvent";
    			}
    			close;
    		case 2:
    			mes "[Devil Square Guardian]";
    			if (!.start)
    				mes "Devil Square has not yet started.";
    			else {
    				mes "Stopping Devil Square...";
    				donpcevent strnpcinfo(0)+"::OnStopEvent";
    			}
    			close;
    		case 3:
    			break;
    		}
    		break;
    	case 4:
    		break;
    	}
    	mes "[Devil Square Guardian]";
    	mes "Farewell.";
    	close;
    
    OnStartEvent:
    OnClock0000:
    OnClock0200:
    OnClock0400:
    OnClock0600:
    OnClock0800:
    OnClock1000:
    OnClock1200:
    OnClock1400:
    OnClock1600:
    OnClock1800:
    OnClock2000:
    OnClock2200:
    	.start = 1;
    	disablenpc "ord11-12"; //from npc/warps/pvp.txt
    	disablenpc "Devil Square Guardian#2";
    	mapannounce "ordeal_1-1","Devil Square is now closed.", bc_map;
    	getmapxy .@map$, .@x, .@y, UNITTYPE_NPC;
    	mapwarp "ordeal_1-1", .@map$, .@x, .@y;
    	killmonsterall "ordeal_1-1";
    	announce "Devil Square is OPEN. The event will begin in 5 minutes.", bc_all;
    	sleep 60000;
    	announce "Devil Square will begin in 4 minutes.", bc_all;
    	sleep 60000;
    	announce "Devil Square will begin in 3 minutes.", bc_all;
    	sleep 60000;
    	announce "Devil Square will begin in 2 minutes.", bc_all;
    	sleep 60000;
    	announce "Devil Square will begin in 1 minute.", bc_all;
    	sleep 60000;
    	announce "Devil Square has STARTED!", bc_all;
    	if ( !getmapusers("ordeal_1-1") )
    		goto OnStopEvent;
    	.start = 2;
    	.round = 1;
    	.mob = 75;
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] SOLDIER SKELETON",1028,10,strnpcinfo(0)+"::OnDevilDead";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] ORC ARCHER",1189,15,strnpcinfo(0)+"::OnDevilDead";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] SANDMAN",1165,10,strnpcinfo(0)+"::OnDevilDead";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] ARCHER SKELETON",1016,15,strnpcinfo(0)+"::OnDevilDead";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] MINOROUS",1149,15,strnpcinfo(0)+"::OnDevilDead";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] REQUIEM",1164,10,strnpcinfo(0)+"::OnDevilDead";
    	end;
    
    OnDevilDead:
    	.mob--;
    	if ( .mob == 25 || .mob == 5 )
    		announce "Devil Square : "+ .mob +" monsters remaining in round 1.", bc_map;
    	else if ( .mob <= 0 ) {
    		announce "Devil Square is entering round 2...", bc_map;
    		goto OnDevil2;
    	}
    	end;
    
    OnDevil2:
    	.round = 2;
    	.mob = 70;
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] GARGOYLE",1253,15,strnpcinfo(0)+"::OnDevilDead2";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] ALARM",1193,10,strnpcinfo(0)+"::OnDevilDead2";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] HIGH ORC",1213,10,strnpcinfo(0)+"::OnDevilDead2";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] INJUSTICE",1257,10,strnpcinfo(0)+"::OnDevilDead2";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] MIMIC",1191,15,strnpcinfo(0)+"::OnDevilDead2";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] WRAITH",1192,10,strnpcinfo(0)+"::OnDevilDead2";
    	end;
    
    OnDevilDead2:
    	.mob--;
    	if ( .mob == 25 || .mob == 5 )
    		announce "Devil Square : "+ .mob +" monsters remaining in round 2.", bc_map;
    	else if ( .mob <= 0 ) {
    		announce "Devil Square is entering round 3...", bc_map;
    		goto OnDevil3;
    	}
    	end;
    
    OnDevil3:
    	.round = 3;
    	.mob = 58;
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] ANOLIAN",1206,15,strnpcinfo(0)+"::OnDevilDead3";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] WANDERER",1208,15,strnpcinfo(0)+"::OnDevilDead3";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] DEVIRUCHI",1109,10,strnpcinfo(0)+"::OnDevilDead3";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] JOKER",1131,15,strnpcinfo(0)+"::OnDevilDead3";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] MOONLIGHT",1150,2,strnpcinfo(0)+"::OnDevilDead3";
    	areamonster "ordeal_1-1",183,182,246,244,"[DS] DARK ILLUSION",1302,1,strnpcinfo(0)+"::OnDevilDead3";
    	end;
    
    OnDevilDead3:
    	.mob--;
    	if ( .mob == 25 || .mob == 5 )
    		announce "Devil Square : "+ .mob +" monsters remaining in the final round.", bc_map;
    	else if ( .mob <= 0 ) {
    		announce "Devil Square : CONGRATULATIONS. These 10 Treasure Chests are yours.", bc_map;
    		goto OnDevil4;
    	}
    	end;
    
    OnDevil4:
    	.round = 4;
    	.mob = 10;
    	monster "ordeal_1-1",231,250,"Treasure Chest",1324,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",234,247,"Treasure Chest",1328,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",237,244,"Treasure Chest",1332,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",240,241,"Treasure Chest",1336,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",243,238,"Treasure Chest",1340,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",246,235,"Treasure Chest",1344,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",249,232,"Treasure Chest",1348,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",252,229,"Treasure Chest",1352,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",249,241,"Treasure Chest",1356,1,strnpcinfo(0)+"::OnTreasureDead";
    	monster "ordeal_1-1",240,249,"Treasure Chest",1360,1,strnpcinfo(0)+"::OnTreasureDead";
    	end;
    
    OnTreasureDead:
    	.mob--;
    	announce "Devil Square : "+ strcharinfo(0) +" has opened the Treasure Chest at Devil Square.", bc_all;
    	if ( .mob <= 0 )
    		goto OnStopEvent;
    	end;
    
    OnStopEvent:
    	killmonsterall "ordeal_1-1";
    	enablenpc "ord11-12"; //from npc/warps/pvp.txt
    	enablenpc "Devil Square Guardian#2";
    	.start = .round = .mob = 0;
    	end;
    }
    
    ordeal_1-1,246,245,7	script	Devil Square Guardian#2	406,{
    	mes "[Exit]";
    	mes "Farewell.";
    	close2;
    	warp "SavePoint",0,0;
    	end;
    }
    
    ordeal_1-1	mapflag	nowarp
    ordeal_1-1	mapflag	nowarpto
    ordeal_1-1	mapflag	noteleport
    ordeal_1-1	mapflag	monster_noteleport
    ordeal_1-1	mapflag	nosave	SavePoint
    ordeal_1-1	mapflag	nomemo
    ordeal_1-1	mapflag	nobranch
    ordeal_1-1	mapflag	nopenalty
    ordeal_1-1	mapflag	noicewall

    Says npc_event Devil Square Guardian#1::OnDevilDead not found

  3. 2 minutes ago, Ninja said:

    Change the item script of wickebine to.

    
    bonus5 bAutoSpell,"RG_STRIPARMOR",1,50,BF_SHORT,1;

    BF_SHORT is only for Melee class weapons. If you want to make it work for bows you will have to find a way to check the distance between the player and target.

    Thank you! Will try this! :)

  4. 22 hours ago, Ninja said:

    If I may suggest, you can have more than 1 approach here but I'd have 2 for you

    1. Separate each monster script's OnDummyKill. (i.e. comodo -> OnDummyKillComodo, etc.)

    2. Use OnNPCKillEvent and do a map check there.

    Thank you! Did your 1st solution

  5. -	script	Punching Bag	-1,{
    
    OnInit:
    	setmapflag("prontera",mf_monster_noteleport);
    	setmapflag("morocc",mf_monster_noteleport);
    	setmapflag("comodo",mf_monster_noteleport);
    	setmapflag("louyang",mf_monster_noteleport);
    
    	monster "comodo",191,141,"Punching Bag",1905,1,"Punching Bag::OnDummyKill";
    	monster "morocc",170,85,"Punching Bag",1905,1,"Punching Bag::OnDummyKill";
    	monster "prontera",136,171,"Punching Bag",1905,1,"Punching Bag::OnDummyKill";
    	monster "louyang",207,48,"Punching Bag",1905,1,"Punching Bag::OnDummyKill";
    
    	end;
    
    OnDummyKill:
    	monster "comodo",191,141,"Punching Bag",1905,1,"Punching Bag::OnDummyKill";
    	monster "morocc",170,85,"Punching Bag",1905,1,"Punching Bag::OnDummyKill";
    	monster "prontera",136,171,"Punching Bag",1905,1,"Punching Bag::OnDummyKill";
    	monster "louyang",207,48,"Punching Bag",1905,1,"Punching Bag::OnDummyKill";
    	end;
    
    OnPCAttackEvent:
    	if ( !@test_punch ) end;
    	@dps_damage += @damage;
    	end;
    
    }

    When I cast storm gust after killing many punching bags, they stack :(

  6. On 1/27/2017 at 8:07 PM, chowking said:
    
                // By pass FCP when using single strip skills by 100%(requires Glistening Coat).
                if ( sd && tsc && sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_ROGUE &&
    				( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] ||
    				skill_id == RG_STRIPSHIELD && tsc->data[SC_CP_SHIELD] ||
    				skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] ||
    				skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) {
    				int ii = pc_search_inventory(sd, ITEMID_COATING_BOTTLE);
    				if ( ii < MAX_INVENTORY ) {
                                           switch ( skill_id ) {
                                           case RG_STRIPWEAPON:
                                           		status_change_end( bl, SC_CP_WEAPON, INVALID_TIMER );
                                           		sc_start(src,bl,SC_STRIPWEAPON,"your success rate",skill_lv,skill_get_time(skill_id,skill_lv));
                                           		break;
                                           case RG_STRIPSHIELD:
                                           		status_change_end( bl, SC_CP_SHIELD, INVALID_TIMER );
                                           		sc_start(src,bl,SC_STRIPSHIELD,"your success rate",skill_lv,skill_get_time(skill_id,skill_lv));
                                           		break;
                                           case RG_STRIPARMOR:
                                           		status_change_end( bl, SC_CP_ARMOR, INVALID_TIMER );
                                           		sc_start(src,bl,SC_STRIPARMOR,"your success rate",skill_lv,skill_get_time(skill_id,skill_lv));
                                           		break;
                                           case RG_STRIPHELM:
                                           		status_change_end( bl, SC_CP_HELM, INVALID_TIMER );
                                           		sc_start(src,bl,SC_STRIPHELM,"your success rate",skill_lv,skill_get_time(skill_id,skill_lv));
                                           		break;
                                           }
                                           pc_delitem(sd, ii, 1, 0, 0, LOG_TYPE_CONSUME);
                                           clif_skill_nodamage( src, bl, skill_id, skill_lv, i );
                                           break;
                                      }
                                  }

     

    Hi sir, after adding this I got this error when recompiling

    Capture1.PNG

  7. On 8/30/2013 at 4:31 AM, Patskie said:

    trunk/src/map/skill.c :

     

    Find : 

    
    //Special message when trying to use strip on FCP [Jobbie]
            if( sd && skill_id == ST_FULLSTRIP && tsc && tsc->data[SC_CP_WEAPON] && tsc->data[SC_CP_HELM] && tsc->data[SC_CP_ARMOR] && tsc->data[SC_CP_SHIELD])
            {
                clif_gospel_info(sd, 0x28);
                break;
            }

    Add below : 

    
    if ( sd && tsc && sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_ROGUE && rand()%100 < 15
                 &&
                ( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] ||
                skill_id == RG_STRIPSHIELD && tsc->data[SC_CP_SHIELD] ||
                skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] ||
                skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) {
                int item_id = 7139; // Glistening Coat
                int ii;
                ARR_FIND( 0, MAX_INVENTORY, ii, sd->status.inventory[ii].nameid == item_id );
                if ( ii < MAX_INVENTORY ) {
                    pc_delitem( sd, ii, 1, 0, 0, LOG_TYPE_CONSUME);
                    switch ( skill_id ) {
                        case RG_STRIPWEAPON:
                            status_change_end( bl, SC_CP_WEAPON, INVALID_TIMER );
                            sc_start( NULL, bl, SC_STRIPWEAPON, 100, skill_lv, d );
                            break;
                        case RG_STRIPSHIELD:
                            status_change_end( bl, SC_CP_SHIELD, INVALID_TIMER );
                            sc_start( NULL, bl, SC_STRIPSHIELD, 100, skill_lv, d );
                            break;
                        case RG_STRIPARMOR:
                            status_change_end( bl, SC_CP_ARMOR, INVALID_TIMER );
                            sc_start( NULL, bl, SC_STRIPARMOR, 100, skill_lv, d );
                            break;
                        case RG_STRIPHELM:
                            status_change_end( bl, SC_CP_HELM, INVALID_TIMER );
                            sc_start( NULL, bl, SC_STRIPHELM, 100, skill_lv, d );
                            break;
                    }
                    clif_skill_nodamage( src, bl, skill_id, skill_lv, i );
                    break;
                }
            }

    Make sure you recompile your server after you've made the changes.

    Hi, I get this error when I recompile

    Capture.PNG

  8. 15 hours ago, peculiarro said:

    Hi, I changed my skill's after cast delay to 3 seconds.

    
    //-- WZ_STORMGUST
    89,6000:7000:8000:9000:10000:11000:12000:13000:14000:15000,3000,0,4600,12000,0

    ^ If this matters

     

    But my bragi is not working even if I use firebolt skill.

    I already disabled RENEWAL_CAST because Im using pre-re

    I checked again, event Apple of Idun not working with clown on my server :(

  9. Hi, I changed my skill's after cast delay to 3 seconds.

    //-- WZ_STORMGUST
    89,6000:7000:8000:9000:10000:11000:12000:13000:14000:15000,3000,0,4600,12000,0

    ^ If this matters

     

    But my bragi is not working even if I use firebolt skill.

    I already disabled RENEWAL_CAST because Im using pre-re

  10. On 5/9/2017 at 9:24 PM, K1NGRAFFY said:

    A poem of bragi has no effect on my server why?

    I put a cooldown in one job like wizard and still have a delay

     

    Thanks in advance :)

    Still no fix?

  11. 15 hours ago, Mephisto said:

    Test it and check if theres an error

    WoE.txt

    //===== rAthena Script =======================================
    //= Euphy's WOE Controller
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.5
    //===== Compatible With: =====================================
    //= rAthena Project
    //===== Description: =========================================
    //= A controller for War of Emperium designed for
    //= simplicity and ease of use.
    //= Many concepts taken from ToastOfDoom's script,
    //= and "rewards" function originally by Goddameit.
    //===== Additional Comments: =================================
    //= Be sure to disable the default agit controllers!
    //== npc\guild\agit_controller.txt
    //== npc\guild2\agit_start_se.txt
    //============================================================
    
    // Information NPC
    //============================================================
    prontera,154,196,4	script	WOE Information	835,{
    	doevent "WOE_CONTROL::OnMenu";
    	end;
    
    OnAgitStart:
    	while(agitcheck()) {
    		specialeffect EF_BEGINSPELL6;
    		sleep 425;
    	}
    	end;
    }
    
    // Script Core
    //============================================================
    -	script	WOE_CONTROL	-1,{
    function Disp_Owner; function Add_Zero;
    
    OnInit:
    
    // -----------------------------------------------------------
    //  Configuration settings.
    // -----------------------------------------------------------
    
    	set .CastleWarp,0;		// 1: Always enable all castle warps. | 0: Warp only to active castles.
    	set .AutoKick,1;		// Automatically kick players from inactive castles during WOE? (1:yes / 0:no)
    	set .NoOwner,1; 		// Automatically kick players from unconquered castles outside of WOE? (1:yes / 0:no)
    	set .ExitWarp,0;		// Warp all players from castles when WOE ends? (1:yes / 0:no)
    	set .GMAccess,99;		// GM level required to access Session Manager.
    	setarray .CDrop[0],7088,7086,7075,7078,7083,7081,7090,7077,7079,7085,7089,7091,7074,7092,7082,7073,7076,7084,7080;
    	set .Chance,rand(100);
    
    // -----------------------------------------------------------
    //  Reward options.
    // -----------------------------------------------------------
    //  [1] Enable rewards.
    //  [2] Mail all rewards.
    //      - If not set, players receive items in their inventory.
    //      - Only ONE item can be sent via mail, plus Zeny.
    //      - Note that offline players do NOT receive rewards.
    //  [4] Only reward Guild Masters.
    //      - If not set, all guild members are rewarded.
    //      - If mailing is enabled (option 2), offline Guild Masters WILL receive rewards.
    //  [8] Duplicate IP check.
    //      - Members in a guild with the same IP address are not rewarded.
    //      - If Guild Masters is enabled (option 4), this feature is not used.
    // -----------------------------------------------------------
    
    	// Combine values as needed (e.g. 1|8 = 1+8 = 9).
    	set .Options, 1;
    
    	// Rewards per castle.
    	// -- when given directly: <itemID>,<amount>{,<itemID>,<amount>,...}
    	// -- via mail (option 2): <itemID>,<amount>,<Zeny>
    	if(.Chance < 10){
    		setarray .Reward[0],.CDrop[rand(getarraysize(.CDrop))],1; // Random Castle Drop x 1
    	} else {
    		setarray .Reward[0],29321,1;
    		end;
    	}
    
    // -----------------------------------------------------------
    //  Constants (leave this section alone).
    // -----------------------------------------------------------
    
    	setarray .Castles$[0],
    		"prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05",
    		"payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05",
    		"gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05",
    		"aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05",
    		"arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05",
    		"schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05";
    	setarray .EndLabel$[0],"ar01","ar02","ar03","ar04","ar05","sc01","sc02","sc03","sc04","sc05";
    	setarray .Days$[0],"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday";
    	setarray .Regions$[0],"Prontera","Payon","Geffen","Aldebaran","Arunafeltz","Schwaltzvalt";
    	setarray .Map$[0],"prt_gld","pay_gld","gef_fild13","alde_gld","aru_gld","sch_gld";
    	setarray .MapX[0],134,240,153,111,208,121,295,317,140,204,214,308,143,193,305,48, 95,142,239,264,158,83, 68,299,292,293,288, 97,137, 71;
    	setarray .MapY[0], 65,128,137,240,240,233,116,293,160,266, 75,240,240,278, 87,83,249, 85,242, 90,272,47,155,345,107,100,252,196, 90,315;
    
    // -----------------------------------------------------------
    
    	set .Size, getarraysize($WOE_CONTROL);
    	if (.AutoKick || .NoOwner)
    		for(set .@i,0; .@i<30; set .@i,.@i+1) {
    			setmapflag .Castles$[.@i], mf_loadevent;
    			setd "."+.Castles$[.@i], .@i;
    		}
    	if (!agitcheck() && !agitcheck2()) sleep 4000;
    	set .Init,1;
    
    OnMinute00:
    	freeloop(1);
    	if (agitcheck() || agitcheck2()) {
    		for(set .@i,0; .@i<.Size; set .@i,.@i+4)
    			if (gettime(4) == $WOE_CONTROL[.@i] && gettime(3) == $WOE_CONTROL[.@i+2]) {
    			OnWOEEnd:
    				announce "The War Of Emperium is over!",bc_all|bc_woe;
    				AgitEnd; AgitEnd2;
    				sleep 1000;
    				for(set .@j,0; .@j<30; set .@j,.@j+1) {
    					if (.Active[0]&(1<<.@j)) Disp_Owner(.Castles$[.@j],1);
    					if (.ExitWarp) maprespawnguildid .Castles$[.@j],0,3;
    				}
    				if (.Options&1 && .Active[0] && .ForceEnd != 2) callsub OnReward, .Active[0];
    				deletearray .Active[0],2;
    				if (.ForceEnd) { set .ForceEnd,0; end; }
    				break;
    			}
    	}
    	if ((!agitcheck() && !agitcheck2()) || .Init) {
    		if (!agitcheck() && !agitcheck2()) set .Init,0;
    		for(set .@i,0; .@i<.Size; set .@i,.@i+4)
    			if (gettime(4) == $WOE_CONTROL[.@i] && gettime(3) >= $WOE_CONTROL[.@i+1] && gettime(3) < $WOE_CONTROL[.@i+2]) {
    				deletearray .Active[0],2;
    				set .Active[0], $WOE_CONTROL[.@i+3];
    				if (.Init) { AgitEnd; AgitEnd2; }
    				else announce "The War Of Emperium has begun!",bc_all|bc_woe;
    				sleep 1000;
    				AgitStart; AgitStart2;
    				for(set .@j,0; .@j<30; set .@j,.@j+1) {
    					if (.Active[0]&(1<<.@j)) {
    						if (!.Init) Disp_Owner(.Castles$[.@j],0);
    						set .Active[1], .Active[1] | (1<<((.@j/5)+1));
    					} else {
    						if (.@j<20) {
    							donpcevent "Agit#"+.Castles$[.@j]+"::OnAgitEnd";
    							killmonster .Castles$[.@j], "Agit#"+.Castles$[.@j]+"::OnAgitBreak";
    						} else {
    							donpcevent "Manager#"+.Castles$[.@j]+"::OnAgitEnd2";
    							killmonster .Castles$[.@j], "Steward#"+.EndLabel$[.@j-20]+"::OnStartArena";
    						}
    					}
    				}
    				break;
    			}
    	}
    	set .Init,0;
    	end;
    
    function Disp_Owner {
    	set .@o, getcastledata(getarg(0),1);
    	if (.@o) announce "The ["+getcastlename(getarg(0))+"] castle "+((getarg(1))?"has been conquered":"is currently held")+" by the ["+getguildname(.@o)+"] guild.",bc_all|bc_woe;
    	else announce "The ["+getcastlename(getarg(0))+"] castle is currently unoccupied.",bc_all|bc_woe;
    	return;
    }
    function Add_Zero {
    	return ((getarg(0)<10)?"0":"")+getarg(0)+(getarg(1,0)?".":":")+"00";
    }
    
    OnReward:
    	set .@sql$, ((.Options&4)?"position = 0":"online = 1");
    	if (.Options&2) set .@str$,gettimestr("%B %d, %Y",21);
    	freeloop(1);
    	for(set .@i,0; .@i<30; set .@i,.@i+1)
    		if (getarg(0)&(1<<.@i)) {
    			set .@gid, getcastledata(.Castles$[.@i],1);
    			if (!.@gid) continue;
    			set .@size, query_sql("SELECT account_id,char_id FROM `guild_member` WHERE guild_id = '"+.@gid+"' AND "+.@sql$,.@aid,.@cid);
    			for(set .@j,0; .@j<.@size; set .@j,.@j+1) {
    				if (.Options&8 && !(.Options&4)) {
    					set .@ip$, replacestr(getcharip(.@aid[.@j]),".","a");
    					if (getd(".@ip_"+.@i+"_"+.@ip$)) continue;
    					setd ".@ip_"+.@i+"_"+.@ip$,1;
    				}
    				if (.Options&2) {
    					query_sql("INSERT INTO `mail` (send_name,dest_id,title,message,nameid,amount,identify,zeny,time) VALUES ("+
    					          "'no-reply',"+.@cid[.@j]+",'** Siege Reward: "+getcastlename(.Castles$[.@i])+" **',"+
    					          "'Brave one,% % Congratulations!% Your guild has successfully occupied% territory in the War of Emperium on% "+.@str$+".% % % % % [ Your reward is attached. ]',"+
    					          .Reward[0]+","+.Reward[1]+",0,"+.Reward[2]+",UNIX_TIMESTAMP(NOW()))");
    					if (!getd(".@str_"+.@cid[.@j]) && isloggedin(.@aid[.@j],.@cid[.@j])) {
    						setd ".@str_"+.@cid[.@j],1;
    						message rid2name(.@aid[.@j]),"You've got mail! Please re-login to update your mailing list.";
    					}
    				} else if (isloggedin(.@aid[.@j])) {
    					for(set .@k,0; .@k<getarraysize(.Reward); set .@k,.@k+2)
    						getitem .Reward[.@k], .Reward[.@k+1], .@aid[.@j];
    					message rid2name(.@aid[.@j]),"You have been rewarded for conquering "+getcastlename(.Castles$[.@i])+".";
    				}
    			}
    		}
    	if (.Options&2) query_sql("UPDATE `mail` SET message = REPLACE(message,'%',CHAR(13)) WHERE send_name = 'no-reply'");
    	return;
    
    OnPCLoadMapEvent:
    	if (!compare(strcharinfo(3),"g_cas")) end;
    	if (((.AutoKick && .Active[0]) || (.NoOwner && !getcastledata(strcharinfo(3),1))) && !(.Active[0]&(1<<getd("."+strcharinfo(3))))) {
    		if (getcharid(2) && getcastledata(strcharinfo(3),1) == getcharid(2)) end;
    		sleep2 1000;
    		message strcharinfo(0), getcastlename(strcharinfo(3))+" is currently inactive.";
    		sleep2 5000;
    		if (compare(strcharinfo(3),"g_cas")) warp "SavePoint",0,0;
    	}
    	end;
    
    OnMenu:
    while(1) {
    	mes "[WOE Information]";
    	if (agitcheck() || agitcheck2()) {
    		if (.Active[0]) {
    			for(set .@i,0; .@i<.Size; set .@i,.@i+4)
    				if (gettime(4) == $WOE_CONTROL[.@i] && gettime(3) >= $WOE_CONTROL[.@i+1] && gettime(3) < $WOE_CONTROL[.@i+2]) {
    					set .@i, $WOE_CONTROL[.@i+2];
    					break;
    				}
    			mes "The War of Emperium is ^0055FFactive^000000 until ^FF0000"+Add_Zero(.@i)+"^000000 in the following regions:";
    			mes " ";
    			for(set .@i,0; .@i<6; set .@i,.@i+1)
    				if (.Active[1]&(1<<(.@i+1))) mes " > ^777777"+.Regions$[.@i]+"^000000";
    		} else
    			mes "The War of Emperium is ^0055FFactive^000000.";
    	} else {
    		for(set .@i,0; .@i<.Size; set .@i,.@i+4)
    			if ((gettime(4) == $WOE_CONTROL[.@i] && gettime(3) <= $WOE_CONTROL[.@i+1]) || gettime(4) < $WOE_CONTROL[.@i]) {
    				setarray .@time[0],$WOE_CONTROL[.@i],$WOE_CONTROL[.@i+1];
    				break;
    			}
    		if (!getarraysize(.@time))
    			setarray .@time[0],$WOE_CONTROL[0],$WOE_CONTROL[1];
    		mes "The War of Emperium is ^777777inactive^000000.";
    		if (.Size) {
    			mes " ";
    			mes "The next session will begin";
    			mes "on ^0055FF"+.Days$[.@time[0]]+"^000000 at "+Add_Zero(.@time[1])+"^000000.";
    		}
    	}
    	next;
    	switch(select(""+((.CastleWarp || .Active[1])?" ~ Warp to castles...":"")+": ~ Check schedule...: ~ View castle owners...:"+((getgmlevel()<.GMAccess || !getgmlevel())?"":" ~ Manage sessions...")+": ~ ^777777Cancel^000000")) {
    	case 1:
    		if (.CastleWarp) set .@clr$,"^0055FF";
    		set .@menu$,"";
    		for(set .@i,0; .@i<6; set .@i,.@i+1) {
    			if (.CastleWarp || .Active[1]&(1<<(.@i+1)))
    				set .@menu$, .@menu$+" ~ "+((.Active[1]&(1<<(.@i+1)))?.@clr$:"^777777")+.Regions$[.@i]+" Castles^000000";
    			set .@menu$, .@menu$+":";
    		}
    		set .@i, select(.@menu$)-1;
    		set .@menu$,"";
    		for(set .@j,.@i*5; .@j<(.@i*5)+5; set .@j,.@j+1) {
    			if (.CastleWarp || .Active[0]&(1<<.@j))
    				set .@menu$, .@menu$+" ~ "+((.Active[0]&(1<<.@j))?.@clr$:"^777777")+getcastlename(.Castles$[.@j])+"^000000";
    			set .@menu$, .@menu$+":";
    		}
    		set .@j, select(.@menu$)-1;
    		warp .Map$[.@i],.MapX[(.@i*5)+.@j],.MapY[(.@i*5)+.@j];
    		close;
    	case 2:
    		mes "[Schedule]";
    		if (.Size) {
    			freeloop(1);
    			for(set .@i,0; .@i<.Size; set .@i,.@i+4) {
    				mes "> ^FF0000"+.Days$[$WOE_CONTROL[.@i]]+" ("+Add_Zero($WOE_CONTROL[.@i+1])+"-"+Add_Zero($WOE_CONTROL[.@i+2])+")^000000";
    				for(set .@j,0; .@j<30; set .@j,.@j+1)
    					if ($WOE_CONTROL[.@i+3]&(1<<.@j)) mes "  ~ "+getcastlename(.Castles$[.@j])+" ^777777("+.Castles$[.@j]+")^000000";
    				if (.@i+4 < .Size) mes " ";
    			}
    			freeloop(0);
    		} else
    			mes "No times are configured.";
    		next;
    		break;
    	case 3:
    		mes "[Castle Ownership]";
    		for(set .@i,0; .@i<6; set .@i,.@i+1) {
    			set .@k, .@i*5;
    			mes "> ^FF0000"+.Regions$[.@i]+"^000000";
    			for(set .@j,.@k; .@j<(.@k+5); set .@j,.@j+1) { 
    				set .@t, getcastledata(.Castles$[.@j],1);
    				mes "  ~ "+getcastlename(.Castles$[.@j])+": "+((.@t)?"^0055FF"+getguildname(.@t):"^777777unoccupied")+"^000000";
    			}
    			if (.@i < 5) mes " ";
    		}
    		next;
    		break;
    	case 4:
    	while(1) {
    		mes "[Session Manager]";
    		mes "There are ^0055FF"+(.Size/4)+" session(s)^000000 configured.";
    		mes "What would you like to do?";
    		next;
    		switch(select(" ~ Add a session...: ~ Delete a session...: ~ Reload settings...:"+((agitcheck() || agitcheck2())?" ~ End WOE session...":"")+": ~ ^777777Go back^000000")) {
    		case 1:
    			mes "[New Session]";
    			if (.Size > 127) {
    				mes "You have already reached the maximum of 32 sessions.";
    				next;
    				break;
    			}
    			mes "Select a day.";
    			next;
    			set .@Day, select(" ~ "+implode(.Days$,": ~ "))-1;
    			mes "[New Session]";
    			mes "Select a start time for ^0055FF"+.Days$[.@Day]+"^000000.";
    			next;
    			set .@menu$,"";
    			for(set .@i,0; .@i<23; set .@i,.@i+1)
    				set .@menu$, .@menu$+" ~ "+Add_Zero(.@i,1)+":";
    			set .@Start, select(.@menu$)-1;
    			mes "[New Session]";
    			mes "Select an end time for ^0055FF"+.Days$[.@Day]+"^000000.";
    			next;
    			set .@menu$,"";
    			for(set .@i,.@Start+1; .@i<24; set.@i,.@i+1)
    				set .@menu$, .@menu$+" ~ "+Add_Zero(.@i,1)+":";
    			set .@End, select(.@menu$)+.@Start;
    			for(set .@i,0; .@i<.Size; set .@i,.@i+4)
    				if (.@Day == $WOE_CONTROL[.@i] &&
    				   ((.@Start >= $WOE_CONTROL[.@i+1] && .@Start < $WOE_CONTROL[.@i+2]) ||
    				    (.@End > $WOE_CONTROL[.@i+1] && .@End <= $WOE_CONTROL[.@i+2]) ||
    				    (.@Start <= $WOE_CONTROL[.@i+1] && .@End >= $WOE_CONTROL[.@i+2]))) {
    					mes "[New Session]";
    					mes "The chosen times overlap with an existing session.";
    					next;
    					set .@d,1;
    					break;
    				}
    			if (.@d) { set .@d,0; break; }
    			set .@Castle,0;
    			while(1) {
    				mes "[New Session]";
    				mes "^0055FF"+.Days$[.@Day]+" ("+Add_Zero(.@Start)+"-"+Add_Zero(.@End)+")^000000";
    				mes " > Castles:";
    				if (!.@Castle)
    					mes "   ~ ^777777(none selected)^000000";
    				else for(set .@i,0; .@i<30; set .@i,.@i+1)
    					if (.@Castle&(1<<.@i)) mes "   ~ "+getcastlename(.Castles$[.@i])+" ("+.Castles$[.@i]+")";
    				next;
    				set .@menu$,((.@Castle)?" ~ ^FF0000Finished...^000000":"")+":";
    				for(set .@i,0; .@i<30; set .@i,.@i+1)
    					set .@menu$, .@menu$+" ~ "+((.@Castle&(1<<.@i))?"^0055FF":"")+getcastlename(.Castles$[.@i])+" ("+.Castles$[.@i]+")^000000:";
    				set .@i, select(.@menu$)-1;
    				if (.@i)
    					set .@Castle, .@Castle^(1<<(.@i-1));
    				else {
    					mes "[New Session]";
    					mes "Are you sure?";
    					next;
    					switch(select(" ~ ^0055FFAdd session...^000000: ~ Continue selecting castles...: ~ ^777777Cancel^000000")) {
    					case 1:
    						for(set .@i,0; .@i<.Size; set .@i,.@i+4)
    							if ((.@Day == $WOE_CONTROL[.@i] && .@End <= $WOE_CONTROL[.@i+1]) || .@Day < $WOE_CONTROL[.@i]) {
    								set .@d,1;
    								break;
    							}
    						if (!.@d) { set .@d,1; set .@i,.Size; }
    						copyarray $WOE_CONTROL[.@i+4], $WOE_CONTROL[.@i], .Size-.@i;
    						setarray $WOE_CONTROL[.@i], .@Day, .@Start, .@End, .@Castle;
    						set .Size, getarraysize($WOE_CONTROL);
    					case 3:
    						mes "[New Session]";
    						mes ((.@d)?"Session added.":"Cancelled.");
    						next;
    						set .@d,1;
    					case 2:
    						break;
    					}
    					if (.@d) { set .@d,0; break; }
    				}
    			}
    			break;
    		case 2:
    			mes "[Remove Session]";
    			if (!.Size) {
    				mes "There are no sessions configured.";
    				next;
    				break;
    			}
    			mes "Select a session to remove.";
    			next;
    			set .@menu$,"";
    			for(set .@i,0; .@i<.Size; set .@i,.@i+4)
    				set .@menu$, .@menu$+" ~ "+.Days$[$WOE_CONTROL[.@i]]+" ("+Add_Zero($WOE_CONTROL[.@i+1],1)+"-"+Add_Zero($WOE_CONTROL[.@i+2],1)+"):";
    			set .@menu$, .@menu$+" ~ ^777777Cancel^000000";
    			set .@i, select(.@menu$)-1;
    			if (.@i == (.Size/4)) break;
    			mes "[Remove Session]";
    			mes "Delete ^0055FF"+.Days$[$WOE_CONTROL[.@i*4]]+"'s^000000 session?";
    			mes "This action cannot be undone.";
    			next;
    			set .@j, select(" ~ ^FF0000Delete session...^000000: ~ ^777777Cancel^000000");
    			mes "[Remove Session]";
    			if (.@j == 2)
    				mes "Cancelled.";
    			else {
    				deletearray $WOE_CONTROL[.@i*4],4;
    				set .Size, getarraysize($WOE_CONTROL);
    				mes "Session deleted.";
    			}
    			next;
    			break;
    		case 3:
    			mes "[Reload Settings]";
    			mes "This will trigger all events related to new session configurations, if any.";
    			if (agitcheck() || agitcheck2()) {
    				mes " ";
    				mes "Be aware that this will disrupt the current WOE session.";
    			}
    			next;
    			set .@i, select(" ~ ^0055FFReload settings...^000000: ~ ^777777Cancel^000000");
    			mes "[Reload Settings]";
    			if (.@i == 2) mes "Cancelled.";
    			else {
    				set .Init,1;
    				donpcevent "WOE_CONTROL::OnMinute00";
    				mes "Variables have been re-initialized.";
    			}
    			next;
    			break;
    		case 4:
    			mes "[Force Agit End]";
    			if (!agitcheck() && !agitcheck2())  {
    				mes "WOE has already ended.";
    				next;
    				break;
    			}
    			mes "This command will safely execute all AgitEnd events.";
    			mes " ";
    			mes "Kill the current WOE session?";
    			next;
    			set .@i, select(" ~ ^FF0000End session...^000000:"+((.Options&1)?" ~ ^FF0000End session without rewards...^000000":"")+": ~ ^777777Cancel^000000");
    			mes "[Force Agit End]";
    			if (.@i == 3)
    				mes "Cancelled.";
    			else {
    				set .ForceEnd, .@i;
    				donpcevent "WOE_CONTROL::OnWOEEnd";
    				mes "WOE session terminated.";
    			}
    			next;
    			break;
    		case 5:
    			set .@d,1; break;
    		}
    		if (.@d) { set .@d,0; break; }
    		} break;
    	case 5:
    		close;
    	} }
    }

    Changed your set .CDrop[0] to setarray .CDrop[0]

    Capture.PNG

×
×
  • Create New...