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
*/
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

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`.
*/
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)

View file

@ -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")