Skip to content

Commit 614253b

Browse files
committed
Fix Blitz using BB2020 blocking procedures in BB2025.
Also added a smoke test for verifying that Blitz actions use the BB2025 procedures.
1 parent 9fd4f55 commit 614253b

File tree

4 files changed

+38
-15
lines changed

4 files changed

+38
-15
lines changed

modules/jervis-engine/src/commonMain/kotlin/com/jervisffb/engine/rules/bb2025/procedures/actions/block/BB2025Pow.kt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,8 @@ import com.jervisffb.engine.model.context.getContextOrNull
2323
import com.jervisffb.engine.model.context.hasContext
2424
import com.jervisffb.engine.reports.ReportPowResult
2525
import com.jervisffb.engine.rules.Rules
26-
import com.jervisffb.engine.rules.bb2020.procedures.actions.block.BB2020PushStepInitialMoveSequence
2726
import com.jervisffb.engine.rules.bb2020.procedures.actions.block.BB2020PushStepResolveSingleBlockPushChain
2827
import com.jervisffb.engine.rules.bb2025.procedures.actions.block.push.PushedBack
29-
import com.jervisffb.engine.rules.builder.GameVersion
3028
import com.jervisffb.engine.rules.common.procedures.tables.injury.RiskingInjuryContext
3129
import com.jervisffb.engine.rules.common.procedures.tables.injury.RiskingInjuryRoll
3230

