Spaces:
Running
Running
Hard-tier curation: Art-of-War quartet
Browse filesEach hard tier gets a seed-chosen second spawn_point group, designed
to PRESERVE the spatial puzzle from both anchors:
- decoy-sacrifice / lure-the-tiger / sequenced-citadel: same
main(+bait) formation y-shifted; enemy/objective fixed so the
bait/lure/ordering puzzle holds from either start
- indirect-approach: gun line split across BOTH spawn corridors so
the short route stays lethal regardless of seed (detour-only,
zero-loss property preserved)
fail_conditions already present. UPGRADED += 4 artofwar; live
seed→distinct-start passes; existing ordering-property tests intact.
openra_bench/scenarios/packs/artofwar-decoy-sacrifice.yaml
CHANGED
|
@@ -95,9 +95,13 @@ levels:
|
|
| 95 |
hard:
|
| 96 |
description: >
|
| 97 |
The main body must arrive nearly intact (loss cap) — only the
|
| 98 |
-
bait may be spent
|
|
|
|
|
|
|
|
|
|
| 99 |
overrides:
|
| 100 |
actors:
|
|
|
|
| 101 |
- type: 2tnk
|
| 102 |
owner: agent
|
| 103 |
position: [6, 22]
|
|
@@ -105,6 +109,9 @@ levels:
|
|
| 105 |
health: 100
|
| 106 |
facing: -1
|
| 107 |
count: 3
|
|
|
|
|
|
|
|
|
|
| 108 |
- type: jeep
|
| 109 |
owner: agent
|
| 110 |
position: [6, 30]
|
|
@@ -112,6 +119,26 @@ levels:
|
|
| 112 |
health: 100
|
| 113 |
facing: -1
|
| 114 |
count: 2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 115 |
- type: e1
|
| 116 |
owner: enemy
|
| 117 |
position: [40, 24]
|
|
|
|
| 95 |
hard:
|
| 96 |
description: >
|
| 97 |
The main body must arrive nearly intact (loss cap) — only the
|
| 98 |
+
bait may be spent. The force stages from a seed-chosen latitude
|
| 99 |
+
(two spawn_point groups, same main+bait formation) so the decoy
|
| 100 |
+
line that works can't be memorised; guards sit on the objective
|
| 101 |
+
beyond initial sight.
|
| 102 |
overrides:
|
| 103 |
actors:
|
| 104 |
+
# spawn_point 0 — northern staging
|
| 105 |
- type: 2tnk
|
| 106 |
owner: agent
|
| 107 |
position: [6, 22]
|
|
|
|
| 109 |
health: 100
|
| 110 |
facing: -1
|
| 111 |
count: 3
|
| 112 |
+
spawn_point: 0
|
| 113 |
+
randomize:
|
| 114 |
+
position: {base: [6, 22], offset: 3}
|
| 115 |
- type: jeep
|
| 116 |
owner: agent
|
| 117 |
position: [6, 30]
|
|
|
|
| 119 |
health: 100
|
| 120 |
facing: -1
|
| 121 |
count: 2
|
| 122 |
+
spawn_point: 0
|
| 123 |
+
# spawn_point 1 — southern staging (same formation, shifted)
|
| 124 |
+
- type: 2tnk
|
| 125 |
+
owner: agent
|
| 126 |
+
position: [6, 40]
|
| 127 |
+
stance: 3
|
| 128 |
+
health: 100
|
| 129 |
+
facing: -1
|
| 130 |
+
count: 3
|
| 131 |
+
spawn_point: 1
|
| 132 |
+
randomize:
|
| 133 |
+
position: {base: [6, 40], offset: 3}
|
| 134 |
+
- type: jeep
|
| 135 |
+
owner: agent
|
| 136 |
+
position: [6, 48]
|
| 137 |
+
stance: 3
|
| 138 |
+
health: 100
|
| 139 |
+
facing: -1
|
| 140 |
+
count: 2
|
| 141 |
+
spawn_point: 1
|
| 142 |
- type: e1
|
| 143 |
owner: enemy
|
| 144 |
position: [40, 24]
|
openra_bench/scenarios/packs/artofwar-indirect-approach.yaml
CHANGED
|
@@ -79,9 +79,14 @@ levels:
|
|
| 79 |
own_units_gte: 1
|
| 80 |
max_turns: 90
|
| 81 |
hard:
|
| 82 |
-
description:
|
|
|
|
|
|
|
|
|
|
|
|
|
| 83 |
overrides:
|
| 84 |
actors:
|
|
|
|
| 85 |
- type: 1tnk
|
| 86 |
owner: agent
|
| 87 |
position: [6, 26]
|
|
@@ -89,13 +94,36 @@ levels:
|
|
| 89 |
health: 100
|
| 90 |
facing: -1
|
| 91 |
count: 3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
- type: e1
|
| 93 |
owner: enemy
|
| 94 |
position: [22, 26]
|
| 95 |
stance: 3
|
| 96 |
health: 100
|
| 97 |
facing: -1
|
| 98 |
-
count:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 99 |
win_condition:
|
| 100 |
all_of:
|
| 101 |
- all_units_in_region: {x: 46, y: 26, radius: 4}
|
|
|
|
| 79 |
own_units_gte: 1
|
| 80 |
max_turns: 90
|
| 81 |
hard:
|
| 82 |
+
description: >
|
| 83 |
+
Zero-loss traversal, seed-chosen start latitude. Two spawn_point
|
| 84 |
+
groups (y26 / y34); the gun line is split to span BOTH corridors
|
| 85 |
+
so the short route is lethal from either start — the safe detour
|
| 86 |
+
differs by seed and can't be memorised.
|
| 87 |
overrides:
|
| 88 |
actors:
|
| 89 |
+
# spawn_point 0 — northern start
|
| 90 |
- type: 1tnk
|
| 91 |
owner: agent
|
| 92 |
position: [6, 26]
|
|
|
|
| 94 |
health: 100
|
| 95 |
facing: -1
|
| 96 |
count: 3
|
| 97 |
+
spawn_point: 0
|
| 98 |
+
randomize:
|
| 99 |
+
position: {base: [6, 26], offset: 2}
|
| 100 |
+
# spawn_point 1 — southern start
|
| 101 |
+
- type: 1tnk
|
| 102 |
+
owner: agent
|
| 103 |
+
position: [6, 34]
|
| 104 |
+
stance: 3
|
| 105 |
+
health: 100
|
| 106 |
+
facing: -1
|
| 107 |
+
count: 3
|
| 108 |
+
spawn_point: 1
|
| 109 |
+
randomize:
|
| 110 |
+
position: {base: [6, 34], offset: 2}
|
| 111 |
+
# gun line split across BOTH spawn corridors (short route
|
| 112 |
+
# lethal regardless of seed → detour is the only zero-loss path)
|
| 113 |
- type: e1
|
| 114 |
owner: enemy
|
| 115 |
position: [22, 26]
|
| 116 |
stance: 3
|
| 117 |
health: 100
|
| 118 |
facing: -1
|
| 119 |
+
count: 5
|
| 120 |
+
- type: e1
|
| 121 |
+
owner: enemy
|
| 122 |
+
position: [22, 34]
|
| 123 |
+
stance: 3
|
| 124 |
+
health: 100
|
| 125 |
+
facing: -1
|
| 126 |
+
count: 5
|
| 127 |
win_condition:
|
| 128 |
all_of:
|
| 129 |
- all_units_in_region: {x: 46, y: 26, radius: 4}
|
openra_bench/scenarios/packs/artofwar-lure-the-tiger.yaml
CHANGED
|
@@ -91,9 +91,14 @@ levels:
|
|
| 91 |
own_units_gte: 1
|
| 92 |
max_turns: 85
|
| 93 |
hard:
|
| 94 |
-
description:
|
|
|
|
|
|
|
|
|
|
|
|
|
| 95 |
overrides:
|
| 96 |
actors:
|
|
|
|
| 97 |
- type: 2tnk
|
| 98 |
owner: agent
|
| 99 |
position: [6, 24]
|
|
@@ -101,6 +106,9 @@ levels:
|
|
| 101 |
health: 100
|
| 102 |
facing: -1
|
| 103 |
count: 3
|
|
|
|
|
|
|
|
|
|
| 104 |
- type: jeep
|
| 105 |
owner: agent
|
| 106 |
position: [6, 16]
|
|
@@ -108,6 +116,26 @@ levels:
|
|
| 108 |
health: 100
|
| 109 |
facing: -1
|
| 110 |
count: 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 111 |
- type: 3tnk
|
| 112 |
owner: enemy
|
| 113 |
position: [26, 24]
|
|
|
|
| 91 |
own_units_gte: 1
|
| 92 |
max_turns: 85
|
| 93 |
hard:
|
| 94 |
+
description: >
|
| 95 |
+
Loss-capped: the bait may die, the main force may not. Force
|
| 96 |
+
stages from a seed-chosen latitude (two spawn_point groups, same
|
| 97 |
+
main+lure formation) — the lure path that works can't be
|
| 98 |
+
memorised. The tiger blocks the lane beyond initial sight.
|
| 99 |
overrides:
|
| 100 |
actors:
|
| 101 |
+
# spawn_point 0 — northern staging
|
| 102 |
- type: 2tnk
|
| 103 |
owner: agent
|
| 104 |
position: [6, 24]
|
|
|
|
| 106 |
health: 100
|
| 107 |
facing: -1
|
| 108 |
count: 3
|
| 109 |
+
spawn_point: 0
|
| 110 |
+
randomize:
|
| 111 |
+
position: {base: [6, 24], offset: 3}
|
| 112 |
- type: jeep
|
| 113 |
owner: agent
|
| 114 |
position: [6, 16]
|
|
|
|
| 116 |
health: 100
|
| 117 |
facing: -1
|
| 118 |
count: 1
|
| 119 |
+
spawn_point: 0
|
| 120 |
+
# spawn_point 1 — southern staging
|
| 121 |
+
- type: 2tnk
|
| 122 |
+
owner: agent
|
| 123 |
+
position: [6, 40]
|
| 124 |
+
stance: 3
|
| 125 |
+
health: 100
|
| 126 |
+
facing: -1
|
| 127 |
+
count: 3
|
| 128 |
+
spawn_point: 1
|
| 129 |
+
randomize:
|
| 130 |
+
position: {base: [6, 40], offset: 3}
|
| 131 |
+
- type: jeep
|
| 132 |
+
owner: agent
|
| 133 |
+
position: [6, 32]
|
| 134 |
+
stance: 3
|
| 135 |
+
health: 100
|
| 136 |
+
facing: -1
|
| 137 |
+
count: 1
|
| 138 |
+
spawn_point: 1
|
| 139 |
- type: 3tnk
|
| 140 |
owner: enemy
|
| 141 |
position: [26, 24]
|
openra_bench/scenarios/packs/artofwar-sequenced-citadel.yaml
CHANGED
|
@@ -69,6 +69,7 @@ levels:
|
|
| 69 |
tick band, with the force near-intact.
|
| 70 |
overrides:
|
| 71 |
actors:
|
|
|
|
| 72 |
- type: 2tnk
|
| 73 |
owner: agent
|
| 74 |
position: [6, 20]
|
|
@@ -76,6 +77,21 @@ levels:
|
|
| 76 |
health: 100
|
| 77 |
facing: -1
|
| 78 |
count: 3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
- type: e1
|
| 80 |
owner: enemy
|
| 81 |
position: [44, 20]
|
|
|
|
| 69 |
tick band, with the force near-intact.
|
| 70 |
overrides:
|
| 71 |
actors:
|
| 72 |
+
# spawn_point 0 — northern staging
|
| 73 |
- type: 2tnk
|
| 74 |
owner: agent
|
| 75 |
position: [6, 20]
|
|
|
|
| 77 |
health: 100
|
| 78 |
facing: -1
|
| 79 |
count: 3
|
| 80 |
+
spawn_point: 0
|
| 81 |
+
randomize:
|
| 82 |
+
position: {base: [6, 20], offset: 3}
|
| 83 |
+
# spawn_point 1 — southern staging (same ordered task,
|
| 84 |
+
# different approach latitude — seed-chosen)
|
| 85 |
+
- type: 2tnk
|
| 86 |
+
owner: agent
|
| 87 |
+
position: [6, 36]
|
| 88 |
+
stance: 3
|
| 89 |
+
health: 100
|
| 90 |
+
facing: -1
|
| 91 |
+
count: 3
|
| 92 |
+
spawn_point: 1
|
| 93 |
+
randomize:
|
| 94 |
+
position: {base: [6, 36], offset: 3}
|
| 95 |
- type: e1
|
| 96 |
owner: enemy
|
| 97 |
position: [44, 20]
|
tests/test_hard_tier.py
CHANGED
|
@@ -27,6 +27,10 @@ UPGRADED = [
|
|
| 27 |
"adversarial-duel",
|
| 28 |
"adversarial-skirmish",
|
| 29 |
"adversarial-siege",
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
]
|
| 31 |
|
| 32 |
|
|
|
|
| 27 |
"adversarial-duel",
|
| 28 |
"adversarial-skirmish",
|
| 29 |
"adversarial-siege",
|
| 30 |
+
"artofwar-decoy-sacrifice",
|
| 31 |
+
"artofwar-indirect-approach",
|
| 32 |
+
"artofwar-lure-the-tiger",
|
| 33 |
+
"artofwar-sequenced-citadel",
|
| 34 |
]
|
| 35 |
|
| 36 |
|