Skip to content

Commit 13f9c2c

Browse files
committed
missing-energy scenarios, fix (again)
1 parent d11aef0 commit 13f9c2c

File tree

3 files changed

+235
-3
lines changed

3 files changed

+235
-3
lines changed

rust/maprando-logic/src/lib.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -895,12 +895,14 @@ impl LocalState {
895895
) -> bool {
896896
let missing = self.energy_missing(inventory, include_reserves);
897897
if reverse {
898-
self.energy = ResourceLevel::Consumed(Capacity::min(missing, amt)).into();
899-
if include_reserves && amt < inventory.max_energy {
898+
let regular_energy_amt =
899+
Capacity::min(Capacity::min(missing, amt), inventory.max_energy - 1);
900+
self.energy = ResourceLevel::Consumed(regular_energy_amt).into();
901+
if include_reserves {
900902
let missing_reserves = self.reserves_missing(inventory);
901903
self.reserves = ResourceLevel::Consumed(Capacity::min(
902904
missing_reserves,
903-
amt - inventory.max_energy + 1,
905+
amt - regular_energy_amt,
904906
))
905907
.into();
906908
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
{
2+
"$schema": "../../../../../sm-json-data/schema/m3-room.schema.json",
3+
"roomEnvironments": [{"heated": false}],
4+
"id": 0,
5+
"roomAddress": "0x0000",
6+
"name": "Test Room",
7+
"area": "Test Area",
8+
"subarea": "Test Subarea",
9+
"mapTileMask": [
10+
[1]
11+
],
12+
"nodes": [
13+
{
14+
"id": 1,
15+
"name": "Starting Node",
16+
"nodeType": "junction",
17+
"nodeSubType": "junction",
18+
"mapTileMask": [
19+
[1]
20+
]
21+
},
22+
{
23+
"id": 2,
24+
"name": "Ending Node",
25+
"nodeType": "junction",
26+
"nodeSubType": "junction",
27+
"mapTileMask": [
28+
[1]
29+
]
30+
}
31+
],
32+
"strats": [
33+
{
34+
"link": [1, 2],
35+
"name": "Energy Missing at Most",
36+
"requires": [
37+
{"resourceMissingAtMost": [{"type": "Energy", "count": 30}]}
38+
],
39+
"flashSuitChecked": true
40+
}
41+
]
42+
}
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
{
2+
"$schema": "../../schema/scenarios.schema.json",
3+
"scenarios": [
4+
{
5+
"name": "Not Enough Regular Energy",
6+
"startRoomId": 0,
7+
"startNodeId": 1,
8+
"startState": {
9+
"energy": {"remaining": 68}
10+
},
11+
"endRoomId": 0,
12+
"endNodeId": 2,
13+
"fail": true
14+
},
15+
{
16+
"name": "Not Enough Regular Energy (Combination)",
17+
"globalState": {
18+
"maxReserves": 100
19+
},
20+
"startRoomId": 0,
21+
"startNodeId": 1,
22+
"startState": {
23+
"energy": {"remaining": 78},
24+
"reserves": {"remaining": 90}
25+
},
26+
"endRoomId": 0,
27+
"endNodeId": 2,
28+
"fail": true
29+
},
30+
{
31+
"name": "Not Enough Regular Energy (Consumed)",
32+
"startRoomId": 0,
33+
"startNodeId": 1,
34+
"startState": {
35+
"energy": {"consumed": 31}
36+
},
37+
"endRoomId": 0,
38+
"endNodeId": 2,
39+
"fail": true
40+
},
41+
{
42+
"name": "Enough Regular Energy (Forward)",
43+
"startRoomId": 0,
44+
"startNodeId": 1,
45+
"startState": {
46+
"energy": {"remaining": 69}
47+
},
48+
"endRoomId": 0,
49+
"endNodeId": 2,
50+
"endState": {
51+
"energy": {"remaining": 69}
52+
},
53+
"reverse": "disabled"
54+
},
55+
{
56+
"name": "Enough Regular Energy (Combination, Forward)",
57+
"globalState": {
58+
"maxReserves": 100
59+
},
60+
"startRoomId": 0,
61+
"startNodeId": 1,
62+
"startState": {
63+
"energy": {"remaining": 79},
64+
"reserves": {"remaining": 90}
65+
},
66+
"endRoomId": 0,
67+
"endNodeId": 2,
68+
"endState": {
69+
"energy": {"remaining": 79},
70+
"reserves": {"remaining": 90}
71+
},
72+
"reverse": "disabled"
73+
},
74+
{
75+
"name": "Enough Regular Energy (Consumed, Forward)",
76+
"startRoomId": 0,
77+
"startNodeId": 1,
78+
"startState": {
79+
"energy": {"consumed": 30}
80+
},
81+
"endRoomId": 0,
82+
"endNodeId": 2,
83+
"endState": {
84+
"energy": {"consumed": 30}
85+
},
86+
"reverse": "disabled"
87+
},
88+
{
89+
"name": "Reverse",
90+
"startRoomId": 0,
91+
"startNodeId": 1,
92+
"startState": {
93+
"energy": {"consumed": 30},
94+
"reserves": {"consumed": 0}
95+
},
96+
"endRoomId": 0,
97+
"endNodeId": 2,
98+
"forward": "weak"
99+
},
100+
{
101+
"name": "Reverse (Combination)",
102+
"globalState": {
103+
"maxEnergy": 21,
104+
"maxReserves": 100
105+
},
106+
"startRoomId": 0,
107+
"startNodeId": 1,
108+
"startState": {
109+
"energy": {"consumed": 20},
110+
"reserves": {"consumed": 10}
111+
},
112+
"endRoomId": 0,
113+
"endNodeId": 2,
114+
"forward": "weak"
115+
},
116+
{
117+
"name": "Over Capacity (Consumed)",
118+
"globalState": {
119+
"maxEnergy": 20
120+
},
121+
"startRoomId": 0,
122+
"startNodeId": 1,
123+
"startState": {
124+
"energy": {"consumed": 19}
125+
},
126+
"endRoomId": 0,
127+
"endNodeId": 2,
128+
"endState": {
129+
"energy": {"consumed": 19}
130+
},
131+
"reverse": "disabled"
132+
},
133+
{
134+
"name": "Over Capacity (Forward)",
135+
"globalState": {
136+
"maxEnergy": 20
137+
},
138+
"startRoomId": 0,
139+
"startNodeId": 1,
140+
"endRoomId": 0,
141+
"endNodeId": 2,
142+
"reverse": "disabled"
143+
},
144+
{
145+
"name": "Over Capacity (Forward, Combination)",
146+
"globalState": {
147+
"maxEnergy": 10,
148+
"maxReserves": 15
149+
},
150+
"startRoomId": 0,
151+
"startNodeId": 1,
152+
"endRoomId": 0,
153+
"endNodeId": 2,
154+
"reverse": "disabled"
155+
},
156+
{
157+
"name": "Over Capacity (Reverse)",
158+
"globalState": {
159+
"maxEnergy": 20
160+
},
161+
"startRoomId": 0,
162+
"startNodeId": 1,
163+
"startState": {
164+
"energy": {"consumed": 19},
165+
"reserves": {"consumed": 0}
166+
},
167+
"endRoomId": 0,
168+
"endNodeId": 2,
169+
"forward": "weak"
170+
},
171+
{
172+
"name": "Over Capacity (Reverse, Combination)",
173+
"globalState": {
174+
"maxEnergy": 10,
175+
"maxReserves": 15
176+
},
177+
"startRoomId": 0,
178+
"startNodeId": 1,
179+
"startState": {
180+
"energy": {"consumed": 9},
181+
"reserves": {"consumed": 15}
182+
},
183+
"endRoomId": 0,
184+
"endNodeId": 2,
185+
"forward": "weak"
186+
}
187+
]
188+
}

0 commit comments

Comments
 (0)