Skip to content

Rage and the tail-cut gate as behaviour blocks #125

Rage and the tail-cut gate as behaviour blocks

Rage and the tail-cut gate as behaviour blocks #125

Triggered via pull request October 13, 2026 13:17
Status Success
Total duration 1m 14s
Artifacts –

ci.yml

on: pull_request
Matrix: test
Fit to window
Zoom out
Zoom in

Annotations

1 error, 1 warning, and 3 notices
api
Process completed with exit code 1.
KINDS: packages/mhfu-port/src/mhfu_port/behaviour.py#L180
Attribute value was changed: `{k.name: k for k in (*map(_event, EVENTS), Kind('on_signal', 'event', 'On signal', (Param('name', 'signal', 'Signal', tip=_NAME_TIP + '; a mod raises it with port:fire'),), 'A mod raises this signal', summary=lambda v: str(v['name']), by='name'), Kind('any_time', 'state', 'Any time', (), 'Fires every AI frame in any main state of the base monster, while no own move plays', summary=lambda _: 'between moves'), Kind('idle', 'state', 'Idle', (), 'Fires every AI frame the base monster idles, while no own move plays', summary=lambda _: 'between moves'), Kind('host_state', 'state', 'Base monster in state', (Param('mains', 'mains', 'Main states', tip='Any of these main states of the base monster'),), 'Fires while the base monster is in one of these main states', summary=lambda v: 'states ' + ', '.join(map(str, v['mains']))), Kind('played_for', 'condition', 'Played for at least', (Param('frames', 'int', 'Frames', lo=1, tip='AI frames the move or main state must have stood'),), 'The move it follows, or the main state, has stood this long', summary=lambda v: f"{_plural(v['frames'], 'frame')} or more"), Kind('distance', 'condition', 'Hunter distance', (Param('lo', 'float', 'Nearest', 0.0, lo=0, tip='The nearest the hunter may be'), Param('hi', 'float', 'Farthest', optional=True, lo=0, tip='The farthest the hunter may be; else any distance')), 'The hunter is this far from the monster, in world units', summary=lambda v: _span(v['lo'], v.get('hi'))), Kind('hunter_moving', 'condition', 'Hunter moving', (Param('way', 'choice', 'Way', choices=('away', 'closer'), tip='Away from the monster, or closer to it'),), 'The hunter is moving away from the monster or closer to it', summary=lambda v: f"moving {v['way']}"), Kind('cooldown', 'modifier', 'Then wait', (Param('frames', 'int', 'Frames', lo=1, tip='AI frames before it may fire again'),), 'After it fired, the path waits before it may fire again', summary=lambda v: _plural(v['frames'], 'frame')), Kind('limit', 'modifier', 'At most', (Param('times', 'int', 'Times', lo=1, tip='How often it may fire'),), 'The path fires at most this often; without it, every time', summary=lambda v: _plural(v['times'], 'time')), Kind('force', 'modifier', 'Right away', (), 'An own move asked during the monster\'s notice waits for combat, so the "!" and the howl play out; this plays it at once', summary=lambda _: 'plays at once'), Kind('mode', 'modifier', 'Enter in mode', (Param('mode', 'int', 'Mode', lo=0, hi=255, tip="The mode a pair move's action is entered with; an own move has none"),), "The mode the base monster's action is entered with", summary=lambda v: f"mode {v['mode']}"), Kind('monster_hp', 'condition', 'Monster HP', (Param('lo', 'int', 'At least %', 0, lo=0, hi=100, tip='Its HP share is this or more'), Param('hi', 'int', 'Below %', optional=True, lo=0, hi=100, tip='Its HP share is under this; else any')), "The monster's HP, as a share of its maximum", summary=lambda v: _share(v['lo'], v.get('hi'))), Kind('part_broken', 'condition', 'Part broken', (Param('part', 'part', 'Part', tip='The body part'), Param('state', 'choice', 'State', 'broken', choices=tuple(_BROKEN), tip='Whether the part has broken on this monster')), 'A body part has, or has not, broken on this monster', summary=lambda v: f"{v['part']} {v['state']}"), Kind('rage', 'condition', 'Rage', (Param('state', 'choice', 'State', 'enraged', choices=tuple(_RAGE), tip='Whether the monster is enraged'),), 'The monster is enraged or calm', summary=lambda v: str(v['state'])), Kind('hunter_side', 'condition', 'Hunter side', (Param('sides', 'sides', 'Sides', choices=SIDES, tip='Any of these sides of the monster; its left is its own'),), 'The hunter is on one of these sides of the monster', summary=lambda v: ', '.join(v['sides'])), Kind('chance', 'condition', 'Chance', (Param('percent', 'int', 'Percent', lo=1, hi=100, tip='How often it holds'),), 'Holds this often; rolled last, once every other block holds', summary=lambda v: f"{_n(v['percent'])} %"), Kind('counter_is', 'condition', 'Counter is', (Param('counter', 'var', 'Co
api
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
lua
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test (3.14)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"