Skip to content

Commit 5237367

Browse files
committed
Fix robbing the gold option preventing other actions
1 parent 55fa545 commit 5237367

File tree

2 files changed

+36
-22
lines changed

2 files changed

+36
-22
lines changed

priv/static/rulesets/fuzhou.json

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
2-
// TODOs:
3-
//⚠️ allow East to qiangjin, by only drawing East's 17th tile after everyone has declared flowers
4-
// mods/rule-variants
5-
// reddit post says only red dragon is a flower, not all 3 dragons
6-
// reddit post says if you have 3 gold you win immediately, but here it is just a valuable yaku
7-
// mahjongpros also seem to have a few more yaku
2+
// TODOs:
3+
//⚠️ allow East to qiangjin, by only drawing East's 17th tile after everyone has declared flowers
4+
// mods/rule-variants
5+
// reddit post says only red dragon is a flower, not all 3 dragons
6+
// reddit post says if you have 3 gold you win immediately, but here it is just a valuable yaku
7+
// mahjongpros also seem to have a few more yaku
88

99
"default_mods": ["show_waits"],
1010
"available_mods": [
@@ -208,18 +208,24 @@
208208
"after_turn_change": {
209209
"actions": [
210210
["when", ["no_tiles_remaining"], [["pause", 1000], ["ryuukyoku"]]],
211-
["when", [{"name": "everyone_status", "opts": ["no_flowers"]}], [["unset_status_all", "no_flowers", "match_start"]]],
211+
["when", [{"name": "everyone_status", "opts": ["no_flowers"]}], [["unset_status_all", "no_flowers", "match_start", "qiangjin"]]],
212212
["when", [{"name": "status_missing", "opts": ["match_start"]}, {"name": "tag_exists", "opts": ["jin"]}, "not_no_tiles_remaining"], [["draw"]]]
213213
]
214214
},
215215
"after_start": {
216216
"actions": [
217-
["set_status_all", "first_turn", "match_start"],
218217
["run", "flip_gold_tile"],
219-
// add the "dora" attribute to tiles tagged with "jin", which should make them shiny
218+
// add the "dora" attribute to tiles tagged with "jin", which should make them shiny
220219
["add_attr_tagged", "jin", ["_dora", "jin"]],
221-
// sets any tile with attribute "jin" to be an any-joker with attribute "is_jin"
222-
["set_tile_alias_all", [{"tile": "any", "attrs": ["jin"]}], [{"tile": "any", "attrs": ["is_jin"]}]]
220+
// before making jin a joker, check for qiangjin for all players
221+
["as", "everyone", [
222+
["when", [{"name": "match", "opts": [["hand", "revealed_tiles"], ["win"]]}], [
223+
["set_status", "qiangjin"]
224+
]]
225+
]],
226+
// sets any tile with attribute "jin" to be an any-joker with attribute "is_jin"
227+
["set_tile_alias", [{"tile": "any", "attrs": ["jin"]}], [{"tile": "any", "attrs": ["is_jin"]}]],
228+
["set_status_all", "first_turn", "match_start"]
223229
]
224230
},
225231
"before_win": {
@@ -240,7 +246,7 @@
240246
"show_when": [
241247
{"name": "status", "opts": ["match_start"]},
242248
"our_turn",
243-
{"name": "status_missing", "opts": ["flower", "no_flowers"]},
249+
{"name": "status_missing", "opts": ["qiangjin", "flower", "no_flowers"]},
244250
{"name": "match", "opts": [["hand", "draw"], [[ "nojoker", [["1f", "2f", "3f", "4f", "1g", "2g", "3g", "4g", "1z", "2z", "3z", "4z", "0z", "6z", "7z"], 1] ]]]}
245251
],
246252
"actions": [
@@ -258,7 +264,7 @@
258264
"show_when": [
259265
{"name": "status", "opts": ["match_start"]},
260266
"our_turn",
261-
{"name": "status_missing", "opts": ["flower", "no_flowers"]},
267+
{"name": "status_missing", "opts": ["qiangjin", "flower", "no_flowers"]},
262268
{"name": "not_match", "opts": [["hand", "draw"], [[ "nojoker", [["1f", "2f", "3f", "4f", "1g", "2g", "3g", "4g", "1z", "2z", "3z", "4z", "0z", "6z", "7z"], 1] ]]]}
263269
],
264270
"actions": [["big_text", "No flowers"], ["set_status", "no_flowers"], ["move_tiles", "draw", "hand"], ["advance_turn"]],
@@ -376,14 +382,22 @@
376382
"qiangjin": {
377383
"display_name": "Qiangjin",
378384
"show_when": [
379-
{"name": "status", "opts": ["match_start"]},
380-
{"name": "status_missing", "opts": ["flower"]},
381-
{"name": "match", "opts": [["hand", "revealed_tiles"], ["win"]]}
385+
{"name": "status", "opts": ["match_start", "qiangjin"]},
386+
{"name": "status_missing", "opts": ["flower"]}
382387
],
383388
"actions": [["big_text", "Qiangjin"], ["pause", 1000], ["move_tiles", "revealed_tile", "draw"], ["reveal_hand"], ["set_status", "qiangjin"], ["win_by_draw"]],
384389
"precedence_over": ["start_flower", "start_no_flower"],
385390
"unskippable": true
386391
},
392+
"qiangjin_skip": {
393+
"display_name": "Skip",
394+
"show_when": [
395+
{"name": "status", "opts": ["match_start", "qiangjin"]},
396+
{"name": "status_missing", "opts": ["flower"]}
397+
],
398+
"actions": [["unset_status", "qiangjin"], ["recalculate_buttons"]],
399+
"unskippable": true
400+
},
387401
"tsumo": {
388402
"display_name": "Zimo",
389403
"show_when": [

test/riichi_advanced/yaku_test/fuzhou_yaku_test.exs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -377,20 +377,20 @@ defmodule RiichiAdvanced.YakuTest.FuzhouYaku do
377377
TestUtils.test_yaku_advanced("fuzhou", [], """
378378
{
379379
"starting_hand": {
380-
"east": ["3m", "3m", "3m", "5m", "6m", "7m", "8m", "2s", "3s", "4s", "4p", "5p", "6p", "7p", "8p", "9p"],
380+
"east": ["3m", "3m", "3m", "6m", "6m", "7m", "8m", "2s", "3s", "4s", "4p", "5p", "6p", "7p", "8p", "9p"],
381381
"south": ["2m", "4m", "7m", "2p", "3p", "4p", "6p", "7p", "8p", "9p", "2s", "4s", "5s", "6s", "7s", "8s"],
382382
"west": ["2m", "4m", "7m", "2p", "3p", "4p", "6p", "7p", "8p", "9p", "2s", "4s", "5s", "6s", "7s", "8s"],
383383
"north": ["2m", "4m", "7m", "2p", "3p", "4p", "6p", "7p", "8p", "9p", "2s", "4s", "5s", "6s", "7s", "8s"]
384384
},
385-
"starting_draws": ["6m", "5s", "3s", "1s", "8m"],
385+
"starting_draws": ["5m", "5s", "3s", "1s", "8m"],
386386
"starting_dead_wall": ["8m"]
387387
}
388388
""", [
389389
%{"type" => "buttons_pressed", "buttons" => [%{"button" => "start_no_flower"}, nil, nil, nil]},
390390
%{"type" => "buttons_pressed", "buttons" => [nil, %{"button" => "start_no_flower"}, nil, nil]},
391391
%{"type" => "buttons_pressed", "buttons" => [nil, nil, %{"button" => "start_no_flower"}, nil]},
392392
%{"type" => "buttons_pressed", "buttons" => [nil, nil, nil, %{"button" => "start_no_flower"}]},
393-
%{"type" => "discard", "tile" => "6m", "player" => 0, "tsumogiri" => true},
393+
%{"type" => "discard", "tile" => "6m", "player" => 0, "tsumogiri" => false},
394394
%{"type" => "discard", "tile" => "5s", "player" => 1, "tsumogiri" => true},
395395
%{"type" => "discard", "tile" => "3s", "player" => 2, "tsumogiri" => true},
396396
%{"type" => "discard", "tile" => "1s", "player" => 3, "tsumogiri" => true},
@@ -406,20 +406,20 @@ defmodule RiichiAdvanced.YakuTest.FuzhouYaku do
406406
TestUtils.test_yaku_advanced("fuzhou", [], """
407407
{
408408
"starting_hand": {
409-
"east": ["3m", "3m", "5m", "6m", "7m", "8m", "8m", "2s", "3s", "4s", "4p", "5p", "6p", "7p", "8p", "9p"],
409+
"east": ["3m", "3m", "6m", "6m", "7m", "8m", "8m", "2s", "3s", "4s", "4p", "5p", "6p", "7p", "8p", "9p"],
410410
"south": ["2m", "4m", "7m", "2p", "3p", "4p", "6p", "7p", "8p", "9p", "2s", "4s", "5s", "6s", "7s", "8s"],
411411
"west": ["2m", "4m", "7m", "2p", "3p", "4p", "6p", "7p", "8p", "9p", "2s", "4s", "5s", "6s", "7s", "8s"],
412412
"north": ["2m", "4m", "7m", "2p", "3p", "4p", "6p", "7p", "8p", "9p", "2s", "4s", "5s", "6s", "7s", "8s"]
413413
},
414-
"starting_draws": ["6m", "5s", "3s", "1s", "8m"],
414+
"starting_draws": ["5m", "5s", "3s", "1s", "8m"],
415415
"starting_dead_wall": ["8m"]
416416
}
417417
""", [
418418
%{"type" => "buttons_pressed", "buttons" => [%{"button" => "start_no_flower"}, nil, nil, nil]},
419419
%{"type" => "buttons_pressed", "buttons" => [nil, %{"button" => "start_no_flower"}, nil, nil]},
420420
%{"type" => "buttons_pressed", "buttons" => [nil, nil, %{"button" => "start_no_flower"}, nil]},
421421
%{"type" => "buttons_pressed", "buttons" => [nil, nil, nil, %{"button" => "start_no_flower"}]},
422-
%{"type" => "discard", "tile" => "6m", "player" => 0, "tsumogiri" => true},
422+
%{"type" => "discard", "tile" => "5m", "player" => 0, "tsumogiri" => true},
423423
%{"type" => "discard", "tile" => "5s", "player" => 1, "tsumogiri" => true},
424424
%{"type" => "discard", "tile" => "3s", "player" => 2, "tsumogiri" => true},
425425
%{"type" => "discard", "tile" => "1s", "player" => 3, "tsumogiri" => true},

0 commit comments

Comments
 (0)