mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-07-13 15:34:42 +00:00
Reduce the amount of actor message spam from vanu turrets recharging their ammo constantly
This commit is contained in:
parent
eabb952683
commit
31440d341b
3 changed files with 23 additions and 5 deletions
|
|
@ -26,6 +26,7 @@ object FacilityTurret {
|
||||||
}
|
}
|
||||||
|
|
||||||
final case class RechargeAmmo()
|
final case class RechargeAmmo()
|
||||||
|
final case class WeaponDischarged()
|
||||||
|
|
||||||
import akka.actor.ActorContext
|
import akka.actor.ActorContext
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package net.psforever.objects.serverobject.turret
|
||||||
|
|
||||||
import akka.actor.Actor
|
import akka.actor.Actor
|
||||||
import net.psforever.objects.ballistics.ResolvedProjectile
|
import net.psforever.objects.ballistics.ResolvedProjectile
|
||||||
import net.psforever.objects.{GlobalDefinitions, Player, Tool}
|
import net.psforever.objects.{DefaultCancellable, GlobalDefinitions, Player, Tool}
|
||||||
import net.psforever.objects.equipment.{Ammo, JammableMountedWeapons}
|
import net.psforever.objects.equipment.{Ammo, JammableMountedWeapons}
|
||||||
import net.psforever.objects.serverobject.CommonMessages
|
import net.psforever.objects.serverobject.CommonMessages
|
||||||
import net.psforever.objects.serverobject.mount.MountableBehavior
|
import net.psforever.objects.serverobject.mount.MountableBehavior
|
||||||
|
|
@ -39,10 +39,9 @@ class FacilityTurretControl(turret : FacilityTurret) extends Actor
|
||||||
def JammableObject = turret
|
def JammableObject = turret
|
||||||
def DamageableObject = turret
|
def DamageableObject = turret
|
||||||
def RepairableObject = turret
|
def RepairableObject = turret
|
||||||
if(turret.Definition == GlobalDefinitions.vanu_sentry_turret) {
|
|
||||||
// todo: Schedule this to start when weapon is discharged, not all the time
|
// Used for timing ammo recharge for vanu turrets in caves
|
||||||
context.system.scheduler.schedule(3 seconds, 200 milliseconds, self, FacilityTurret.RechargeAmmo())
|
var weaponAmmoRechargeTimer = DefaultCancellable.obj
|
||||||
}
|
|
||||||
|
|
||||||
def receive : Receive = checkBehavior
|
def receive : Receive = checkBehavior
|
||||||
.orElse(jammableBehavior)
|
.orElse(jammableBehavior)
|
||||||
|
|
@ -65,6 +64,13 @@ class FacilityTurretControl(turret : FacilityTurret) extends Actor
|
||||||
case _ => ;
|
case _ => ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case FacilityTurret.WeaponDischarged() =>
|
||||||
|
if(weaponAmmoRechargeTimer != DefaultCancellable.obj) {
|
||||||
|
weaponAmmoRechargeTimer.cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
weaponAmmoRechargeTimer = context.system.scheduler.schedule(3 seconds, 200 milliseconds, self, FacilityTurret.RechargeAmmo())
|
||||||
|
|
||||||
case FacilityTurret.RechargeAmmo() =>
|
case FacilityTurret.RechargeAmmo() =>
|
||||||
val weapon = turret.ControlledWeapon(1).get.asInstanceOf[net.psforever.objects.Tool]
|
val weapon = turret.ControlledWeapon(1).get.asInstanceOf[net.psforever.objects.Tool]
|
||||||
// recharge when last shot fired 3s delay, +1, 200ms interval
|
// recharge when last shot fired 3s delay, +1, 200ms interval
|
||||||
|
|
@ -77,6 +83,11 @@ class FacilityTurretControl(turret : FacilityTurret) extends Actor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(weapon.Magazine == weapon.MaxMagazine && weaponAmmoRechargeTimer != DefaultCancellable.obj) {
|
||||||
|
weaponAmmoRechargeTimer.cancel()
|
||||||
|
weaponAmmoRechargeTimer = DefaultCancellable.obj
|
||||||
|
}
|
||||||
|
|
||||||
case _ => ;
|
case _ => ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5850,6 +5850,12 @@ class WorldSessionActor extends Actor
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
projectilesToCleanUp(projectileIndex) = false
|
projectilesToCleanUp(projectileIndex) = false
|
||||||
|
|
||||||
|
obj match {
|
||||||
|
case turret : FacilityTurret if turret.Definition == GlobalDefinitions.vanu_sentry_turret =>
|
||||||
|
turret.Actor ! FacilityTurret.WeaponDischarged()
|
||||||
|
case _ => ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
log.warn(s"WeaponFireMessage: $player's ${tool.Definition.Name} projectile is too far from owner position at time of discharge ($distanceToOwner > $acceptableDistanceToOwner); suspect")
|
log.warn(s"WeaponFireMessage: $player's ${tool.Definition.Name} projectile is too far from owner position at time of discharge ($distanceToOwner > $acceptableDistanceToOwner); suspect")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue