reactivating maelstrom availability; restore damage dealing potential to the maelstrom grenades; changing damage profile to 'no radial degrade'

This commit is contained in:
Fate-JH 2025-11-30 22:15:47 -05:00
parent 049e8a2293
commit 64b86a984e
4 changed files with 16 additions and 8 deletions

View file

@ -55,7 +55,7 @@ add_property lasher holstertime 750
add_property lasher_projectile_ap lasher_projectile_ap false add_property lasher_projectile_ap lasher_projectile_ap false
add_property lasher_projectile_ap lasher_projectile true add_property lasher_projectile_ap lasher_projectile true
add_property lightgunship maxhealth 855 add_property lightgunship maxhealth 855
add_property maelstrom allowed false add_property maelstrom allowed true
add_property maelstrom equiptime 1000 add_property maelstrom equiptime 1000
add_property maelstrom holstertime 1000 add_property maelstrom holstertime 1000
add_property magcutter equiptime 250 add_property magcutter equiptime 250

View file

@ -132,7 +132,10 @@ class WeaponAndProjectileLogic(val ops: WeaponAndProjectileOperations, implicit
} }
//... //...
if (list.isEmpty) { if (list.isEmpty) {
ops.handleProxyDamage(pkt.projectile_guid, pkt.hit_info.map(_.hit_pos).getOrElse(Vector3.Zero)) ops.handleProxyDamage(pkt.projectile_guid, pkt.hit_info.map(_.hit_pos).getOrElse(Vector3.Zero)).foreach {
case (target, proxy, hitPos, _) =>
ops.resolveProjectileInteraction(target, proxy, DamageResolution.Hit, hitPos)
}
} }
} }
} }
@ -182,7 +185,10 @@ class WeaponAndProjectileLogic(val ops: WeaponAndProjectileOperations, implicit
} }
} }
//... //...
ops.handleProxyDamage(pkt.projectile_uid, pkt.projectile_pos) ops.handleProxyDamage(pkt.projectile_uid, pkt.projectile_pos).foreach {
case (target, proxy, hitPos, _) =>
ops.resolveProjectileInteraction(target, proxy, DamageResolution.Splash, hitPos)
}
} }
} }

View file