@@ -57,11 +55,7 @@ object BB2025Pow: Procedure() {
5755

5856
object ResolveInitialPushSequence: ParentNode() {
5957
override fun getChildProcedure(state: Game, rules: Rules): Procedure {
60-
return when (rules.baseVersion) {
61-
GameVersion.BB2020 -> BB2020PushStepInitialMoveSequence
62-
GameVersion.BB2025 -> PushedBack
63-
}
64-
58+
return PushedBack
6559
}
6660
override fun onExitNode(state: Game, rules: Rules): Command {
6761
val blockContext = state.getContext<BlockContext>()

modules/jervis-engine/src/commonMain/kotlin/com/jervisffb/engine/rules/bb2025/procedures/actions/block/BlockAction.kt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ import com.jervisffb.engine.model.isSkillAvailable
3232
import com.jervisffb.engine.rules.Rules
3333
import com.jervisffb.engine.rules.bb2020.procedures.actions.block.StandardBlockStep
3434
import com.jervisffb.engine.rules.bb2025.procedures.actions.block.singleblock.SingleStandardBlockStep
35-
import com.jervisffb.engine.rules.builder.GameVersion
3635
import com.jervisffb.engine.rules.common.actions.BlockType
3736
import com.jervisffb.engine.rules.common.procedures.getResetTemporaryModifiersCommands
3837
import com.jervisffb.engine.rules.common.skills.Duration
@@ -155,12 +154,7 @@ object BlockAction : Procedure() {
155154
BlockType.MULTIPLE_BLOCK -> TODO()
156155
BlockType.PROJECTILE_VOMIT -> TODO()
157156
BlockType.STAB -> TODO()
158-
BlockType.STANDARD -> {
159-
when (rules.baseVersion) {
160-
GameVersion.BB2020 -> StandardBlockStep
161-
GameVersion.BB2025 -> SingleStandardBlockStep
162-
}
163-
}
157+
BlockType.STANDARD -> SingleStandardBlockStep
164158
}
165159
}
166160

modules/jervis-engine/src/commonMain/kotlin/com/jervisffb/engine/rules/common/procedures/actions/blitz/BlitzAction.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ import com.jervisffb.engine.model.locations.OnFieldLocation
4545
import com.jervisffb.engine.rules.Rules
4646
import com.jervisffb.engine.rules.bb2020.procedures.actions.block.BlockAction
4747
import com.jervisffb.engine.rules.bb2020.procedures.actions.block.StandardBlockStep
48+
import com.jervisffb.engine.rules.bb2025.procedures.actions.block.singleblock.SingleStandardBlockStep
49+
import com.jervisffb.engine.rules.builder.GameVersion
4850
import com.jervisffb.engine.rules.common.actions.BlockType
4951
import com.jervisffb.engine.rules.common.procedures.actions.move.ResolveMoveTypeStep
5052
import com.jervisffb.engine.rules.common.procedures.actions.move.RushRoll
@@ -322,7 +324,12 @@ object BlitzAction : Procedure() {
322324
BlockType.MULTIPLE_BLOCK -> TODO()
323325
BlockType.PROJECTILE_VOMIT -> TODO()
324326
BlockType.STAB -> TODO()
325-
BlockType.STANDARD -> StandardBlockStep
327+
BlockType.STANDARD -> {
328+
when (rules.baseVersion) {
329+
GameVersion.BB2020 -> StandardBlockStep
330+
GameVersion.BB2025 -> SingleStandardBlockStep
331+
}
332+
}
326333
}
327334
}
328335
override fun onExitNode(state: Game, rules: Rules): Command {

modules/jervis-engine/src/commonTest/kotlin/com/jervisffb/test/bb2025/actions/PushbackTests.kt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import com.jervisffb.engine.actions.Cancel
44
import com.jervisffb.engine.actions.Confirm
55
import com.jervisffb.engine.actions.DiceRollResults
66
import com.jervisffb.engine.actions.DirectionSelected
7+
import com.jervisffb.engine.actions.EndAction
8+
import com.jervisffb.engine.actions.PlayerSelected
79
import com.jervisffb.engine.actions.SelectDirection
810
import com.jervisffb.engine.commands.SetBallLocation
911
import com.jervisffb.engine.commands.SetBallState
@@ -22,6 +24,7 @@ import com.jervisffb.engine.model.locations.FieldCoordinate
2224
import com.jervisffb.engine.rules.common.actions.PlayerStandardActionType
2325
import com.jervisffb.engine.utils.singleInstanceOf
2426
import com.jervisffb.test.JervisGameBB2025Test
27+
import com.jervisffb.test.SmartMoveTo
2528
import com.jervisffb.test.activatePlayer
2629
import com.jervisffb.test.catch
2730
import com.jervisffb.test.ext.rollForward
@@ -273,6 +276,31 @@ class PushbackTests: JervisGameBB2025Test() {
273276
assertEquals(FieldCoordinate(15, 0), awayTeam[7.playerNo].coordinates)
274277
}
275278

279+
@Test
280+
fun pushOpponentPlayerWithBallIntoCrowdUsingBlitz() {
281+
SetPlayerLocation(homeTeam[4.playerNo], FieldCoordinate(20, 0)).execute(state)
282+
SetBallState.carried(state.singleBall(), homeTeam[4.playerNo]).execute(state)
283+
controller.rollForward(
284+
*activatePlayer("A10", PlayerStandardActionType.BLITZ),
285+
PlayerSelected("H4".playerId),
286+
SmartMoveTo(20, 1),
287+
*standardBlock("H4", 4.dblock),
288+
DirectionSelected(Direction.UP),
289+
Confirm, // Follow up
290+
DiceRollResults(1.d6, 1.d6), // Crowd Injury roll
291+
2.d3, // Throw-in direction
292+
DiceRollResults(1.d6, 2.d6), // Throw-in distance
293+
7.d8, // Bounce
294+
EndAction
295+
)
296+
assertNull(state.activePlayer)
297+
assertEquals(awayTeam, state.activeTeam)
298+
assertEquals(BallState.ON_GROUND, state.singleBall().state)
299+
assertEquals(FieldCoordinate(20, 3), state.singleBall().location)
300+
assertEquals(DogOut, homeTeam[4.playerNo].location)
301+
assertEquals(FieldCoordinate(20, 0), awayTeam[10.playerNo].coordinates)
302+
}
303+
276304
@Test
277305
fun chainPushOwnPlayerWithBallIntoCrowd() {
278306
SetPlayerLocation(awayTeam[1.playerNo], FieldCoordinate(23, 0)).execute(state)

0 commit comments

Comments
 (0)