@ -180,9 +180,7 @@ public class MobileFSM {
mob . stopPatrolTime = System . currentTimeMillis ( ) ;
mob . stopPatrolTime = System . currentTimeMillis ( ) ;
return ;
return ;
}
}
//wait between 10 and 15 seconds after reaching patrol point before moving
if ( mob . stopPatrolTime + ( MBServerStatics . AI_PATROL_DIVISOR * 1000 ) > System . currentTimeMillis ( ) )
int patrolDelay = ThreadLocalRandom . current ( ) . nextInt ( 10000 ) + 5000 ;
if ( mob . stopPatrolTime + patrolDelay > System . currentTimeMillis ( ) )
//early exit while waiting to patrol again
//early exit while waiting to patrol again
return ;
return ;
//guard captains inherit barracks patrol points dynamically
//guard captains inherit barracks patrol points dynamically
@ -226,6 +224,9 @@ public class MobileFSM {
// mobile in the proper state to cast.
// mobile in the proper state to cast.
if ( mob = = null )
if ( mob = = null )
return false ;
return false ;
if ( ThreadLocalRandom . current ( ) . nextInt ( 100 ) > MBServerStatics . AI_POWER_CHANCE ) {
return false ;
}
if ( mob . mobPowers . isEmpty ( ) )
if ( mob . mobPowers . isEmpty ( ) )
return false ;
return false ;
if ( mob . nextCastTime = = 0 )
if ( mob . nextCastTime = = 0 )
@ -272,12 +273,7 @@ public class MobileFSM {
msg = PowersManager . createPowerMsg ( mobPower , powerRank , mob , target ) ;
msg = PowersManager . createPowerMsg ( mobPower , powerRank , mob , target ) ;
msg . setUnknown04 ( 2 ) ;
msg . setUnknown04 ( 2 ) ;
PowersManager . finishUseMobPower ( msg , mob , 0 , 0 ) ;
PowersManager . finishUseMobPower ( msg , mob , 0 , 0 ) ;
// Default minimum seconds between cast = 10
mob . nextCastTime = System . currentTimeMillis ( ) + ( MBServerStatics . AI_POWER_DIVISOR * 1000 ) ;
long coolDown = mobPower . getCooldown ( ) ;
if ( coolDown < 10000 )
mob . nextCastTime = System . currentTimeMillis ( ) + 10000 + coolDown ;
else
mob . nextCastTime = System . currentTimeMillis ( ) + coolDown ;
return true ;
return true ;
}
}
return false ;
return false ;