@ -8,8 +8,8 @@ import net.psforever.objects.serverobject.{CommonMessages, PlanetSideServerObjec
import net.psforever.objects.{BoomerDeployable, BoomerTrigger, Player, SpecialEmp, Tool, Vehicle} import net.psforever.objects.{BoomerDeployable, BoomerTrigger, Player, SpecialEmp, Tool, Vehicle}
import net.psforever.objects.vital.base.{DamageResolution, DamageType} import net.psforever.objects.vital.base.{DamageResolution, DamageType}
import net.psforever.objects.zones.{Zone, ZoneProjectile} import net.psforever.objects.zones.{Zone, ZoneProjectile}
import net.psforever.packet.game.{AIDamage, AvatarGrenadeStateMessage, ChangeAmmoMessage, ChangeFireModeMessage, ChangeFireStateMessage_Start, ChangeFireStateMessage_Stop, HitMessage, LashMessage, LongRangeProjectileInfoMessage, OrbitalStrikeWaypointMessage, ProjectileStateMessage, ReloadMessage, SplashHitMessage, TriggerEffectMessage, TriggeredEffectLocation, UplinkRequest, UplinkRequestType, UplinkResponse, WeaponDelayFireMessage, WeaponDryFireMessage, WeaponFireMessage, WeaponLazeTargetPositionMessage} import net.psforever.packet.game.{AIDamage, AvatarGrenadeStateMessage, ChangeAmmoMessage, ChangeFireModeMessage, ChangeFireStateMessage_Start, ChangeFireStateMessage_Stop, HitMessage, LashMessage, LongRangeProjectileInfoMessage, ProjectileStateMessage, ReloadMessage, SplashHitMessage, UplinkRequest, WeaponDelayFireMessage, WeaponDryFireMessage, WeaponFireMessage, WeaponLazeTargetPositionMessage}
import net.psforever.types.{ValidPlanetSideGUID, Vector3} import net.psforever.types.Vector3
object WeaponAndProjectileLogic { object WeaponAndProjectileLogic {
def apply(ops: WeaponAndProjectileOperations): WeaponAndProjectileLogic = { def apply(ops: WeaponAndProjectileOperations): WeaponAndProjectileLogic = {
@ -153,6 +153,7 @@ class WeaponAndProjectileLogic(val ops: WeaponAndProjectileOperations, implicit
ops.handleProxyDamage(pkt.projectile_guid, pkt.hit_info.map(_.hit_pos).getOrElse(Vector3.Zero)).foreach { ops.handleProxyDamage(pkt.projectile_guid, pkt.hit_info.map(_.hit_pos).getOrElse(Vector3.Zero)).foreach {
case (target, proxy, hitPos, _) => case (target, proxy, hitPos, _) =>
ops.checkForHitPositionDiscrepancy(proxy.GUID, hitPos, target) ops.checkForHitPositionDiscrepancy(proxy.GUID, hitPos, target)
ops.resolveProjectileInteraction(target, proxy, DamageResolution.Hit, hitPos)
} }
} }
} }
@ -207,6 +208,7 @@ class WeaponAndProjectileLogic(val ops: WeaponAndProjectileOperations, implicit
ops.handleProxyDamage(pkt.projectile_uid, pkt.projectile_pos).foreach { ops.handleProxyDamage(pkt.projectile_uid, pkt.projectile_pos).foreach {
case (target, proxy, hitPos, _) => case (target, proxy, hitPos, _) =>
ops.checkForHitPositionDiscrepancy(proxy.GUID, hitPos, target) ops.checkForHitPositionDiscrepancy(proxy.GUID, hitPos, target)
ops.resolveProjectileInteraction(target, proxy, DamageResolution.Splash, hitPos)
} }
} }

View file

@ -12,7 +12,7 @@ import net.psforever.objects.definition.converter.{
import net.psforever.objects.equipment.{ArmorSiphonRepairHost, EffectTarget, TargetValidation} import net.psforever.objects.equipment.{ArmorSiphonRepairHost, EffectTarget, TargetValidation}
import net.psforever.objects.serverobject.aura.Aura import net.psforever.objects.serverobject.aura.Aura
import net.psforever.objects.vital.base.DamageType import net.psforever.objects.vital.base.DamageType
import net.psforever.objects.vital.damage.{RadialDegrade, StandardDamageProfile} import net.psforever.objects.vital.damage.{RadialDegrade, SameHit, StandardDamageProfile}
import net.psforever.objects.vital.etc.{ import net.psforever.objects.vital.etc.{
ArmorSiphonMaxDistanceCutoff, ArmorSiphonMaxDistanceCutoff,
ExplosionDamagesOnlyAbove, ExplosionDamagesOnlyAbove,
@ -1054,7 +1054,7 @@ object GlobalDefinitionsProjectile {
maelstrom_grenade_projectile.Lifespan = 2f maelstrom_grenade_projectile.Lifespan = 2f
maelstrom_grenade_projectile.DamageProxy = 464 //maelstrom_grenade_damager maelstrom_grenade_projectile.DamageProxy = 464 //maelstrom_grenade_damager
ProjectileDefinition.CalculateDerivedFields(maelstrom_grenade_projectile) ProjectileDefinition.CalculateDerivedFields(maelstrom_grenade_projectile)
maelstrom_grenade_projectile.Modifiers = RadialDegrade maelstrom_grenade_projectile.Modifiers = SameHit
maelstrom_grenade_projectile_contact.Name = "maelstrom_grenade_projectile_contact" maelstrom_grenade_projectile_contact.Name = "maelstrom_grenade_projectile_contact"
// TODO for later, maybe : set_resource_parent maelstrom_grenade_projectile_contact game_objects maelstrom_grenade_projectile // TODO for later, maybe : set_resource_parent maelstrom_grenade_projectile_contact game_objects maelstrom_grenade_projectile
@ -1069,7 +1069,7 @@ object GlobalDefinitionsProjectile {
maelstrom_grenade_projectile_contact.Lifespan = 15f maelstrom_grenade_projectile_contact.Lifespan = 15f
maelstrom_grenade_projectile_contact.DamageProxy = 464 //maelstrom_grenade_damager maelstrom_grenade_projectile_contact.DamageProxy = 464 //maelstrom_grenade_damager
ProjectileDefinition.CalculateDerivedFields(maelstrom_grenade_projectile_contact) ProjectileDefinition.CalculateDerivedFields(maelstrom_grenade_projectile_contact)
maelstrom_grenade_projectile_contact.Modifiers = RadialDegrade maelstrom_grenade_projectile_contact.Modifiers = SameHit
maelstrom_stream_projectile.Name = "maelstrom_stream_projectile" maelstrom_stream_projectile.Name = "maelstrom_stream_projectile"
maelstrom_stream_projectile.Damage0 = 15 maelstrom_stream_projectile.Damage0 = 15