if (!shipInstance.canUseWeapon(weapon)) return null
val shipWeapon = shipInstance.armaments.weaponInstances[weapon] ?: return null
- val pickResponse = pick(shipInstance.getWeaponPickRequest(shipWeapon.weapon, shipInstance.position, shipInstance.owner))
+ val pickResponse = pick(shipInstance.getWeaponPickRequest(shipWeapon.weapon))
return pickResponse?.let { PlayerAbilityData.UseWeapon(it) }
}
if (!shipInstance.canUseWeapon(weapon)) return GameEvent.InvalidAction("That weapon cannot be used")
val shipWeapon = shipInstance.armaments.weaponInstances[weapon] ?: return GameEvent.InvalidAction("That weapon does not exist")
- val pickRequest = shipInstance.getWeaponPickRequest(shipWeapon.weapon, shipInstance.position, shipInstance.owner)
+ val pickRequest = shipInstance.getWeaponPickRequest(shipWeapon.weapon)
val pickResponse = data.target
if (!gameState.isValidPick(pickRequest, pickResponse)) return GameEvent.InvalidAction("Invalid target")
return when (weapon) {
is ShipWeaponInstance.Cannon -> weaponAmount > 0
- is ShipWeaponInstance.Hangar -> weapon.wingHealth > 0.0
is ShipWeaponInstance.Lance -> weapon.numCharges > EPSILON
is ShipWeaponInstance.Torpedo -> true
+ is ShipWeaponInstance.Hangar -> weapon.wingHealth > 0.0
is ShipWeaponInstance.ParticleClawLauncher -> true
is ShipWeaponInstance.LightningYarn -> true
is ShipWeaponInstance.MegaCannon -> weapon.remainingShots > 0
} * attacker.firepower.criticalChance
}
-fun ShipInstance.getWeaponPickRequest(weapon: ShipWeapon, position: ShipPosition, side: GlobalSide): PickRequest = when (weapon) {
+fun ShipInstance.getWeaponPickRequest(weapon: ShipWeapon): PickRequest = when (weapon) {
is AreaWeapon -> PickRequest(
type = PickType.Location(
excludesNearShips = emptySet(),
)
else -> {
val targetSet = if ((weapon as? ShipWeapon.Hangar)?.wing == StrikeCraftWing.FIGHTERS)
- setOf(side)
+ setOf(owner)
else
- setOf(side.other)
+ setOf(owner.other)
val weaponRangeMult = when (weapon) {
is ShipWeapon.Cannon -> firepower.rangeMultiplier
minDistance = weapon.minRange,
maxDistance = weapon.maxRange * weaponRangeMult,
firingArcs = weapon.firingArcs,
- canSelfSelect = side in targetSet
+ canSelfSelect = owner in targetSet
)
)
}