diff --git a/common/src/main/scala/net/psforever/objects/GlobalDefinitions.scala b/common/src/main/scala/net/psforever/objects/GlobalDefinitions.scala index b6dad3394..f65219956 100644 --- a/common/src/main/scala/net/psforever/objects/GlobalDefinitions.scala +++ b/common/src/main/scala/net/psforever/objects/GlobalDefinitions.scala @@ -69,6 +69,8 @@ object GlobalDefinitions { /* Projectiles */ + val no_projectile = new ProjectileDefinition(0) //also called none in ADB + val bullet_105mm_projectile = ProjectileDefinition(Projectiles.bullet_105mm_projectile) val bullet_12mm_projectile = ProjectileDefinition(Projectiles.bullet_12mm_projectile) @@ -1889,6 +1891,9 @@ object GlobalDefinitions { private def init_projectile() : Unit = { val projectileConverter : ProjectileConverter = new ProjectileConverter + no_projectile.Name = "none" + ProjectileDefinition.CalculateDerivedFields(no_projectile) + bullet_105mm_projectile.Name = "105mmbullet_projectile" bullet_105mm_projectile.Damage0 = 150 bullet_105mm_projectile.Damage1 = 300 @@ -4331,6 +4336,7 @@ object GlobalDefinitions { medicalapplicator.Name = "medicalapplicator" medicalapplicator.Size = EquipmentSize.Pistol medicalapplicator.AmmoTypes += health_canister + medicalapplicator.ProjectileTypes += no_projectile medicalapplicator.FireModes += new FireModeDefinition medicalapplicator.FireModes.head.AmmoTypeIndices += 0 medicalapplicator.FireModes.head.AmmoSlotIndex = 0 @@ -4345,6 +4351,7 @@ object GlobalDefinitions { nano_dispenser.Size = EquipmentSize.Rifle nano_dispenser.AmmoTypes += armor_canister nano_dispenser.AmmoTypes += upgrade_canister + nano_dispenser.ProjectileTypes += no_projectile nano_dispenser.FireModes += new FireModeDefinition nano_dispenser.FireModes.head.AmmoTypeIndices += 0 nano_dispenser.FireModes.head.AmmoTypeIndices += 1 @@ -4358,6 +4365,7 @@ object GlobalDefinitions { bank.Name = "bank" bank.Size = EquipmentSize.Pistol bank.AmmoTypes += armor_canister + bank.ProjectileTypes += no_projectile bank.FireModes += new FireModeDefinition bank.FireModes.head.AmmoTypeIndices += 0 bank.FireModes.head.AmmoSlotIndex = 0 diff --git a/common/src/main/scala/net/psforever/objects/ballistics/Projectiles.scala b/common/src/main/scala/net/psforever/objects/ballistics/Projectiles.scala index cb305609c..dc2753954 100644 --- a/common/src/main/scala/net/psforever/objects/ballistics/Projectiles.scala +++ b/common/src/main/scala/net/psforever/objects/ballistics/Projectiles.scala @@ -5,6 +5,8 @@ package net.psforever.objects.ballistics * An `Enumeration` of all the projectile types in the game, paired with their object id as the `Value`. */ object Projectiles extends Enumeration { + final val no_projectile = Value(0) + final val bullet_105mm_projectile = Value(1) final val bullet_12mm_projectile = Value(4) final val bullet_12mm_projectileb = Value(5) diff --git a/pslogin/src/main/scala/WorldSessionActor.scala b/pslogin/src/main/scala/WorldSessionActor.scala index 400952c60..e46b167b5 100644 --- a/pslogin/src/main/scala/WorldSessionActor.scala +++ b/pslogin/src/main/scala/WorldSessionActor.scala @@ -4325,17 +4325,14 @@ class WorldSessionActor extends Actor with MDCContextAware { log.trace("ChangeFireState_Start: " + msg) if(shooting.isEmpty) { FindEquipment match { - //special case - suppress the decimator's alternate fire mode - case Some(tool : Tool) - if tool.Projectile == GlobalDefinitions.phoenix_missile_guided_projectile && - (tool.Magazine > 0 || prefire.contains(item_guid)) => - prefire = None - shooting = Some(item_guid) case Some(tool : Tool) => if(tool.Magazine > 0 || prefire.contains(item_guid)) { prefire = None shooting = Some(item_guid) - avatarService ! AvatarServiceMessage(continent.Id, AvatarAction.ChangeFireState_Start(player.GUID, item_guid)) + //special case - suppress the decimator's alternate fire mode, by projectile + if(tool.Projectile != GlobalDefinitions.phoenix_missile_guided_projectile) { + avatarService ! AvatarServiceMessage(continent.Id, AvatarAction.ChangeFireState_Start(player.GUID, item_guid)) + } } else { log.warn(s"ChangeFireState_Start: ${tool.Definition.Name} magazine is empty before trying to shoot bullet")