From: TheSaminator Date: Fri, 10 Jun 2022 18:22:22 +0000 (-0400) Subject: Remove continue statements from chat iteration loop X-Git-Url: https://gitweb.starshipfights.net/?a=commitdiff_plain;h=49c164aa6d43b4c4bfba86b3d330dac86e212fe5;p=starship-fights Remove continue statements from chat iteration loop --- diff --git a/src/commonMain/kotlin/net/starshipfights/game/ai/ai_behaviors.kt b/src/commonMain/kotlin/net/starshipfights/game/ai/ai_behaviors.kt index c1962da..f0d7377 100644 --- a/src/commonMain/kotlin/net/starshipfights/game/ai/ai_behaviors.kt +++ b/src/commonMain/kotlin/net/starshipfights/game/ai/ai_behaviors.kt @@ -32,7 +32,7 @@ suspend fun AIPlayer.behave(instincts: Instincts, mySide: GlobalSide) { for (state in gameState.produceIn(this)) { phasePipe.send(state.phase to (state.doneWithPhase != mySide && (!state.phase.usesInitiative || state.currentInitiative != mySide.other))) - chatLoop@ for (msg in state.chatBox.takeLastWhile { msg -> msg.sentAt > prevSentAt }) { + for (msg in state.chatBox.takeLastWhile { msg -> msg.sentAt > prevSentAt }) { if (msg.sentAt > prevSentAt) prevSentAt = msg.sentAt @@ -41,36 +41,41 @@ suspend fun AIPlayer.behave(instincts: Instincts, mySide: GlobalSide) { // ignore } is ChatEntry.ShipIdentified -> { - val identifiedShip = state.ships[msg.ship] ?: continue@chatLoop - if (identifiedShip.owner != mySide) - brain[shipAttackPriority forShip identifiedShip.id] += (identifiedShip.ship.shipType.weightClass.tier.ordinal + 1.5).pow(instincts[combatTargetShipWeight]) + state.ships[msg.ship]?.let { identifiedShip -> + if (identifiedShip.owner != mySide) + brain[shipAttackPriority forShip identifiedShip.id] += (identifiedShip.ship.shipType.weightClass.tier.ordinal + 1.5).pow(instincts[combatTargetShipWeight]) + } } is ChatEntry.ShipEscaped -> { // handle escaping ship } is ChatEntry.ShipAttacked -> { - val targetedShip = state.ships[msg.ship] ?: continue@chatLoop - if (targetedShip.owner != mySide) - brain[shipAttackPriority forShip targetedShip.id] -= Random.nextDouble(msg.damageInflicted - 0.5, msg.damageInflicted + 0.5) * instincts[combatForgiveTarget] - else if (msg.attacker is ShipAttacker.EnemyShip) - brain[shipAttackPriority forShip msg.attacker.id] += Random.nextDouble(msg.damageInflicted - 0.5, msg.damageInflicted + 0.5) * instincts[combatAvengeAttacks] + state.ships[msg.ship]?.let { targetedShip -> + if (targetedShip.owner != mySide) + brain[shipAttackPriority forShip targetedShip.id] -= Random.nextDouble(msg.damageInflicted.toDouble(), msg.damageInflicted + 1.0) * instincts[combatForgiveTarget] + else if (msg.attacker is ShipAttacker.EnemyShip) + brain[shipAttackPriority forShip msg.attacker.id] += Random.nextDouble(msg.damageInflicted.toDouble(), msg.damageInflicted + 1.0) * instincts[combatAvengeAttacks] + } } is ChatEntry.ShipAttackFailed -> { - val targetedShip = state.ships[msg.ship] ?: continue@chatLoop - if (targetedShip.owner != mySide) - brain[shipAttackPriority forShip targetedShip.id] += instincts[combatFrustratedByFailedAttacks] + state.ships[msg.ship]?.let { targetedShip -> + if (targetedShip.owner != mySide) + brain[shipAttackPriority forShip targetedShip.id] += instincts[combatFrustratedByFailedAttacks] + } } is ChatEntry.ShipBoarded -> { - val targetedShip = state.ships[msg.ship] ?: continue@chatLoop - if (targetedShip.owner != mySide) - brain[shipAttackPriority forShip targetedShip.id] -= Random.nextDouble(msg.damageAmount - 0.5, msg.damageAmount + 0.5) * instincts[combatForgiveTarget] - else - brain[shipAttackPriority forShip msg.boarder] += Random.nextDouble(msg.damageAmount - 0.5, msg.damageAmount + 0.5) * instincts[combatAvengeAttacks] + state.ships[msg.ship]?.let { targetedShip -> + if (targetedShip.owner != mySide) + brain[shipAttackPriority forShip targetedShip.id] -= Random.nextDouble(msg.damageAmount.toDouble(), msg.damageAmount + 1.0) * instincts[combatForgiveTarget] + else + brain[shipAttackPriority forShip msg.boarder] += Random.nextDouble(msg.damageAmount.toDouble(), msg.damageAmount + 1.0) * instincts[combatAvengeAttacks] + } } is ChatEntry.ShipDestroyed -> { - val targetedShip = state.destroyedShips[msg.ship] ?: continue@chatLoop - if (targetedShip.owner == mySide && msg.destroyedBy is ShipAttacker.EnemyShip) - brain[shipAttackPriority forShip msg.destroyedBy.id] += instincts[combatAvengeShipwrecks] * (targetedShip.ship.shipType.weightClass.tier.ordinal + 1.5).pow(instincts[combatAvengeShipWeight]) + state.destroyedShips[msg.ship]?.let { targetedShip -> + if (targetedShip.owner == mySide && msg.destroyedBy is ShipAttacker.EnemyShip) + brain[shipAttackPriority forShip msg.destroyedBy.id] += instincts[combatAvengeShipwrecks] * (targetedShip.ship.shipType.weightClass.tier.ordinal + 1.5).pow(instincts[combatAvengeShipWeight]) + } } } }