Compare commits

..

1 Commits

Author SHA1 Message Date
NewSoupVi
117295fd29 MultiServer.py: Another Hint Priority + Item Links bug oh boy
Basically, hints for itemlink worlds' locations get stored in ctx.hints under
1. the location's player
2. **every individual player** that is participating in the itemlink.

Right now, the updatehint code tries to replace and resend the hint under the itemlinked player, which doesn't work.
2025-04-13 20:49:55 +02:00

View File

@@ -792,10 +792,9 @@ class Context:
return None return None
def replace_hint(self, team: int, slot: int, old_hint: Hint, new_hint: Hint) -> None: def replace_hint(self, team: int, slot: int, old_hint: Hint, new_hint: Hint) -> None:
for real_slot in self.slot_set(slot): if old_hint in self.hints[team, slot]:
if old_hint in self.hints[team, real_slot]: self.hints[team, slot].remove(old_hint)
self.hints[team, real_slot].remove(old_hint) self.hints[team, slot].add(new_hint)
self.hints[team, real_slot].add(new_hint)
# "events" # "events"
@@ -1983,11 +1982,13 @@ async def process_client_cmd(ctx: Context, client: Client, args: dict):
new_hint = new_hint.re_prioritize(ctx, status) new_hint = new_hint.re_prioritize(ctx, status)
if hint == new_hint: if hint == new_hint:
return return
ctx.replace_hint(client.team, hint.finding_player, hint, new_hint)
ctx.replace_hint(client.team, hint.receiving_player, hint, new_hint) concerning_slots = ctx.slot_set(hint.receiving_player) | {hint.finding_player}
for slot in concerning_slots:
ctx.replace_hint(client.team, slot, hint, new_hint)
ctx.save() ctx.save()
ctx.on_changed_hints(client.team, hint.finding_player) for slot in concerning_slots:
ctx.on_changed_hints(client.team, hint.receiving_player) ctx.on_changed_hints(client.team, slot)
elif cmd == 'StatusUpdate': elif cmd == 'StatusUpdate':
update_client_status(ctx, client, args["status"]) update_client_status(ctx, client, args["status"])