|  |  | @ -143,6 +143,7 @@ public class WpakPowerManager { | 
			
		
	
		
		
			
				
					
					|  |  |  |         //stunned check
 |  |  |  |         //stunned check
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         PlayerBonuses bonus = playerCharacter.getBonuses(); |  |  |  |         PlayerBonuses bonus = playerCharacter.getBonuses(); | 
			
		
	
		
		
			
				
					
					|  |  |  |         mbEnums.SourceType sourceType = mbEnums.SourceType.GetSourceType(powerCast.category); |  |  |  |         mbEnums.SourceType sourceType = mbEnums.SourceType.GetSourceType(powerCast.category); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (bonus != null && (bonus.getBool(mbEnums.ModType.Stunned, mbEnums.SourceType.None) || bonus.getBool(mbEnums.ModType.CannotCast, mbEnums.SourceType.None) || bonus.getBool(mbEnums.ModType.BlockedPowerType, sourceType))) |  |  |  |         if (bonus != null && (bonus.getBool(mbEnums.ModType.Stunned, mbEnums.SourceType.None) || bonus.getBool(mbEnums.ModType.CannotCast, mbEnums.SourceType.None) || bonus.getBool(mbEnums.ModType.BlockedPowerType, sourceType))) | 
			
		
	
		
		
			
				
					
					|  |  |  |             return true; |  |  |  |             return true; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -177,9 +178,10 @@ public class WpakPowerManager { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         //validate prereqs for power cast
 |  |  |  |         //validate prereqs for power cast
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         //equipment prereqs
 |  |  |  |         //equipment prereqs
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (!powerCast.equipmentPreReq.isEmpty()) { |  |  |  |         if (!powerCast.equipmentPreReq.isEmpty()) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             for (EquipmentPreReq prereq : powerCast.equipmentPreReq) { |  |  |  |             for (EquipmentPreReq prereq : powerCast.equipmentPreReq) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 String requiredSkill = prereq.skill; |  |  |  |                 String requiredSkill = prereq.skill; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                 if (playerCharacter.charItemManager.equipped.get(prereq.slot) != null) { |  |  |  |                 if (playerCharacter.charItemManager.equipped.get(prereq.slot) != null) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                     Item equippedItem = playerCharacter.charItemManager.equipped.get(prereq.slot); |  |  |  |                     Item equippedItem = playerCharacter.charItemManager.equipped.get(prereq.slot); | 
			
		
	
		
		
			
				
					
					|  |  |  |                     if (!equippedItem.template.item_skill_mastery_used.equals(requiredSkill) && !equippedItem.template.item_skill_used.equals(requiredSkill)) |  |  |  |                     if (!equippedItem.template.item_skill_mastery_used.equals(requiredSkill) && !equippedItem.template.item_skill_used.equals(requiredSkill)) | 
			
		
	
	
		
		
			
				
					|  |  | @ -188,7 +190,6 @@ public class WpakPowerManager { | 
			
		
	
		
		
			
				
					
					|  |  |  |                     return true; |  |  |  |                     return true; | 
			
		
	
		
		
			
				
					
					|  |  |  |                 } |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         //effect prereqs
 |  |  |  |         //effect prereqs
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (!powerCast.effectPreReqs.isEmpty()) { |  |  |  |         if (!powerCast.effectPreReqs.isEmpty()) { | 
			
		
	
	
		
		
			
				
					|  |  | @ -239,6 +240,7 @@ public class WpakPowerManager { | 
			
		
	
		
		
			
				
					
					|  |  |  |             Dispatch dispatch = Dispatch.borrow(playerCharacter, recyclePowerMsg); |  |  |  |             Dispatch dispatch = Dispatch.borrow(playerCharacter, recyclePowerMsg); | 
			
		
	
		
		
			
				
					
					|  |  |  |             DispatchManager.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.PRIMARY); |  |  |  |             DispatchManager.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.PRIMARY); | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         int tr = msg.getNumTrains(); |  |  |  |         int tr = msg.getNumTrains(); | 
			
		
	
		
		
			
				
					
					|  |  |  |         DispatchManager.dispatchMsgToInterestArea(playerCharacter, msg, mbEnums.DispatchChannel.PRIMARY, MBServerStatics.CHARACTER_LOAD_RANGE, sendCastToSelf, false); |  |  |  |         DispatchManager.dispatchMsgToInterestArea(playerCharacter, msg, mbEnums.DispatchChannel.PRIMARY, MBServerStatics.CHARACTER_LOAD_RANGE, sendCastToSelf, false); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -252,7 +254,6 @@ public class WpakPowerManager { | 
			
		
	
		
		
			
				
					
					|  |  |  |             playerCharacter.setSit(false); |  |  |  |             playerCharacter.setSit(false); | 
			
		
	
		
		
			
				
					
					|  |  |  |             UpdateStateMsg updateStateMsg = new UpdateStateMsg(playerCharacter); |  |  |  |             UpdateStateMsg updateStateMsg = new UpdateStateMsg(playerCharacter); | 
			
		
	
		
		
			
				
					
					|  |  |  |             DispatchManager.dispatchMsgToInterestArea(playerCharacter, updateStateMsg, mbEnums.DispatchChannel.PRIMARY, MBServerStatics.CHARACTER_LOAD_RANGE, true, false); |  |  |  |             DispatchManager.dispatchMsgToInterestArea(playerCharacter, updateStateMsg, mbEnums.DispatchChannel.PRIMARY, MBServerStatics.CHARACTER_LOAD_RANGE, true, false); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         // update cast (use skill) fail condition
 |  |  |  |         // update cast (use skill) fail condition
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -267,13 +268,11 @@ public class WpakPowerManager { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         // set player is casting for regens
 |  |  |  |         // set player is casting for regens
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (time > 100) { |  |  |  |         if (time > 100) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             playerCharacter.update(); |  |  |  |             playerCharacter.update(); | 
			
		
	
		
		
			
				
					
					|  |  |  |             playerCharacter.setIsCasting(true); |  |  |  |             playerCharacter.setIsCasting(true); | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         playerCharacter.setLastMovementState(playerCharacter.getMovementState()); |  |  |  |         playerCharacter.setLastMovementState(playerCharacter.getMovementState()); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         // run timer job to end cast
 |  |  |  |         // run timer job to end cast
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -292,15 +291,19 @@ public class WpakPowerManager { | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static void finishUsePower(PerformActionMsg msg, PlayerCharacter caster, AbstractWorldObject target) { |  |  |  |     public static void finishUsePower(PerformActionMsg msg, PlayerCharacter caster, AbstractWorldObject target) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         Power powerUsed = _powersLookup.get(msg.getPowerUsedID()); |  |  |  |         Power powerUsed = _powersLookup.get(msg.getPowerUsedID()); | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (powerUsed == null) |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (powerUsed == null) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             Logger.error("Invalid power: " + msg.getPowerUsedID()); | 
			
		
	
		
		
			
				
					
					|  |  |  |             return; |  |  |  |             return; | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (powerUsed.maxMobTargets > 1 || powerUsed.maxPlayerTargets > 1) { |  |  |  |         } | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (powerUsed.maxMobTargets > 1 || powerUsed.maxPlayerTargets > 1) | 
			
		
	
		
		
			
				
					
					|  |  |  |             AoeHandler(caster, target, powerUsed, msg.getNumTrains()); |  |  |  |             AoeHandler(caster, target, powerUsed, msg.getNumTrains()); | 
			
		
	
		
		
			
				
					
					|  |  |  |         } else { |  |  |  |         else | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             applyAllPowerEffects(caster, powerUsed, msg.getNumTrains(), target); |  |  |  |             applyAllPowerEffects(caster, powerUsed, msg.getNumTrains(), target); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static void AoeHandler(PlayerCharacter caster, AbstractWorldObject target, Power powerUsed, int rank) { |  |  |  |     private static void AoeHandler(PlayerCharacter caster, AbstractWorldObject target, Power powerUsed, int rank) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |