Presses count until you're really down, not forecast down

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rope 2026-10-25 22:29:42 +00:00
parent 387f4c201b
commit e6702871ff
3 changed files with 25 additions and 6 deletions

View file

@ -257,7 +257,7 @@ VULNERABLE, RESISTANT = 1.25, 0.75
def _member_unit(member: dict) -> dict:
me = member["fighter"]
return {"id": member["id"], "side": "party", "name": member["name"], "top": member["top"], "hp": member["hp_in"],
"at": member["at"], "left": member["left"], "in": False, "out": None, "role": me["role"],
"at": member["at"], "left": member["left"], "in": False, "out": None, "out_at": None, "role": me["role"],
"damage": me["damage"], "interval": me["interval"], "accuracy": me["accuracy"], "evasion": me["evasion"],
"crit": me["crit"], "block": me["block"], "taken": me["taken"], "base": me["base"],
"abilities": list(me["abilities"]), "cds": {}, "busy": 0.0, "cast": None, "auras": [],
@ -306,7 +306,7 @@ def run(fight: dict) -> dict:
unit = units[member["id"]]
won = result == "won" and unit["out"] in (None, "down") and unit["in"]
member.update(hp=max(0, unit["hp"]), damage=unit["hurt"], dealt=unit["dealt"], wind_used=unit["wind_used"],
drank=unit["drank"], down=unit["down"],
drank=unit["drank"], down=unit["down"], out_at=unit["out_at"],
result="won" if won else unit["out"] or ("left" if not unit["in"] else result))
fight.update(events=state["events"], kills=state["kills"], result=result,
end=_real(state, t), duration=(fight["rest"] + t) / fight["pace"])
@ -906,7 +906,7 @@ def _fall(state: dict, unit: dict, t: float) -> None:
def _out(state: dict, unit: dict, why: str, t: float) -> None:
unit["out"], unit["cast"], unit["auras"] = why, None, []
unit["out"], unit["out_at"], unit["cast"], unit["auras"] = why, t, None, []
_event(state, t, unit["id"], unit["id"], why)
for enemy in _enemies(state):
enemy["threat"].pop(unit["id"], None)