no_projectile for Tools that have no projectile; condensing cases in WSA

This commit is contained in:
FateJH 2019-11-15 16:21:35 -05:00
parent ed7406f25f
commit f8836f1cc4
3 changed files with 14 additions and 7 deletions

View file

@ -69,6 +69,8 @@ object GlobalDefinitions {
/* /*
Projectiles Projectiles
*/ */
val no_projectile = new ProjectileDefinition(0) //also called none in ADB
val bullet_105mm_projectile = ProjectileDefinition(Projectiles.bullet_105mm_projectile) val bullet_105mm_projectile = ProjectileDefinition(Projectiles.bullet_105mm_projectile)
val bullet_12mm_projectile = ProjectileDefinition(Projectiles.bullet_12mm_projectile) val bullet_12mm_projectile = ProjectileDefinition(Projectiles.bullet_12mm_projectile)
@ -1889,6 +1891,9 @@ object GlobalDefinitions {
private def init_projectile() : Unit = { private def init_projectile() : Unit = {
val projectileConverter : ProjectileConverter = new ProjectileConverter val projectileConverter : ProjectileConverter = new ProjectileConverter
no_projectile.Name = "none"
ProjectileDefinition.CalculateDerivedFields(no_projectile)
bullet_105mm_projectile.Name = "105mmbullet_projectile" bullet_105mm_projectile.Name = "105mmbullet_projectile"
bullet_105mm_projectile.Damage0 = 150 bullet_105mm_projectile.Damage0 = 150
bullet_105mm_projectile.Damage1 = 300 bullet_105mm_projectile.Damage1 = 300
@ -4331,6 +4336,7 @@ object GlobalDefinitions {
medicalapplicator.Name = "medicalapplicator" medicalapplicator.Name = "medicalapplicator"
medicalapplicator.Size = EquipmentSize.Pistol medicalapplicator.Size = EquipmentSize.Pistol
medicalapplicator.AmmoTypes += health_canister medicalapplicator.AmmoTypes += health_canister
medicalapplicator.ProjectileTypes += no_projectile
medicalapplicator.FireModes += new FireModeDefinition medicalapplicator.FireModes += new FireModeDefinition
medicalapplicator.FireModes.head.AmmoTypeIndices += 0 medicalapplicator.FireModes.head.AmmoTypeIndices += 0
medicalapplicator.FireModes.head.AmmoSlotIndex = 0 medicalapplicator.FireModes.head.AmmoSlotIndex = 0
@ -4345,6 +4351,7 @@ object GlobalDefinitions {
nano_dispenser.Size = EquipmentSize.Rifle nano_dispenser.Size = EquipmentSize.Rifle
nano_dispenser.AmmoTypes += armor_canister nano_dispenser.AmmoTypes += armor_canister
nano_dispenser.AmmoTypes += upgrade_canister nano_dispenser.AmmoTypes += upgrade_canister
nano_dispenser.ProjectileTypes += no_projectile
nano_dispenser.FireModes += new FireModeDefinition nano_dispenser.FireModes += new FireModeDefinition
nano_dispenser.FireModes.head.AmmoTypeIndices += 0 nano_dispenser.FireModes.head.AmmoTypeIndices += 0
nano_dispenser.FireModes.head.AmmoTypeIndices += 1 nano_dispenser.FireModes.head.AmmoTypeIndices += 1
@ -4358,6 +4365,7 @@ object GlobalDefinitions {
bank.Name = "bank" bank.Name = "bank"
bank.Size = EquipmentSize.Pistol bank.Size = EquipmentSize.Pistol
bank.AmmoTypes += armor_canister bank.AmmoTypes += armor_canister
bank.ProjectileTypes += no_projectile
bank.FireModes += new FireModeDefinition bank.FireModes += new FireModeDefinition
bank.FireModes.head.AmmoTypeIndices += 0 bank.FireModes.head.AmmoTypeIndices += 0
bank.FireModes.head.AmmoSlotIndex = 0 bank.FireModes.head.AmmoSlotIndex = 0

View file

@ -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`. * An `Enumeration` of all the projectile types in the game, paired with their object id as the `Value`.
*/ */
object Projectiles extends Enumeration { object Projectiles extends Enumeration {
final val no_projectile = Value(0)
final val bullet_105mm_projectile = Value(1) final val bullet_105mm_projectile = Value(1)
final val bullet_12mm_projectile = Value(4) final val bullet_12mm_projectile = Value(4)
final val bullet_12mm_projectileb = Value(5) final val bullet_12mm_projectileb = Value(5)

View file

@ -4325,17 +4325,14 @@ class WorldSessionActor extends Actor with MDCContextAware {
log.trace("ChangeFireState_Start: " + msg) log.trace("ChangeFireState_Start: " + msg)
if(shooting.isEmpty) { if(shooting.isEmpty) {
FindEquipment match { 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) => case Some(tool : Tool) =>
if(tool.Magazine > 0 || prefire.contains(item_guid)) { if(tool.Magazine > 0 || prefire.contains(item_guid)) {
prefire = None prefire = None
shooting = Some(item_guid) 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 { else {
log.warn(s"ChangeFireState_Start: ${tool.Definition.Name} magazine is empty before trying to shoot bullet") log.warn(s"ChangeFireState_Start: ${tool.Definition.Name} magazine is empty before trying to shoot bullet")