tobymao / 18xx

A platform for playing 18xx games online!
https://18xx.games
Other
298 stars 185 forks source link

[1840] Cannot pay for track cost as bonus action #11315

Closed ianwilson156 closed 2 weeks ago

ianwilson156 commented 3 weeks ago

https://18xx.games/game/181475

Line round 2.2

Line #16 is operating: it lays a yellow tile in C17 pointing towards C29 as its normal build, then lays a tile in I13 to get an extra yellow tile lay. It tries to lay a yellow tile in B28 but gets the error message "line 16 has 0 and cannot spend 40". But the river cost of B28 should come out of the parent company SJE. The rule is: "Laying a yellow track tile in the blue, Danube River hex in the top right corner of the map costs 40 Gulden. This is paid to the Bank from the treasury of the TC that owns the line laying the track."

If I do the bonus action as the first lay and the normal tile lay in B28 it works ok.

DestrinStorm commented 3 weeks ago

We're having exactly the same issue in https://18xx.games/game/181771

If line 17 tries to lay on B28 naturally it's fine, but if it does it via the special lay from I13 it gets this error.

I suspect the issue is in \lib\engine\game\g_1840\step\special_track.rb which doesn't define 'spender' for the lay_tile() call in the same way as it's handled in \lib\engine\game\g_1840\step\track_and_token.rb but I am not familiar enough with the overall structure to confirm for sure