Bring the game from shoal-games 82301f6c4521
Browse files+8 −0 AGENTS.md added View file
| @@ -0,0 +1,8 @@ | ||
| 1 | +# Rules for agents | |
| 2 | + | |
| 3 | +- Your bot is an ARC-AGI-3-Agents agent: `routes/<your route>/agent.py` with a class `Agent` and `choose_action(frames, latest_frame)`. Start from `routes/agent.py`, the official random agent. It runs on Python 3.12 with arc-agi installed, and no network. | |
| 4 | +- Test before you push: `python3 referee/play.py check routes/<your route>` serves the season's games locally and prints your RHAE per game. | |
| 5 | +- Every push is checked the same way and the score is kept. You do not write `metrics.json` yourself, and your agent cannot: it only talks to the game server. | |
| 6 | +- Don't put a `.env` in your route; the toolkit would read it. The referee runs your agent from a clean directory anyway. | |
| 7 | +- For replays, submit a practice job: `sbatch referee/practice.sbatch`. The first two games show up under Matches. | |
| 8 | +- Write what you tried and what to try next in `routes/<your route>/README.md`, ending with `## Next`. Don't change `referee/` or `viewer/` on your route. | |
+0 −0 cover.png added View file
+19 −0 kit/bridge.js added View file
| @@ -0,0 +1,19 @@ | ||
| 1 | +// The page around a game's viewer hands it the replay (Shoal's public/app.js): the viewer runs in a frame with scripts | |
| 2 | +// only, says it is ready, and gets {shoal: 'replay', name, text}. Opened by itself, it reads ?replay=<file> instead, | |
| 3 | +// so a replay can be watched from a clone: python3 -m http.server, then viewer/index.html?replay=../replays/x.json | |
| 4 | +// A live room (docs/games.md §8.4) opens the viewer as index.html?live. shoalLive(fn) says {shoal: 'ready', live: true} | |
| 5 | +// and calls fn(batch) for each {shoal: 'live', room, you, messages}: you lists the seats this viewer controls, the first | |
| 6 | +// batch holds all the history it may see, and each message is the room's (§8.3) plus its sequence number n: {n, to, | |
| 7 | +// version, obs, legal} asks a seat to act, {n, to, obs} tells one seat, {n, event} is public, {n, end} ends the room. | |
| 8 | +// shoalAct(seat, version, action) plays for a seat in you, answering the request with that version. | |
| 9 | +window.shoalReplay = start => { | |
| 10 | + addEventListener('message', e => { if (e.data && e.data.shoal === 'replay') start(e.data.text, e.data.name) }) | |
| 11 | + const local = new URLSearchParams(location.search).get('replay') | |
| 12 | + if (local) fetch(local).then(r => r.text()).then(t => start(t, local)) | |
| 13 | + else if (parent !== window) parent.postMessage({ shoal: 'ready' }, '*') | |
| 14 | +} | |
| 15 | +window.shoalLive = fn => { | |
| 16 | + addEventListener('message', e => { if (e.data && e.data.shoal === 'live') fn(e.data) }) | |
| 17 | + if (parent !== window) parent.postMessage({ shoal: 'ready', live: true }, '*') | |
| 18 | +} | |
| 19 | +window.shoalAct = (seat, version, action) => parent.postMessage({ shoal: 'act', seat, version, action }, '*') | |
+82 −0 kit/host.py added View file
| @@ -0,0 +1,82 @@ | ||
| 1 | +"""A bot in its own process, spoken to one JSON line at a time. Start it with python -s, not -I: -I would ignore the | |
| 2 | +fixed PYTHONHASHSEED that makes a bot that iterates over sets play the same game twice. | |
| 3 | + | |
| 4 | +The referee never imports a bot: it starts the bot's adapter (a small child program each game has, which loads the bot | |
| 5 | +in the game's own interface) and sends it one line per turn. A move that takes longer than the time limit, or a bot | |
| 6 | +that crashed, gets the game's default move; the referee counts those as errors. The child side is `serve(handle)`. | |
| 7 | +""" | |
| 8 | +import json, os, select, subprocess, sys, time | |
| 9 | + | |
| 10 | + | |
| 11 | +class Child: | |
| 12 | + def __init__(self, argv, cwd=None, limit=1.0, start=10.0): | |
| 13 | + self.limit, self.errors, self.dead = limit, 0, False | |
| 14 | + env = {k: v for k, v in os.environ.items() if not k.startswith(('SS_', 'SLURM_'))} # a bot sees no job token | |
| 15 | + env['PYTHONHASHSEED'] = '0' # the same bot plays the same moves: sets iterate in one order | |
| 16 | + self.p = subprocess.Popen(argv, cwd=cwd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL, env=env) | |
| 17 | + self.buf, self.n = b'', 0 | |
| 18 | + self.ask({'hello': True}, limit=start) | |
| 19 | + | |
| 20 | + def ask(self, msg, limit=None): | |
| 21 | + """The child's answer to one message, or None when it is late, broken or gone.""" | |
| 22 | + if self.dead: | |
| 23 | + return None | |
| 24 | + try: | |
| 25 | + self.n += 1 # numbered, so a late answer to an earlier turn is dropped rather than taken for this one | |
| 26 | + self.p.stdin.write((json.dumps({**msg, 'n': self.n}) + '\n').encode()) | |
| 27 | + self.p.stdin.flush() | |
| 28 | + deadline = time.monotonic() + (limit or self.limit) | |
| 29 | + fd = self.p.stdout.fileno() | |
| 30 | + while True: # read the pipe ourselves: a buffered readline after select can hide an answer already read | |
| 31 | + while b'\n' not in self.buf: | |
| 32 | + ready, _, _ = select.select([fd], [], [], max(0.0, deadline - time.monotonic())) | |
| 33 | + chunk = os.read(fd, 1 << 16) if ready else b'' | |
| 34 | + if not chunk: | |
| 35 | + raise TimeoutError | |
| 36 | + self.buf += chunk | |
| 37 | + line, self.buf = self.buf.split(b'\n', 1) | |
| 38 | + try: # lines that are not an answer (a library printing as it loads) are skipped | |
| 39 | + msg_in = json.loads(line) | |
| 40 | + except ValueError: | |
| 41 | + continue | |
| 42 | + if isinstance(msg_in, dict) and 'answer' in msg_in and msg_in.get('n') == self.n: | |
| 43 | + return msg_in['answer'] | |
| 44 | + except Exception: | |
| 45 | + self.errors += 1 | |
| 46 | + if self.errors >= 20 or self.p.poll() is not None: # ponytail: a slow bot is stopped after 20 misses | |
| 47 | + self.close() | |
| 48 | + return None | |
| 49 | + | |
| 50 | + def close(self): | |
| 51 | + self.dead = True | |
| 52 | + try: | |
| 53 | + self.p.kill() | |
| 54 | + except Exception: | |
| 55 | + pass | |
| 56 | + | |
| 57 | + | |
| 58 | +def serve(handle): | |
| 59 | + """The child's loop: each line from the referee in, handle(message) out; {'hello': True} answers at once.""" | |
| 60 | + out = sys.__stdout__ | |
| 61 | + sys.stdout = sys.stderr # a bot's prints must not corrupt the channel | |
| 62 | + for line in sys.stdin: | |
| 63 | + msg = json.loads(line) | |
| 64 | + answer = True if msg.get('hello') else handle(msg) | |
| 65 | + out.write(json.dumps({'answer': answer, 'n': msg.get('n')}) + '\n') | |
| 66 | + out.flush() | |
| 67 | + | |
| 68 | + | |
| 69 | +def load(path, *names): | |
| 70 | + """The first of names defined by the bot file at path, which may import its neighbours.""" | |
| 71 | + import importlib.util | |
| 72 | + sys.path.insert(0, os.path.dirname(os.path.abspath(path))) | |
| 73 | + spec = importlib.util.spec_from_file_location('bot', path) | |
| 74 | + mod = importlib.util.module_from_spec(spec) | |
| 75 | + spec.loader.exec_module(mod) | |
| 76 | + for n in names: | |
| 77 | + if hasattr(mod, n): | |
| 78 | + return getattr(mod, n) | |
| 79 | + fns = [v for v in vars(mod).values() if callable(v) and getattr(v, '__module__', '') == 'bot'] | |
| 80 | + if not fns: | |
| 81 | + raise SystemExit(f'{path} defines none of {", ".join(names)}') | |
| 82 | + return fns[-1] # Kaggle's rule: the last function in the file | |
+48 −0 kit/league.py added View file
| @@ -0,0 +1,48 @@ | ||
| 1 | +"""What every game's referee shares: where the bots are, how a match is seated, and the files a run leaves. | |
| 2 | + | |
| 3 | +check: the route's bot plays every bot of the season's field (field/<name>/), seats swapped; the score is the mean | |
| 4 | + over the field and each opponent is a subtask. metrics.json is what the site keeps (scienceslack.json names it). | |
| 5 | +practice: a few matches against the field, each leaving a replay in replays/ and an entry in replays/matches.json. | |
| 6 | +""" | |
| 7 | +import json, os, sys | |
| 8 | + | |
| 9 | + | |
| 10 | +def bot_dir(arg): | |
| 11 | + """The route's folder the check was given, absolute (bots run in their own folder); a missing bot is the route's | |
| 12 | + mistake, said plainly.""" | |
| 13 | + if not os.path.isdir(arg): | |
| 14 | + sys.exit(f'No route folder at {arg}') | |
| 15 | + return os.path.abspath(arg) | |
| 16 | + | |
| 17 | + | |
| 18 | +def field(root='field'): | |
| 19 | + return sorted(d for d in os.listdir(root) if os.path.isdir(os.path.join(root, d)) and not d.startswith('.')) | |
| 20 | + | |
| 21 | + | |
| 22 | +def route_name(): | |
| 23 | + d = os.environ.get('SS_ROUTE_DIR', 'routes').rstrip('/') | |
| 24 | + return 'main' if d == 'routes' else d.split('/', 1)[-1] | |
| 25 | + | |
| 26 | + | |
| 27 | +def write_metrics(score, subtasks, cost=None, path='metrics.json'): | |
| 28 | + out = {'score': round(score, 6), 'subtasks': {k: round(v, 6) for k, v in subtasks.items()}} | |
| 29 | + if cost is not None: | |
| 30 | + out['cost'] = round(cost, 3) | |
| 31 | + with open(path, 'w') as f: | |
| 32 | + json.dump(out, f, indent=2, sort_keys=True) | |
| 33 | + print(f'score {out["score"]} over {len(subtasks)}: ' + ', '.join(f'{k} {v:.3g}' for k, v in out['subtasks'].items())) | |
| 34 | + | |
| 35 | + | |
| 36 | +class Replays: | |
| 37 | + """replays/<file> per match, and replays/matches.json saying who sat where and how it ended.""" | |
| 38 | + | |
| 39 | + def __init__(self, root='replays'): | |
| 40 | + self.root, self.index = root, [] | |
| 41 | + os.makedirs(root, exist_ok=True) | |
| 42 | + | |
| 43 | + def add(self, file, data, title, seats, result): | |
| 44 | + with open(os.path.join(self.root, file), 'w') as f: | |
| 45 | + f.write(data if isinstance(data, str) else json.dumps(data, separators=(',', ':'))) | |
| 46 | + self.index.append({'file': file, 'title': title, 'seats': seats, 'result': result}) | |
| 47 | + with open(os.path.join(self.root, 'matches.json'), 'w') as f: | |
| 48 | + json.dump(self.index, f, indent=2) | |
+143 −0 kit/room.py added View file
| @@ -0,0 +1,143 @@ | ||
| 1 | +"""A room's half of the room protocol (docs/games.md §8.3), for any game's referee. SS_ROOM says who holds each seat; | |
| 2 | +ask() gets a move from a bot child, from a person or agent over stdin, or from the game's own fallback (auto). | |
| 3 | + | |
| 4 | + room = Room(start) start(folder) -> host.Child, the game's way to run a bot (a route's or field/<name>) | |
| 5 | + move = room.ask(seat, obs, legal, auto=lambda: ..., bot=<the bot child's message, in the game's own interface>) | |
| 6 | + move = room.ask(seat, obs, legal, auto, accept=lambda a: ...) # legal holds templates (free text): accept says | |
| 7 | + # what an answer means, or None to keep waiting | |
| 8 | + room.tell(seat, obs); room.event(data); room.end(result, scores); room.close() | |
| 9 | + | |
| 10 | +Lines to the platform start with '@shoal ' and are flushed one by one; the referee's own prints go to stderr, so a | |
| 11 | +library printing as it loads cannot break a line. A person or agent who does not answer within the limit (SS_ROOM | |
| 12 | +"limit", 30 s by default; ask(..., limit=s) sets one request's, e.g. a speech's) gets auto's move. {"control": ...} | |
| 13 | +re-asks the seat with a new version, so a late answer from the old controller is dropped; {"stop": true} makes ask() | |
| 14 | +raise Stop, and the referee writes what it has and ends. | |
| 15 | +""" | |
| 16 | +import json, os, queue, sys, threading, time | |
| 17 | + | |
| 18 | + | |
| 19 | +class Stop(Exception): | |
| 20 | + pass | |
| 21 | + | |
| 22 | + | |
| 23 | +def log(*a): | |
| 24 | + print('room:', *a, file=sys.stderr, flush=True) | |
| 25 | + | |
| 26 | + | |
| 27 | +class Room: | |
| 28 | + def __init__(self, start, field='field'): | |
| 29 | + conf = json.loads(os.environ.get('SS_ROOM') or '{}') | |
| 30 | + self.seats = {str(k): v for k, v in conf.get('seats', {}).items()} | |
| 31 | + self.limit = float(conf.get('limit', 30)) | |
| 32 | + self.start, self.field, self.bots = start, field, {} | |
| 33 | + self.version, self.stopped = 0, False | |
| 34 | + self.inbox, self.lock = queue.Queue(), threading.Lock() | |
| 35 | + self.out, sys.stdout = sys.stdout, sys.stderr # prints, ours or a library's, must not look like protocol | |
| 36 | + threading.Thread(target=self._read, daemon=True).start() | |
| 37 | + | |
| 38 | + def say(self, msg): | |
| 39 | + with self.lock: # the reader thread speaks too (control events) | |
| 40 | + self.out.write('@shoal ' + json.dumps(msg, separators=(',', ':')) + '\n') | |
| 41 | + self.out.flush() | |
| 42 | + | |
| 43 | + def tell(self, seat, obs): | |
| 44 | + self.say({'to': seat, 'obs': obs}) | |
| 45 | + | |
| 46 | + def event(self, data): | |
| 47 | + self.say({'event': data}) | |
| 48 | + | |
| 49 | + def end(self, result, scores): | |
| 50 | + self.say({'end': {'result': result, 'scores': scores}}) | |
| 51 | + | |
| 52 | + def label(self, seat): | |
| 53 | + s = self.seats.get(seat) or {} | |
| 54 | + return s.get('name') or s.get('route') or s.get('field') or os.path.basename((s.get('dir') or '').rstrip('/')) or s.get('kind') or 'auto' | |
| 55 | + | |
| 56 | + def kind(self, seat): | |
| 57 | + return (self.seats.get(seat) or {}).get('kind') or 'auto' | |
| 58 | + | |
| 59 | + def ask(self, seat, obs, legal, auto, bot=None, accept=None, limit=None): | |
| 60 | + ok = accept or (lambda a: a if a in legal else None) | |
| 61 | + while True: | |
| 62 | + if self.stopped: | |
| 63 | + raise Stop | |
| 64 | + spec = self.seats.get(seat) or {} | |
| 65 | + kind = spec.get('kind') | |
| 66 | + if kind == 'bot': | |
| 67 | + child = self._bot(spec) | |
| 68 | + move = child.ask(bot if bot is not None else {'obs': obs, 'legal': legal}) if child else None | |
| 69 | + move = ok(move) if move is not None else None | |
| 70 | + return auto() if move is None else move # a late, broken or illegal bot move: auto plays it | |
| 71 | + if kind not in ('human', 'agent'): | |
| 72 | + return auto() | |
| 73 | + self._drain() # answers and notices from before this request are stale | |
| 74 | + if self.stopped: # a stop drained with them still counts | |
| 75 | + raise Stop | |
| 76 | + self.version += 1 | |
| 77 | + v = self.version | |
| 78 | + self.say({'to': seat, 'version': v, 'obs': obs, 'legal': legal}) | |
| 79 | + deadline = time.monotonic() + (limit or self.limit) | |
| 80 | + while True: | |
| 81 | + try: | |
| 82 | + msg = self.inbox.get(timeout=max(0.0, deadline - time.monotonic())) | |
| 83 | + except queue.Empty: | |
| 84 | + log(f'seat {seat} out of time at version {v}: auto plays') | |
| 85 | + return auto() | |
| 86 | + if msg.get('stop'): | |
| 87 | + raise Stop | |
| 88 | + c = msg.get('control') | |
| 89 | + if isinstance(c, dict) and str(c.get('seat')) == seat: | |
| 90 | + break # a new controller: ask again, with a new version | |
| 91 | + a = msg.get('act') | |
| 92 | + if isinstance(a, dict) and str(a.get('seat')) == seat and a.get('version') == v: | |
| 93 | + move = ok(a.get('action')) | |
| 94 | + if move is not None: | |
| 95 | + return move | |
| 96 | + if a is not None: | |
| 97 | + log(f'ignored act {json.dumps(a)[:120]}: asking seat {seat} at version {v}') | |
| 98 | + | |
| 99 | + def close(self): | |
| 100 | + for c in self.bots.values(): | |
| 101 | + if c: | |
| 102 | + c.close() | |
| 103 | + | |
| 104 | + def _read(self): | |
| 105 | + for line in sys.stdin: | |
| 106 | + try: | |
| 107 | + msg = json.loads(line) | |
| 108 | + except ValueError: | |
| 109 | + log('not JSON:', line.strip()[:120]) | |
| 110 | + continue | |
| 111 | + if not isinstance(msg, dict): | |
| 112 | + continue | |
| 113 | + if msg.get('stop'): | |
| 114 | + self.stopped = True | |
| 115 | + c = msg.get('control') | |
| 116 | + if isinstance(c, dict) and 'seat' in c: # applied at once: the seat may not be the one being asked | |
| 117 | + seat = str(c['seat']) | |
| 118 | + self.seats[seat] = {k: v for k, v in c.items() if k != 'seat'} | |
| 119 | + self.event({'type': 'control', 'seat': seat, 'kind': self.kind(seat), 'name': self.label(seat)}) | |
| 120 | + self.inbox.put(msg) | |
| 121 | + | |
| 122 | + def _drain(self): | |
| 123 | + while True: | |
| 124 | + try: | |
| 125 | + msg = self.inbox.get_nowait() | |
| 126 | + except queue.Empty: | |
| 127 | + return | |
| 128 | + if msg.get('act') is not None: | |
| 129 | + log(f'ignored act {json.dumps(msg["act"])[:120]}: stale') | |
| 130 | + | |
| 131 | + def _bot(self, spec): | |
| 132 | + """The child for a bot seat, one per folder (as the checks share one between seats); None if it cannot start.""" | |
| 133 | + if spec.get('field'): | |
| 134 | + folder = os.path.join(self.field, spec['field']) | |
| 135 | + else: | |
| 136 | + folder = os.path.join(os.environ.get('SS_INPUT', '.'), spec.get('dir') or spec.get('route') or '') | |
| 137 | + if folder not in self.bots: | |
| 138 | + try: | |
| 139 | + self.bots[folder] = self.start(folder) | |
| 140 | + except (Exception, SystemExit) as e: # a missing bot is played by auto rather than ending the room | |
| 141 | + log(f'no bot at {folder} ({e}): auto plays that seat') | |
| 142 | + self.bots[folder] = None | |
| 143 | + return self.bots[folder] | |
+88 −0 kit/roomcli.py added View file
| @@ -0,0 +1,88 @@ | ||
| 1 | +"""Play a room on a laptop, without the site: run a room command with SS_ROOM, print what it says (docs/games.md §8.3), | |
| 2 | +and answer its requests to human and agent seats, from the terminal or by rule. | |
| 3 | + | |
| 4 | + python3 kit/roomcli.py --room '{"seats": {...}}' [--auto] [--seat 0 --pick random] [--control 0=auto@6] [--stop 12] -- <command> | |
| 5 | + | |
| 6 | +--auto answers every request with the first legal action; --seat S (repeatable) answers seat S by --pick (first or | |
| 7 | +random) and leaves the other seats to the terminal. --control S=KIND@N: at the first request to seat S after N public | |
| 8 | +events, hand the seat to KIND (auto, agent, human), then send the old controller's late answer to that request, which | |
| 9 | +the room must ignore (it re-asks with a new version, or auto plays). --stop N sends {"stop": true} after N events. | |
| 10 | +SS_INPUT (a route's dir is under it) defaults to the current folder; --full prints whole messages. | |
| 11 | +""" | |
| 12 | +import argparse, json, os, random, subprocess, sys | |
| 13 | + | |
| 14 | + | |
| 15 | +def main(): | |
| 16 | + ap = argparse.ArgumentParser(description=__doc__.split('\n')[0]) | |
| 17 | + ap.add_argument('--room', default=os.environ.get('SS_ROOM', '{"seats": {}}'), help='SS_ROOM for the room') | |
| 18 | + ap.add_argument('--auto', action='store_true', help='answer every request with the first legal action') | |
| 19 | + ap.add_argument('--seat', action='append', default=[], help='a seat answered by --pick') | |
| 20 | + ap.add_argument('--pick', choices=['first', 'random'], default='first') | |
| 21 | + ap.add_argument('--control', action='append', default=[], help='S=KIND@N: hand seat S to KIND after N events') | |
| 22 | + ap.add_argument('--stop', type=int, help='send stop after N events') | |
| 23 | + ap.add_argument('--seed', type=int, default=0, help='for --pick random') | |
| 24 | + ap.add_argument('--full', action='store_true') | |
| 25 | + ap.add_argument('cmd', nargs=argparse.REMAINDER) | |
| 26 | + a = ap.parse_args() | |
| 27 | + cmd = a.cmd[1:] if a.cmd[:1] == ['--'] else a.cmd | |
| 28 | + if not cmd: | |
| 29 | + ap.error('give the room command after --') | |
| 30 | + controls = [] | |
| 31 | + for c in a.control: | |
| 32 | + seat, rest = c.split('=', 1) | |
| 33 | + kind, at = rest.split('@', 1) | |
| 34 | + controls.append({'seat': seat, 'kind': kind, 'at': int(at)}) | |
| 35 | + rnd = random.Random(a.seed) | |
| 36 | + env = {**os.environ, 'SS_ROOM': a.room, 'SS_INPUT': os.environ.get('SS_INPUT', os.getcwd())} | |
| 37 | + p = subprocess.Popen(cmd, env=env, stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True, bufsize=1) | |
| 38 | + events = asked = answered = late = 0 | |
| 39 | + versions = [] | |
| 40 | + | |
| 41 | + def send(msg): | |
| 42 | + p.stdin.write(json.dumps(msg) + '\n') | |
| 43 | + p.stdin.flush() | |
| 44 | + print(' >>', json.dumps(msg)[:200]) | |
| 45 | + | |
| 46 | + for line in p.stdout: | |
| 47 | + if not line.startswith('@shoal '): | |
| 48 | + print(' log', line.rstrip()) | |
| 49 | + continue | |
| 50 | + msg = json.loads(line[7:]) | |
| 51 | + text = json.dumps(msg) | |
| 52 | + print(f'@shoal {text if a.full or len(text) <= 200 else text[:197] + "..."}') | |
| 53 | + if 'event' in msg: | |
| 54 | + events += 1 | |
| 55 | + if a.stop is not None and events == a.stop: | |
| 56 | + send({'stop': True}) | |
| 57 | + if 'end' in msg: | |
| 58 | + break | |
| 59 | + if 'version' not in msg: | |
| 60 | + continue | |
| 61 | + seat, v, legal = msg['to'], msg['version'], msg['legal'] | |
| 62 | + asked += 1 | |
| 63 | + assert not versions or v > versions[-1], 'versions must grow' | |
| 64 | + versions.append(v) | |
| 65 | + due = next((c for c in controls if c['seat'] == seat and events >= c['at']), None) | |
| 66 | + if due: # the handover, then the old controller's answer arriving late | |
| 67 | + controls.remove(due) | |
| 68 | + send({'control': {'seat': seat, 'kind': due['kind'], 'name': f'{due["kind"]}-{seat}'}}) | |
| 69 | + send({'act': {'seat': seat, 'version': v, 'action': legal[-1]}}) | |
| 70 | + late += 1 | |
| 71 | + continue | |
| 72 | + if a.auto or seat in a.seat: | |
| 73 | + action = legal[0] if a.pick == 'first' or a.auto else rnd.choice(legal) | |
| 74 | + else: | |
| 75 | + print(f'seat {seat}, version {v}: obs {json.dumps(msg["obs"])[:300]}\nlegal: {" ".join(map(str, legal[:60]))}') | |
| 76 | + got = input('your move, or its index (blank: the first)> ').strip() | |
| 77 | + action = got if got in legal else legal[int(got)] if got.isdigit() and int(got) < len(legal) else got or legal[0] | |
| 78 | + send({'act': {'seat': seat, 'version': v, 'action': action}}) | |
| 79 | + answered += 1 | |
| 80 | + p.stdin.close() | |
| 81 | + code = p.wait() | |
| 82 | + print(f'roomcli: {events} events, {asked} requests (versions {versions[:1]}..{versions[-1:]}), {answered} answered, ' | |
| 83 | + f'{late} late answers sent, exit {code}') | |
| 84 | + sys.exit(code) | |
| 85 | + | |
| 86 | + | |
| 87 | +if __name__ == '__main__': | |
| 88 | + main() | |
+57 −0 kit/test_room.py added View file
| @@ -0,0 +1,57 @@ | ||
| 1 | +"""A check of kit/room.py against the room protocol (docs/games.md §8.3), on a toy game with one human seat: a stale or | |
| 2 | +illegal answer is ignored, a handover re-asks with a new version and drops the old controller's late answer, a silent | |
| 3 | +seat gets auto's move, and stop ends the room. python3 kit/test_room.py (or pytest) | |
| 4 | +""" | |
| 5 | +import json, os, subprocess, sys | |
| 6 | + | |
| 7 | +KIT = os.path.dirname(os.path.abspath(__file__)) | |
| 8 | +GAME = f''' | |
| 9 | +import sys; sys.path.insert(0, {KIT!r}) | |
| 10 | +from room import Room, Stop | |
| 11 | +room = Room(None) | |
| 12 | +try: | |
| 13 | + for i in range(4): | |
| 14 | + room.event({{'seat': '0', 'move': room.ask('0', {{'i': i}}, ['a', 'b'], auto=lambda: 'auto')}}) | |
| 15 | +except Stop: | |
| 16 | + room.event({{'stopped': True}}) | |
| 17 | +room.end('done', {{'0': 0}}) | |
| 18 | +''' | |
| 19 | + | |
| 20 | + | |
| 21 | +def test_room(): | |
| 22 | + env = {**os.environ, 'SS_ROOM': json.dumps({'limit': 0.5, 'seats': {'0': {'kind': 'human'}}})} | |
| 23 | + p = subprocess.Popen([sys.executable, '-c', GAME], env=env, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL, text=True) | |
| 24 | + | |
| 25 | + def said(): | |
| 26 | + line = p.stdout.readline() | |
| 27 | + assert line.startswith('@shoal '), line | |
| 28 | + return json.loads(line[7:]) | |
| 29 | + | |
| 30 | + def send(msg): | |
| 31 | + p.stdin.write(json.dumps(msg) + '\n') | |
| 32 | + p.stdin.flush() | |
| 33 | + | |
| 34 | + assert said() == {'to': '0', 'version': 1, 'obs': {'i': 0}, 'legal': ['a', 'b']} | |
| 35 | + send({'act': {'seat': '0', 'version': 0, 'action': 'a'}}) # stale | |
| 36 | + send({'act': {'seat': '0', 'version': 1, 'action': 'z'}}) # illegal | |
| 37 | + send({'act': {'seat': '0', 'version': 1, 'action': 'b'}}) | |
| 38 | + assert said() == {'event': {'seat': '0', 'move': 'b'}} | |
| 39 | + assert said()['version'] == 2 | |
| 40 | + send({'control': {'seat': '0', 'kind': 'agent', 'name': 'ada-codex'}}) | |
| 41 | + send({'act': {'seat': '0', 'version': 2, 'action': 'b'}}) # the old controller, late | |
| 42 | + assert said() == {'event': {'type': 'control', 'seat': '0', 'kind': 'agent', 'name': 'ada-codex'}} | |
| 43 | + assert said()['version'] == 3 | |
| 44 | + send({'act': {'seat': '0', 'version': 3, 'action': 'a'}}) | |
| 45 | + assert said() == {'event': {'seat': '0', 'move': 'a'}} | |
| 46 | + assert said()['version'] == 4 # left unanswered: auto plays after the limit | |
| 47 | + assert said() == {'event': {'seat': '0', 'move': 'auto'}} | |
| 48 | + assert said()['version'] == 5 | |
| 49 | + send({'stop': True}) | |
| 50 | + assert said() == {'event': {'stopped': True}} | |
| 51 | + assert said() == {'end': {'result': 'done', 'scores': {'0': 0}}} | |
| 52 | + assert p.wait(5) == 0 | |
| 53 | + | |
| 54 | + | |
| 55 | +if __name__ == '__main__': | |
| 56 | + test_room() | |
| 57 | + print('room protocol: ok') | |
+36 −0 referee/agent_child.py added View file
| @@ -0,0 +1,36 @@ | ||
| 1 | +"""A bot's own process, in the ARC-AGI-3-Agents interface: agent.py defines a class Agent with | |
| 2 | +choose_action(frames, latest_frame) -> GameAction (or (GameAction, {"x": .., "y": ..}) for ACTION6) and, if it likes, | |
| 3 | +is_done(frames, latest_frame). It plays one game through the official toolkit, online mode, against the referee's | |
| 4 | +local server, and stops at the action limit. | |
| 5 | + python3 referee/agent_child.py <agent.py> <server url> <game> <max actions> | |
| 6 | +""" | |
| 7 | +import os, sys | |
| 8 | + | |
| 9 | +sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'kit')) | |
| 10 | +import random # noqa: E402 | |
| 11 | +from host import load # noqa: E402 | |
| 12 | +from arc_agi import Arcade, OperationMode # noqa: E402 | |
| 13 | +from arcengine import GameAction, GameState # noqa: E402 | |
| 14 | + | |
| 15 | +random.seed(0) | |
| 16 | +bot, url, game, most = sys.argv[1], sys.argv[2], sys.argv[3], int(sys.argv[4]) | |
| 17 | +agent = load(bot, 'Agent')() | |
| 18 | +arc = Arcade(arc_api_key='local', arc_base_url=url, operation_mode=OperationMode.ONLINE, environments_dir=os.path.join(os.getcwd(), 'none')) | |
| 19 | +env = arc.make(game) | |
| 20 | +fd = env.reset() | |
| 21 | +frames = [fd] | |
| 22 | +for _ in range(most): | |
| 23 | + if hasattr(agent, 'is_done') and agent.is_done(frames, fd): | |
| 24 | + break | |
| 25 | + try: | |
| 26 | + out = agent.choose_action(frames, fd) | |
| 27 | + except Exception: | |
| 28 | + out = GameAction.RESET | |
| 29 | + action, data = out if isinstance(out, tuple) else (out, getattr(out, 'action_data', None)) | |
| 30 | + if not isinstance(action, GameAction): | |
| 31 | + action = GameAction.RESET | |
| 32 | + if fd.state is GameState.GAME_OVER: | |
| 33 | + action = GameAction.RESET | |
| 34 | + data = dict(data) if isinstance(data, dict) else {} | |
| 35 | + fd = env.step(action, data={k: data[k] for k in ('x', 'y') if k in data} if action.is_complex() else {}) | |
| 36 | + frames.append(fd) | |
+6 −0 referee/check.sbatch added View file
| @@ -0,0 +1,6 @@ | ||
| 1 | +#!/bin/bash | |
| 2 | +#SBATCH --job-name=play | |
| 3 | +#SBATCH --time=30:00 | |
| 4 | +# The route's agent on the season's games; writes metrics.json, which the site keeps as the route's score. | |
| 5 | +PY=$(command -v arc-agi-3-python || command -v python3) | |
| 6 | +PYTHONHASHSEED=0 "$PY" -s referee/play.py check "$SS_INPUT/$SS_ROUTE_DIR" | |
+2520 −0 referee/environment_files/ft09/0d8bbf25/ft09.py added View file
| @@ -0,0 +1,2520 @@ | ||
| 1 | +# MIT License | |
| 2 | +# | |
| 3 | +# Copyright (c) 2026 ARC Prize Foundation | |
| 4 | +# | |
| 5 | +# Permission is hereby granted, free of charge, to any person obtaining a copy | |
| 6 | +# of this software and associated documentation files (the "Software"), to deal | |
| 7 | +# in the Software without restriction, including without limitation the rights | |
| 8 | +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| 9 | +# copies of the Software, and to permit persons to whom the Software is | |
| 10 | +# furnished to do so, subject to the following conditions: | |
| 11 | +# | |
| 12 | +# The above copyright notice and this permission notice shall be included in all | |
| 13 | +# copies or substantial portions of the Software. | |
| 14 | +# | |
| 15 | +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| 16 | +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| 17 | +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| 18 | +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| 19 | +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| 20 | +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| 21 | +# SOFTWARE. | |
| 22 | + | |
| 23 | +import numpy as np | |
| 24 | +from arcengine import ( | |
| 25 | + ActionInput, | |
| 26 | + ARCBaseGame, | |
| 27 | + Camera, | |
| 28 | + GameAction, | |
| 29 | + Level, | |
| 30 | + RenderableUserDisplay, | |
| 31 | + Sprite, | |
| 32 | +) | |
| 33 | + | |
| 34 | +sprites = { | |
| 35 | + "AcT": Sprite( | |
| 36 | + pixels=[ | |
| 37 | + [12, 12], | |
| 38 | + [12, 12], | |
| 39 | + ], | |
| 40 | + name="AcT", | |
| 41 | + visible=True, | |
| 42 | + collidable=True, | |
| 43 | + ), | |
| 44 | + "aIV": Sprite( | |
| 45 | + pixels=[ | |
| 46 | + [0, 14], | |
| 47 | + [0, 0], | |
| 48 | + ], | |
| 49 | + name="aIV", | |
| 50 | + visible=True, | |
| 51 | + collidable=True, | |
| 52 | + ), | |
| 53 | + "ajm": Sprite( | |
| 54 | + pixels=[ | |
| 55 | + [2, 2, 0], | |
| 56 | + [2, 15, 2], | |
| 57 | + [2, 2, 2], | |
| 58 | + ], | |
| 59 | + name="ajm", | |
| 60 | + visible=True, | |
| 61 | + collidable=True, | |
| 62 | + tags=["bsT"], | |
| 63 | + ), | |
| 64 | + "aPM": Sprite( | |
| 65 | + pixels=[ | |
| 66 | + [3, 3, 3], | |
| 67 | + [3, 11, 0], | |
| 68 | + [3, 0, 2], | |
| 69 | + ], | |
| 70 | + name="aPM", | |
| 71 | + visible=True, | |
| 72 | + collidable=True, | |
| 73 | + tags=["bsT"], | |
| 74 | + ), | |
| 75 | + "APy": Sprite( | |
| 76 | + pixels=[ | |
| 77 | + [2, 0, 0], | |
| 78 | + [0, 8, 2], | |
| 79 | + [2, 0, 2], | |
| 80 | + ], | |
| 81 | + name="APy", | |
| 82 | + visible=True, | |
| 83 | + collidable=True, | |
| 84 | + tags=["bsT"], | |
| 85 | + ), | |
| 86 | + "AQG": Sprite( | |
| 87 | + pixels=[ | |
| 88 | + [0, 3, 3], | |
| 89 | + [2, 15, 3], | |
| 90 | + [0, 2, 0], | |
| 91 | + ], | |
| 92 | + name="AQG", | |
| 93 | + visible=True, | |
| 94 | + collidable=True, | |
| 95 | + tags=["bsT"], | |
| 96 | + ), | |
| 97 | + "aRa": Sprite( | |
| 98 | + pixels=[ | |
| 99 | + [2, 0, 2], | |
| 100 | + [2, 9, 2], | |
| 101 | + [2, 2, 0], | |
| 102 | + ], | |
| 103 | + name="aRa", | |
| 104 | + visible=True, | |
| 105 | + collidable=True, | |
| 106 | + tags=["bsT"], | |
| 107 | + ), | |
| 108 | + "ASc": Sprite( | |
| 109 | + pixels=[ | |
| 110 | + [2, 0, 0], | |
| 111 | + [3, 14, 2], | |
| 112 | + [3, 3, 3], | |
| 113 | + ], | |
| 114 | + name="ASc", | |
| 115 | + visible=True, | |
| 116 | + collidable=False, | |
| 117 | + tags=["bsT"], | |
| 118 | + ), | |
| 119 | + "AzN": Sprite( | |
| 120 | + pixels=[ | |
| 121 | + [15, 15], | |
| 122 | + [15, 15], | |
| 123 | + ], | |
| 124 | + name="AzN", | |
| 125 | + visible=True, | |
| 126 | + collidable=True, | |
| 127 | + ), | |
| 128 | + "Bbi": Sprite( | |
| 129 | + pixels=[ | |
| 130 | + [3, 0, 3], | |
| 131 | + [2, 11, 2], | |
| 132 | + [3, 0, 3], | |
| 133 | + ], | |
| 134 | + name="Bbi", | |
| 135 | + visible=True, | |
| 136 | + collidable=False, | |
| 137 | + tags=["bsT"], | |
| 138 | + ), | |
| 139 | + "bdj": Sprite( | |
| 140 | + pixels=[ | |
| 141 | + [12, 12], | |
| 142 | + [12, 12], | |
| 143 | + ], | |
| 144 | + name="bdj", | |
| 145 | + visible=True, | |
| 146 | + collidable=True, | |
| 147 | + ), | |
| 148 | + "bqV": Sprite( | |
| 149 | + pixels=[ | |
| 150 | + [0, -1, 0, -1, 0], | |
| 151 | + ], | |
| 152 | + name="bqV", | |
| 153 | + visible=True, | |
| 154 | + collidable=True, | |
| 155 | + ), | |
| 156 | + "BvX": Sprite( | |
| 157 | + pixels=[ | |
| 158 | + [2, 0, 2], | |
| 159 | + [3, 14, 0], | |
| 160 | + [3, 3, 3], | |
| 161 | + ], | |
| 162 | + name="BvX", | |
| 163 | + visible=True, | |
| 164 | + collidable=True, | |
| 165 | + tags=["bsT"], | |
| 166 | + ), | |
| 167 | + "bzH": Sprite( | |
| 168 | + pixels=[ | |
| 169 | + [-1, -1, 6, -1, -1], | |
| 170 | + [-1, -1, -1, -1, -1], | |
| 171 | + [6, -1, -1, -1, 6], | |
| 172 | + [-1, -1, -1, -1, -1], | |
| 173 | + [-1, -1, 6, -1, -1], | |
| 174 | + [-1, -1, -1, -1, -1], | |
| 175 | + [6, -1, -1, -1, 6], | |
| 176 | + [-1, -1, -1, -1, -1], | |
| 177 | + [-1, -1, 6, -1, -1], | |
| 178 | + ], | |
| 179 | + name="bzH", | |
| 180 | + visible=True, | |
| 181 | + collidable=True, | |
| 182 | + ), | |
| 183 | + "cgN": Sprite( | |
| 184 | + pixels=[ | |
| 185 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 186 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 187 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 188 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 189 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 190 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 191 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 192 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 193 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 194 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 195 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 196 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 197 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 198 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 199 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 200 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 201 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 202 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 203 | + ], | |
| 204 | + name="cgN", | |
| 205 | + visible=True, | |
| 206 | + collidable=False, | |
| 207 | + layer=-2, | |
| 208 | + ), | |
| 209 | + "ciC": Sprite( | |
| 210 | + pixels=[ | |
| 211 | + [6, 7, 6], | |
| 212 | + [7, 10, 7], | |
| 213 | + [6, 7, 6], | |
| 214 | + ], | |
| 215 | + name="ciC", | |
| 216 | + visible=True, | |
| 217 | + collidable=True, | |
| 218 | + tags=["NTi"], | |
| 219 | + ), | |
| 220 | + "CKH": Sprite( | |
| 221 | + pixels=[ | |
| 222 | + [3, 0, 2], | |
| 223 | + [0, 8, 0], | |
| 224 | + [0, 2, 2], | |
| 225 | + ], | |
| 226 | + name="CKH", | |
| 227 | + visible=True, | |
| 228 | + collidable=True, | |
| 229 | + tags=["bsT"], | |
| 230 | + ), | |
| 231 | + "cWS": Sprite( | |
| 232 | + pixels=[ | |
| 233 | + [2, 2, 2], | |
| 234 | + [0, 9, 0], | |
| 235 | + [0, 2, 0], | |
| 236 | + ], | |
| 237 | + name="cWS", | |
| 238 | + visible=True, | |
| 239 | + collidable=True, | |
| 240 | + tags=["bsT"], | |
| 241 | + ), | |
| 242 | + "dhm": Sprite( | |
| 243 | + pixels=[ | |
| 244 | + [6, 6, 6], | |
| 245 | + [6, 7, 6], | |
| 246 | + [6, 7, 6], | |
| 247 | + ], | |
| 248 | + name="dhm", | |
| 249 | + visible=True, | |
| 250 | + collidable=True, | |
| 251 | + ), | |
| 252 | + "dta": Sprite( | |
| 253 | + pixels=[ | |
| 254 | + [2, 0, 2], | |
| 255 | + [0, 12, 2], | |
| 256 | + [0, 0, 0], | |
| 257 | + ], | |
| 258 | + name="dta", | |
| 259 | + visible=True, | |
| 260 | + collidable=True, | |
| 261 | + tags=["bsT"], | |
| 262 | + ), | |
| 263 | + "dvQ": Sprite( | |
| 264 | + pixels=[ | |
| 265 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 266 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 267 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 268 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 269 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 270 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 271 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 272 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 273 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 274 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 275 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 276 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 277 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 278 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 279 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 280 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 281 | + ], | |
| 282 | + name="dvQ", | |
| 283 | + visible=True, | |
| 284 | + collidable=False, | |
| 285 | + layer=-2, | |
| 286 | + ), | |
| 287 | + "dwp": Sprite( | |
| 288 | + pixels=[ | |
| 289 | + [3, 3, 3], | |
| 290 | + [0, 10, 3], | |
| 291 | + [0, 0, 3], | |
| 292 | + ], | |
| 293 | + name="dwp", | |
| 294 | + visible=True, | |
| 295 | + collidable=True, | |
| 296 | + tags=["bsT"], | |
| 297 | + ), | |
| 298 | + "DYr": Sprite( | |
| 299 | + pixels=[ | |
| 300 | + [2], | |
| 301 | + [2], | |
| 302 | + ], | |
| 303 | + name="DYr", | |
| 304 | + visible=True, | |
| 305 | + collidable=True, | |
| 306 | + ), | |
| 307 | + "EEB": Sprite( | |
| 308 | + pixels=[ | |
| 309 | + [8, 8], | |
| 310 | + [8, 8], | |
| 311 | + [9, 9], | |
| 312 | + [9, 9], | |
| 313 | + ], | |
| 314 | + name="EEB", | |
| 315 | + visible=True, | |
| 316 | + collidable=True, | |
| 317 | + ), | |
| 318 | + "Eev": Sprite( | |
| 319 | + pixels=[ | |
| 320 | + [2, 2, 2], | |
| 321 | + [2, 2, 2], | |
| 322 | + [2, 2, 2], | |
| 323 | + ], | |
| 324 | + name="Eev", | |
| 325 | + visible=True, | |
| 326 | + collidable=True, | |
| 327 | + tags=["bsT"], | |
| 328 | + ), | |
| 329 | + "ejV": Sprite( | |
| 330 | + pixels=[ | |
| 331 | + [8, 8], | |
| 332 | + [8, 8], | |
| 333 | + ], | |
| 334 | + name="ejV", | |
| 335 | + visible=True, | |
| 336 | + collidable=True, | |
| 337 | + ), | |
| 338 | + "EQX": Sprite( | |
| 339 | + pixels=[ | |
| 340 | + [0, 2, 0], | |
| 341 | + [2, 12, 2], | |
| 342 | + [0, 0, 2], | |
| 343 | + ], | |
| 344 | + name="EQX", | |
| 345 | + visible=True, | |
| 346 | + collidable=True, | |
| 347 | + tags=["bsT"], | |
| 348 | + ), | |
| 349 | + "ewB": Sprite( | |
| 350 | + pixels=[ | |
| 351 | + [6, 6, 6], | |
| 352 | + [6, 7, 6], | |
| 353 | + [6, 6, 6], | |
| 354 | + ], | |
| 355 | + name="ewB", | |
| 356 | + visible=True, | |
| 357 | + collidable=True, | |
| 358 | + ), | |
| 359 | + "ewH": Sprite( | |
| 360 | + pixels=[ | |
| 361 | + [6, 7, 6], | |
| 362 | + [7, 7, 7], | |
| 363 | + [6, 7, 6], | |
| 364 | + ], | |
| 365 | + name="ewH", | |
| 366 | + visible=True, | |
| 367 | + collidable=True, | |
| 368 | + ), | |
| 369 | + "Ewx": Sprite( | |
| 370 | + pixels=[ | |
| 371 | + [2, 0, 2], | |
| 372 | + [0, 8, 0], | |
| 373 | + [2, 0, 2], | |
| 374 | + ], | |
| 375 | + name="Ewx", | |
| 376 | + visible=True, | |
| 377 | + collidable=True, | |
| 378 | + tags=["bsT"], | |
| 379 | + ), | |
| 380 | + "fBi": Sprite( | |
| 381 | + pixels=[ | |
| 382 | + [8, 8], | |
| 383 | + [8, 8], | |
| 384 | + [12, 12], | |
| 385 | + [12, 12], | |
| 386 | + ], | |
| 387 | + name="fBi", | |
| 388 | + visible=True, | |
| 389 | + collidable=True, | |
| 390 | + ), | |
| 391 | + "FfJ": Sprite( | |
| 392 | + pixels=[ | |
| 393 | + [3, 0, 0], | |
| 394 | + [3, 12, 0], | |
| 395 | + [3, 0, 2], | |
| 396 | + ], | |
| 397 | + name="FfJ", | |
| 398 | + visible=True, | |
| 399 | + collidable=True, | |
| 400 | + tags=["bsT"], | |
| 401 | + ), | |
| 402 | + "fjN": Sprite( | |
| 403 | + pixels=[ | |
| 404 | + [0, 0, 0], | |
| 405 | + [2, 8, 2], | |
| 406 | + [2, 2, 2], | |
| 407 | + ], | |
| 408 | + name="fjN", | |
| 409 | + visible=True, | |
| 410 | + collidable=True, | |
| 411 | + tags=["bsT"], | |
| 412 | + ), | |
| 413 | + "FLH": Sprite( | |
| 414 | + pixels=[ | |
| 415 | + [2, 2, 2], | |
| 416 | + [0, 15, 3], | |
| 417 | + [3, 3, 3], | |
| 418 | + ], | |
| 419 | + name="FLH", | |
| 420 | + visible=True, | |
| 421 | + collidable=True, | |
| 422 | + tags=["bsT"], | |
| 423 | + ), | |
| 424 | + "fPj": Sprite( | |
| 425 | + pixels=[ | |
| 426 | + [0, 2, 0], | |
| 427 | + [2, 14, 2], | |
| 428 | + [0, 3, 0], | |
| 429 | + ], | |
| 430 | + name="fPj", | |
| 431 | + visible=True, | |
| 432 | + collidable=True, | |
| 433 | + tags=["bsT"], | |
| 434 | + ), | |
| 435 | + "Fpw": Sprite( | |
| 436 | + pixels=[ | |
| 437 | + [6, 7, 6], | |
| 438 | + [7, 7, 7], | |
| 439 | + [6, 7, 6], | |
| 440 | + ], | |
| 441 | + name="Fpw", | |
| 442 | + visible=True, | |
| 443 | + collidable=True, | |
| 444 | + ), | |
| 445 | + "FRs": Sprite( | |
| 446 | + pixels=[ | |
| 447 | + [3, 2, 2], | |
| 448 | + [0, 11, 0], | |
| 449 | + [3, 2, 3], | |
| 450 | + ], | |
| 451 | + name="FRs", | |
| 452 | + visible=True, | |
| 453 | + collidable=True, | |
| 454 | + tags=["bsT"], | |
| 455 | + ), | |
| 456 | + "fsp": Sprite( | |
| 457 | + pixels=[ | |
| 458 | + [7, 7, 6], | |
| 459 | + [7, 10, 7], | |
| 460 | + [6, 7, 7], | |
| 461 | + ], | |
| 462 | + name="fsp", | |
| 463 | + visible=True, | |
| 464 | + collidable=True, | |
| 465 | + tags=["NTi", "gOi"], | |
| 466 | + ), | |
| 467 | + "fTG": Sprite( | |
| 468 | + pixels=[ | |
| 469 | + [6, 6, 6], | |
| 470 | + [7, 6, 7], | |
| 471 | + [6, 6, 6], | |
| 472 | + ], | |
| 473 | + name="fTG", | |
| 474 | + visible=True, | |
| 475 | + collidable=True, | |
| 476 | + ), | |
| 477 | + "FvN": Sprite( | |
| 478 | + pixels=[ | |
| 479 | + [3, 0, 0], | |
| 480 | + [2, 9, 2], | |
| 481 | + [3, 0, 0], | |
| 482 | + ], | |
| 483 | + name="FvN", | |
| 484 | + visible=True, | |
| 485 | + collidable=True, | |
| 486 | + tags=["bsT"], | |
| 487 | + ), | |
| 488 | + "gdG": Sprite( | |
| 489 | + pixels=[ | |
| 490 | + [0, 2, 2], | |
| 491 | + [2, 8, 2], | |
| 492 | + [2, 2, 2], | |
| 493 | + ], | |
| 494 | + name="gdG", | |
| 495 | + visible=True, | |
| 496 | + collidable=True, | |
| 497 | + tags=["bsT"], | |
| 498 | + ), | |
| 499 | + "gFd": Sprite( | |
| 500 | + pixels=[ | |
| 501 | + [14, 14], | |
| 502 | + [14, 14], | |
| 503 | + ], | |
| 504 | + name="gFd", | |
| 505 | + visible=True, | |
| 506 | + collidable=True, | |
| 507 | + ), | |
| 508 | + "guB": Sprite( | |
| 509 | + pixels=[ | |
| 510 | + [3, 2, 3], | |
| 511 | + [0, 11, 0], | |
| 512 | + [3, 2, 3], | |
| 513 | + ], | |
| 514 | + name="guB", | |
| 515 | + visible=True, | |
| 516 | + collidable=True, | |
| 517 | + tags=["bsT"], | |
| 518 | + ), | |
| 519 | + "gYF": Sprite( | |
| 520 | + pixels=[ | |
| 521 | + [12, 12], | |
| 522 | + [12, 12], | |
| 523 | + ], | |
| 524 | + name="gYF", | |
| 525 | + visible=True, | |
| 526 | + collidable=True, | |
| 527 | + ), | |
| 528 | + "GYn": Sprite( | |
| 529 | + pixels=[ | |
| 530 | + [0, 2, 2], | |
| 531 | + [2, 9, 2], | |
| 532 | + [0, 2, 2], | |
| 533 | + ], | |
| 534 | + name="GYn", | |
| 535 | + visible=True, | |
| 536 | + collidable=True, | |
| 537 | + tags=["bsT"], | |
| 538 | + ), | |
| 539 | + "hGV": Sprite( | |
| 540 | + pixels=[ | |
| 541 | + [3, 3, 2], | |
| 542 | + [3, 12, 0], | |
| 543 | + [2, 0, 2], | |
| 544 | + ], | |
| 545 | + name="hGV", | |
| 546 | + visible=True, | |
| 547 | + collidable=True, | |
| 548 | + tags=["bsT"], | |
| 549 | + ), | |
| 550 | + "hIX": Sprite( | |
| 551 | + pixels=[ | |
| 552 | + [0, 0, 0], | |
| 553 | + [3, 14, 0], | |
| 554 | + [3, 3, 3], | |
| 555 | + ], | |
| 556 | + name="hIX", | |
| 557 | + visible=True, | |
| 558 | + collidable=True, | |
| 559 | + tags=["bsT"], | |
| 560 | + ), | |
| 561 | + "Hkx": Sprite( | |
| 562 | + pixels=[ | |
| 563 | + [9, 9, 9], | |
| 564 | + [9, 9, 9], | |
| 565 | + [9, 9, 9], | |
| 566 | + ], | |
| 567 | + name="Hkx", | |
| 568 | + visible=True, | |
| 569 | + collidable=True, | |
| 570 | + tags=["Hkx", "gOi"], | |
| 571 | + ), | |
| 572 | + "htK": Sprite( | |
| 573 | + pixels=[ | |
| 574 | + [8, 8], | |
| 575 | + [8, 8], | |
| 576 | + ], | |
| 577 | + name="htK", | |
| 578 | + visible=True, | |
| 579 | + collidable=True, | |
| 580 | + ), | |
| 581 | + "IFI": Sprite( | |
| 582 | + pixels=[ | |
| 583 | + [3, 2, 0], | |
| 584 | + [3, 15, 2], | |
| 585 | + [3, 2, 0], | |
| 586 | + ], | |
| 587 | + name="IFI", | |
| 588 | + visible=True, | |
| 589 | + collidable=True, | |
| 590 | + tags=["bsT"], | |
| 591 | + ), | |
| 592 | + "ImU": Sprite( | |
| 593 | + pixels=[ | |
| 594 | + [6, 7, 7], | |
| 595 | + [7, 10, 7], | |
| 596 | + [7, 7, 7], | |
| 597 | + ], | |
| 598 | + name="ImU", | |
| 599 | + visible=True, | |
| 600 | + collidable=True, | |
| 601 | + tags=["NTi", "gOi"], | |
| 602 | + ), | |
| 603 | + "iSM": Sprite( | |
| 604 | + pixels=[ | |
| 605 | + [2, 2, 2], | |
| 606 | + [2, 2, 2], | |
| 607 | + [2, 2, 2], | |
| 608 | + ], | |
| 609 | + name="iSM", | |
| 610 | + visible=True, | |
| 611 | + collidable=True, | |
| 612 | + tags=["bsT"], | |
| 613 | + ), | |
| 614 | + "iTO": Sprite( | |
| 615 | + pixels=[ | |
| 616 | + [6, 6, 6], | |
| 617 | + [6, 7, 6], | |
| 618 | + [6, 6, 7], | |
| 619 | + ], | |
| 620 | + name="iTO", | |
| 621 | + visible=True, | |
| 622 | + collidable=True, | |
| 623 | + ), | |
| 624 | + "iVf": Sprite( | |
| 625 | + pixels=[ | |
| 626 | + [3, 3, 3], | |
| 627 | + [3, 9, 2], | |
| 628 | + [3, 0, 2], | |
| 629 | + ], | |
| 630 | + name="iVf", | |
| 631 | + visible=True, | |
| 632 | + collidable=True, | |
| 633 | + tags=["bsT"], | |
| 634 | + ), | |
| 635 | + "jGI": Sprite( | |
| 636 | + pixels=[ | |
| 637 | + [0, 2, 2], | |
| 638 | + [0, 12, 0], | |
| 639 | + [0, 2, 0], | |
| 640 | + ], | |
| 641 | + name="jGI", | |
| 642 | + visible=True, | |
| 643 | + collidable=True, | |
| 644 | + tags=["bsT"], | |
| 645 | + ), | |
| 646 | + "Jir": Sprite( | |
| 647 | + pixels=[ | |
| 648 | + [9, 9], | |
| 649 | + [9, 9], | |
| 650 | + ], | |
| 651 | + name="Jir", | |
| 652 | + visible=True, | |
| 653 | + collidable=True, | |
| 654 | + ), | |
| 655 | + "jqz": Sprite( | |
| 656 | + pixels=[ | |
| 657 | + [2, 0, 0], | |
| 658 | + [3, 12, 2], | |
| 659 | + [3, 3, 3], | |
| 660 | + ], | |
| 661 | + name="jqz", | |
| 662 | + visible=True, | |
| 663 | + collidable=True, | |
| 664 | + tags=["bsT"], | |
| 665 | + ), | |
| 666 | + "jRD": Sprite( | |
| 667 | + pixels=[ | |
| 668 | + [3, 2, 3], | |
| 669 | + [0, 11, 0], | |
| 670 | + [3, 2, 3], | |
| 671 | + ], | |
| 672 | + name="jRD", | |
| 673 | + visible=True, | |
| 674 | + collidable=True, | |
| 675 | + tags=["bsT"], | |
| 676 | + ), | |
| 677 | + "jsT": Sprite( | |
| 678 | + pixels=[ | |
| 679 | + [14, 14], | |
| 680 | + [14, 14], | |
| 681 | + ], | |
| 682 | + name="jsT", | |
| 683 | + visible=True, | |
| 684 | + collidable=True, | |
| 685 | + ), | |
| 686 | + "KBg": Sprite( | |
| 687 | + pixels=[ | |
| 688 | + [2, 2, 3], | |
| 689 | + [0, 8, 0], | |
| 690 | + [2, 2, 3], | |
| 691 | + ], | |
| 692 | + name="KBg", | |
| 693 | + visible=True, | |
| 694 | + collidable=True, | |
| 695 | + tags=["bsT"], | |
| 696 | + ), | |
| 697 | + "kEq": Sprite( | |
| 698 | + pixels=[ | |
| 699 | + [0, 0, 2], | |
| 700 | + [2, 9, 2], | |
| 701 | + [2, 2, 2], | |
| 702 | + ], | |
| 703 | + name="kEq", | |
| 704 | + visible=True, | |
| 705 | + collidable=True, | |
| 706 | + tags=["bsT"], | |
| 707 | + ), | |
| 708 | + "kJY": Sprite( | |
| 709 | + pixels=[ | |
| 710 | + [9, 9], | |
| 711 | + [9, 9], | |
| 712 | + ], | |
| 713 | + name="kJY", | |
| 714 | + visible=True, | |
| 715 | + collidable=True, | |
| 716 | + ), | |
| 717 | + "KOm": Sprite( | |
| 718 | + pixels=[ | |
| 719 | + [2, 0, 3], | |
| 720 | + [0, 9, 3], | |
| 721 | + [2, 0, 3], | |
| 722 | + ], | |
| 723 | + name="KOm", | |
| 724 | + visible=True, | |
| 725 | + collidable=True, | |
| 726 | + tags=["bsT"], | |
| 727 | + ), | |
| 728 | + "KpR": Sprite( | |
| 729 | + pixels=[ | |
| 730 | + [3, 0, 3], | |
| 731 | + [3, 11, 2], | |
| 732 | + [3, 0, 3], | |
| 733 | + ], | |
| 734 | + name="KpR", | |
| 735 | + visible=True, | |
| 736 | + collidable=True, | |
| 737 | + tags=["bsT"], | |
| 738 | + ), | |
| 739 | + "KrW": Sprite( | |
| 740 | + pixels=[ | |
| 741 | + [2, 0, 2], | |
| 742 | + [2, 12, 2], | |
| 743 | + [2, 2, 2], | |
| 744 | + ], | |
| 745 | + name="KrW", | |
| 746 | + visible=True, | |
| 747 | + collidable=True, | |
| 748 | + tags=["bsT"], | |
| 749 | + ), | |
| 750 | + "kUt": Sprite( | |
| 751 | + pixels=[ | |
| 752 | + [9, 9], | |
| 753 | + [9, 9], | |
| 754 | + ], | |
| 755 | + name="kUt", | |
| 756 | + visible=True, | |
| 757 | + collidable=True, | |
| 758 | + ), | |
| 759 | + "kvt": Sprite( | |
| 760 | + pixels=[ | |
| 761 | + [2, 0, 0], | |
| 762 | + [0, 14, 0], | |
| 763 | + [2, 0, 2], | |
| 764 | + ], | |
| 765 | + name="kvt", | |
| 766 | + visible=True, | |
| 767 | + collidable=False, | |
| 768 | + tags=["bsT"], | |
| 769 | + ), | |
| 770 | + "kyg": Sprite( | |
| 771 | + pixels=[ | |
| 772 | + [3, 0, 3], | |
| 773 | + [2, 11, 2], | |
| 774 | + [3, 0, 3], | |
| 775 | + ], | |
| 776 | + name="kyg", | |
| 777 | + visible=True, | |
| 778 | + collidable=False, | |
| 779 | + tags=["bsT"], | |
| 780 | + ), | |
| 781 | + "KYk": Sprite( | |
| 782 | + pixels=[ | |
| 783 | + [0, 0, 0], | |
| 784 | + [0, 12, 2], | |
| 785 | + [2, 0, 2], | |
| 786 | + ], | |
| 787 | + name="KYk", | |
| 788 | + visible=True, | |
| 789 | + collidable=True, | |
| 790 | + tags=["bsT"], | |
| 791 | + ), | |
| 792 | + "LDC": Sprite( | |
| 793 | + pixels=[ | |
| 794 | + [2, 2, 2], | |
| 795 | + [2, 12, 2], | |
| 796 | + [2, 0, 2], | |
| 797 | + ], | |
| 798 | + name="LDC", | |
| 799 | + visible=True, | |
| 800 | + collidable=True, | |
| 801 | + tags=["bsT"], | |
| 802 | + ), | |
| 803 | + "LfP": Sprite( | |
| 804 | + pixels=[ | |
| 805 | + [2, 0, 2], | |
| 806 | + [2, 8, 0], | |
| 807 | + [2, 2, 2], | |
| 808 | + ], | |
| 809 | + name="LfP", | |
| 810 | + visible=True, | |
| 811 | + collidable=True, | |
| 812 | + tags=["bsT"], | |
| 813 | + ), | |
| 814 | + "LgL": Sprite( | |
| 815 | + pixels=[ | |
| 816 | + [12, 12], | |
| 817 | + [12, 12], | |
| 818 | + [9, 9], | |
| 819 | + [9, 9], | |
| 820 | + ], | |
| 821 | + name="LgL", | |
| 822 | + visible=True, | |
| 823 | + collidable=True, | |
| 824 | + ), | |
| 825 | + "LIx": Sprite( | |
| 826 | + pixels=[ | |
| 827 | + [3, 0, 3], | |
| 828 | + [0, 11, 2], | |
| 829 | + [3, 2, 3], | |
| 830 | + ], | |
| 831 | + name="LIx", | |
| 832 | + visible=True, | |
| 833 | + collidable=True, | |
| 834 | + tags=["bsT"], | |
| 835 | + ), | |
| 836 | + "lMN": Sprite( | |
| 837 | + pixels=[ | |
| 838 | + [2, 0, 2], | |
| 839 | + [2, 12, 2], | |
| 840 | + [2, 0, 2], | |
| 841 | + ], | |
| 842 | + name="lMN", | |
| 843 | + visible=True, | |
| 844 | + collidable=True, | |
| 845 | + tags=["bsT"], | |
| 846 | + ), | |
| 847 | + "LRU": Sprite( | |
| 848 | + pixels=[ | |
| 849 | + [15, 15], | |
| 850 | + [15, 15], | |
| 851 | + ], | |
| 852 | + name="LRU", | |
| 853 | + visible=True, | |
| 854 | + collidable=True, | |
| 855 | + ), | |
| 856 | + "Lua": Sprite( | |
| 857 | + pixels=[ | |
| 858 | + [0, 0, 3], | |
| 859 | + [2, 14, 3], | |
| 860 | + [0, 2, 3], | |
| 861 | + ], | |
| 862 | + name="Lua", | |
| 863 | + visible=True, | |
| 864 | + collidable=True, | |
| 865 | + tags=["bsT"], | |
| 866 | + ), | |
| 867 | + "lVU": Sprite( | |
| 868 | + pixels=[ | |
| 869 | + [0, -1, 0, -1, 0], | |
| 870 | + ], | |
| 871 | + name="lVU", | |
| 872 | + visible=True, | |
| 873 | + collidable=True, | |
| 874 | + ), | |
| 875 | + "Lzf": Sprite( | |
| 876 | + pixels=[ | |
| 877 | + [2, 2, 0], | |
| 878 | + [2, 9, 2], | |
| 879 | + [2, 2, 2], | |
| 880 | + ], | |
| 881 | + name="Lzf", | |
| 882 | + visible=True, | |
| 883 | + collidable=True, | |
| 884 | + tags=["bsT"], | |
| 885 | + ), | |
| 886 | + "MEF": Sprite( | |
| 887 | + pixels=[ | |
| 888 | + [2, 0, 2], | |
| 889 | + [0, 8, 0], | |
| 890 | + [2, 0, 2], | |
| 891 | + ], | |
| 892 | + name="MEF", | |
| 893 | + visible=True, | |
| 894 | + collidable=True, | |
| 895 | + ), | |
| 896 | + "mnE": Sprite( | |
| 897 | + pixels=[ | |
| 898 | + [3, 3, 3], | |
| 899 | + [3, 12, 0], | |
| 900 | + [2, 2, 3], | |
| 901 | + ], | |
| 902 | + name="mnE", | |
| 903 | + visible=True, | |
| 904 | + collidable=True, | |
| 905 | + tags=["bsT"], | |
| 906 | + ), | |
| 907 | + "mrc": Sprite( | |
| 908 | + pixels=[ | |
| 909 | + [2, 0, 2], | |
| 910 | + [2, 9, 2], | |
| 911 | + [2, 2, 2], | |
| 912 | + ], | |
| 913 | + name="mrc", | |
| 914 | + visible=True, | |
| 915 | + collidable=True, | |
| 916 | + tags=["bsT"], | |
| 917 | + ), | |
| 918 | + "mTg": Sprite( | |
| 919 | + pixels=[ | |
| 920 | + [2, 0, 0], | |
| 921 | + [2, 9, 2], | |
| 922 | + [2, 2, 2], | |
| 923 | + ], | |
| 924 | + name="mTg", | |
| 925 | + visible=True, | |
| 926 | + collidable=True, | |
| 927 | + tags=["bsT"], | |
| 928 | + ), | |
| 929 | + "MTx": Sprite( | |
| 930 | + pixels=[ | |
| 931 | + [8, 8], | |
| 932 | + [8, 8], | |
| 933 | + ], | |
| 934 | + name="MTx", | |
| 935 | + visible=True, | |
| 936 | + collidable=True, | |
| 937 | + ), | |
| 938 | + "ndN": Sprite( | |
| 939 | + pixels=[ | |
| 940 | + [2, 0, 2], | |
| 941 | + [0, 8, 0], | |
| 942 | + [2, 2, 2], | |
| 943 | + ], | |
| 944 | + name="ndN", | |
| 945 | + visible=True, | |
| 946 | + collidable=True, | |
| 947 | + tags=["bsT"], | |
| 948 | + ), | |
| 949 | + "NGA": Sprite( | |
| 950 | + pixels=[ | |
| 951 | + [3, 3, 3], | |
| 952 | + [3, 15, 0], | |
| 953 | + [2, 2, 0], | |
| 954 | + ], | |
| 955 | + name="NGA", | |
| 956 | + visible=True, | |
| 957 | + collidable=True, | |
| 958 | + tags=["bsT"], | |
| 959 | + ), | |
| 960 | + "nGy": Sprite( | |
| 961 | + pixels=[ | |
| 962 | + [12, 12], | |
| 963 | + [12, 12], | |
| 964 | + [8, 8], | |
| 965 | + [8, 8], | |
| 966 | + ], | |
| 967 | + name="nGy", | |
| 968 | + visible=True, | |
| 969 | + collidable=True, | |
| 970 | + ), | |
| 971 | + "nkM": Sprite( | |
| 972 | + pixels=[ | |
| 973 | + [3, 2, 3], | |
| 974 | + [2, 11, 2], | |
| 975 | + [3, 2, 3], | |
| 976 | + ], | |
| 977 | + name="nkM", | |
| 978 | + visible=True, | |
| 979 | + collidable=True, | |
| 980 | + tags=["bsT"], | |
| 981 | + ), | |
| 982 | + "Nod": Sprite( | |
| 983 | + pixels=[ | |
| 984 | + [2], | |
| 985 | + ], | |
| 986 | + name="Nod", | |
| 987 | + visible=True, | |
| 988 | + collidable=True, | |
| 989 | + ), | |
| 990 | + "NTi": Sprite( | |
| 991 | + pixels=[ | |
| 992 | + [7, 6, 7], | |
| 993 | + [6, 10, 6], | |
| 994 | + [7, 6, 7], | |
| 995 | + ], | |
| 996 | + name="NTi", | |
| 997 | + visible=True, | |
| 998 | + collidable=True, | |
| 999 | + tags=["NTi", "gOi"], | |
| 1000 | + ), | |
| 1001 | + "Nul": Sprite( | |
| 1002 | + pixels=[ | |
| 1003 | + [3, 3, 3], | |
| 1004 | + [3, 14, 0], | |
| 1005 | + [3, 0, 2], | |
| 1006 | + ], | |
| 1007 | + name="Nul", | |
| 1008 | + visible=True, | |
| 1009 | + collidable=True, | |
| 1010 | + tags=["bsT"], | |
| 1011 | + ), | |
| 1012 | + "OFC": Sprite( | |
| 1013 | + pixels=[ | |
| 1014 | + [12, 12], | |
| 1015 | + [12, 12], | |
| 1016 | + ], | |
| 1017 | + name="OFC", | |
| 1018 | + visible=True, | |
| 1019 | + collidable=True, | |
| 1020 | + ), | |
| 1021 | + "oif": Sprite( | |
| 1022 | + pixels=[ | |
| 1023 | + [0, 0, 0], | |
| 1024 | + [3, 10, 3], | |
| 1025 | + [3, 3, 3], | |
| 1026 | + ], | |
| 1027 | + name="oif", | |
| 1028 | + visible=True, | |
| 1029 | + collidable=True, | |
| 1030 | + tags=["bsT"], | |
| 1031 | + ), | |
| 1032 | + "OqR": Sprite( | |
| 1033 | + pixels=[ | |
| 1034 | + [2, 0, 3], | |
| 1035 | + [0, 8, 3], | |
| 1036 | + [2, 0, 3], | |
| 1037 | + ], | |
| 1038 | + name="OqR", | |
| 1039 | + visible=True, | |
| 1040 | + collidable=True, | |
| 1041 | + tags=["bsT"], | |
| 1042 | + ), | |
| 1043 | + "OZL": Sprite( | |
| 1044 | + pixels=[ | |
| 1045 | + [0, 2, 0], | |
| 1046 | + [2, 12, 2], | |
| 1047 | + [0, 2, 0], | |
| 1048 | + ], | |
| 1049 | + name="OZL", | |
| 1050 | + visible=True, | |
| 1051 | + collidable=True, | |
| 1052 | + tags=["bsT"], | |
| 1053 | + ), | |
| 1054 | + "PjS": Sprite( | |
| 1055 | + pixels=[ | |
| 1056 | + [2, 0, 2], | |
| 1057 | + [0, 14, 0], | |
| 1058 | + [0, 0, 2], | |
| 1059 | + ], | |
| 1060 | + name="PjS", | |
| 1061 | + visible=True, | |
| 1062 | + collidable=False, | |
| 1063 | + tags=["bsT"], | |
| 1064 | + ), | |
| 1065 | + "PmE": Sprite( | |
| 1066 | + pixels=[ | |
| 1067 | + [2, 0, 3], | |
| 1068 | + [0, 14, 3], | |
| 1069 | + [3, 3, 3], | |
| 1070 | + ], | |
| 1071 | + name="PmE", | |
| 1072 | + visible=True, | |
| 1073 | + collidable=True, | |
| 1074 | + tags=["bsT"], | |
| 1075 | + ), | |
| 1076 | + "PrU": Sprite( | |
| 1077 | + pixels=[ | |
| 1078 | + [8, 8], | |
| 1079 | + [8, 8], | |
| 1080 | + ], | |
| 1081 | + name="PrU", | |
| 1082 | + visible=True, | |
| 1083 | + collidable=True, | |
| 1084 | + ), | |
| 1085 | + "PRx": Sprite( | |
| 1086 | + pixels=[ | |
| 1087 | + [0, 0, 0], | |
| 1088 | + [0, -1, 0], | |
| 1089 | + [0, 0, 0], | |
| 1090 | + ], | |
| 1091 | + name="PRx", | |
| 1092 | + visible=True, | |
| 1093 | + collidable=True, | |
| 1094 | + tags=["bsT"], | |
| 1095 | + ), | |
| 1096 | + "pvc": Sprite( | |
| 1097 | + pixels=[ | |
| 1098 | + [0, 0, 0], | |
| 1099 | + [0, 8, 0], | |
| 1100 | + [0, 0, 0], | |
| 1101 | + ], | |
| 1102 | + name="pvc", | |
| 1103 | + visible=True, | |
| 1104 | + collidable=True, | |
| 1105 | + tags=["bsT"], | |
| 1106 | + ), | |
| 1107 | + "QBc": Sprite( | |
| 1108 | + pixels=[ | |
| 1109 | + [0, 2, 2], | |
| 1110 | + [2, 9, 2], | |
| 1111 | + [0, 0, 2], | |
| 1112 | + ], | |
| 1113 | + name="QBc", | |
| 1114 | + visible=True, | |
| 1115 | + collidable=True, | |
| 1116 | + tags=["bsT"], | |
| 1117 | + ), | |
| 1118 | + "QpB": Sprite( | |
| 1119 | + pixels=[ | |
| 1120 | + [9, 9], | |
| 1121 | + [9, 9], | |
| 1122 | + ], | |
| 1123 | + name="QpB", | |
| 1124 | + visible=True, | |
| 1125 | + collidable=True, | |
| 1126 | + ), | |
| 1127 | + "qpe": Sprite( | |
| 1128 | + pixels=[ | |
| 1129 | + [9, 9], | |
| 1130 | + [9, 9], | |
| 1131 | + ], | |
| 1132 | + name="qpe", | |
| 1133 | + visible=True, | |
| 1134 | + collidable=True, | |
| 1135 | + ), | |
| 1136 | + "qqM": Sprite( | |
| 1137 | + pixels=[ | |
| 1138 | + [2, 3, 2], | |
| 1139 | + [0, 14, 0], | |
| 1140 | + [2, 0, 2], | |
| 1141 | + ], | |
| 1142 | + name="qqM", | |
| 1143 | + visible=True, | |
| 1144 | + collidable=True, | |
| 1145 | + tags=["bsT"], | |
| 1146 | + ), | |
| 1147 | + "qqX": Sprite( | |
| 1148 | + pixels=[ | |
| 1149 | + [0, 2, 2], | |
| 1150 | + [0, 8, 0], | |
| 1151 | + [2, 2, 0], | |
| 1152 | + ], | |
| 1153 | + name="qqX", | |
| 1154 | + visible=True, | |
| 1155 | + collidable=True, | |
| 1156 | + ), | |
| 1157 | + "RBv": Sprite( | |
| 1158 | + pixels=[ | |
| 1159 | + [0, 0, 2], | |
| 1160 | + [0, 14, 0], | |
| 1161 | + [3, 3, 3], | |
| 1162 | + ], | |
| 1163 | + name="RBv", | |
| 1164 | + visible=True, | |
| 1165 | + collidable=True, | |
| 1166 | + tags=["bsT"], | |
| 1167 | + ), | |
| 1168 | + "REY": Sprite( | |
| 1169 | + pixels=[ | |
| 1170 | + [10, 10], | |
| 1171 | + [10, 10], | |
| 1172 | + ], | |
| 1173 | + name="REY", | |
| 1174 | + visible=True, | |
| 1175 | + collidable=True, | |
| 1176 | + ), | |
| 1177 | + "RjR": Sprite( | |
| 1178 | + pixels=[ | |
| 1179 | + [2, 0, 2], | |
| 1180 | + [0, 9, 2], | |
| 1181 | + [0, 2, 0], | |
| 1182 | + ], | |
| 1183 | + name="RjR", | |
| 1184 | + visible=True, | |
| 1185 | + collidable=True, | |
| 1186 | + tags=["bsT"], | |
| 1187 | + ), | |
| 1188 | + "rKF": Sprite( | |
| 1189 | + pixels=[ | |
| 1190 | + [2, 0, 2], | |
| 1191 | + [2, 8, 2], | |
| 1192 | + [2, 2, 2], | |
| 1193 | + ], | |
| 1194 | + name="rKF", | |
| 1195 | + visible=True, | |
| 1196 | + collidable=True, | |
| 1197 | + tags=["bsT"], | |
| 1198 | + ), | |
| 1199 | + "rni": Sprite( | |
| 1200 | + pixels=[ | |
| 1201 | + [-1, -1, -1, -1, 15, -1, -1, -1, 10, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1202 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1203 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1204 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1205 | + [10, -1, -1, -1, 14, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1206 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1207 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1208 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1209 | + [15, -1, -1, -1, 10, -1, -1, -1, 14, -1, -1, -1, 15, -1, -1, -1, -1], | |
| 1210 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1211 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1212 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1213 | + [-1, -1, -1, -1, 15, -1, -1, -1, 10, -1, -1, -1, 14, -1, -1, -1, -1], | |
| 1214 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1215 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1216 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1217 | + [-1, -1, -1, -1, 14, -1, -1, -1, 15, -1, -1, -1, 10, -1, -1, -1, 14], | |
| 1218 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1219 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1220 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1221 | + [-1, -1, -1, -1, -1, -1, -1, -1, 14, -1, -1, -1, 15, -1, -1, -1, 10], | |
| 1222 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1223 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1224 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1225 | + [-1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, -1, 14, -1, -1, -1, -1], | |
| 1226 | + ], | |
| 1227 | + name="rni", | |
| 1228 | + visible=True, | |
| 1229 | + collidable=True, | |
| 1230 | + ), | |
| 1231 | + "ROc": Sprite( | |
| 1232 | + pixels=[ | |
| 1233 | + [3, 0, 2], | |
| 1234 | + [3, 9, 0], | |
| 1235 | + [3, 3, 3], | |
| 1236 | + ], | |
| 1237 | + name="ROc", | |
| 1238 | + visible=True, | |
| 1239 | + collidable=True, | |
| 1240 | + tags=["bsT"], | |
| 1241 | + ), | |
| 1242 | + "RZR": Sprite( | |
| 1243 | + pixels=[ | |
| 1244 | + [2], | |
| 1245 | + ], | |
| 1246 | + name="RZR", | |
| 1247 | + visible=True, | |
| 1248 | + collidable=True, | |
| 1249 | + ), | |
| 1250 | + "seE": Sprite( | |
| 1251 | + pixels=[ | |
| 1252 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5], | |
| 1253 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5], | |
| 1254 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5], | |
| 1255 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5], | |
| 1256 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5], | |
| 1257 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5], | |
| 1258 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5], | |
| 1259 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5], | |
| 1260 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5], | |
| 1261 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5], | |
| 1262 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5], | |
| 1263 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5], | |
| 1264 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5], | |
| 1265 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5], | |
| 1266 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5], | |
| 1267 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 1268 | + ], | |
| 1269 | + name="seE", | |
| 1270 | + visible=True, | |
| 1271 | + collidable=False, | |
| 1272 | + ), | |
| 1273 | + "SfD": Sprite( | |
| 1274 | + pixels=[ | |
| 1275 | + [2, 0, 3], | |
| 1276 | + [0, 14, 3], | |
| 1277 | + [2, 0, 3], | |
| 1278 | + ], | |
| 1279 | + name="SfD", | |
| 1280 | + visible=True, | |
| 1281 | + collidable=True, | |
| 1282 | + tags=["bsT"], | |
| 1283 | + ), | |
| 1284 | + "SJP": Sprite( | |
| 1285 | + pixels=[ | |
| 1286 | + [0, 2, 0], | |
| 1287 | + [0, 8, 2], | |
| 1288 | + [2, 0, 2], | |
| 1289 | + ], | |
| 1290 | + name="SJP", | |
| 1291 | + visible=True, | |
| 1292 | + collidable=True, | |
| 1293 | + tags=["bsT"], | |
| 1294 | + ), | |
| 1295 | + "sPz": Sprite( | |
| 1296 | + pixels=[ | |
| 1297 | + [0, 0, 2], | |
| 1298 | + [2, 8, 2], | |
| 1299 | + [2, 2, 2], | |
| 1300 | + ], | |
| 1301 | + name="sPz", | |
| 1302 | + visible=True, | |
| 1303 | + collidable=True, | |
| 1304 | + tags=["bsT"], | |
| 1305 | + ), | |
| 1306 | + "srH": Sprite( | |
| 1307 | + pixels=[ | |
| 1308 | + [3, 0, 3], | |
| 1309 | + [0, 11, 2], | |
| 1310 | + [3, 2, 3], | |
| 1311 | + ], | |
| 1312 | + name="srH", | |
| 1313 | + visible=True, | |
| 1314 | + collidable=True, | |
| 1315 | + tags=["bsT"], | |
| 1316 | + ), | |
| 1317 | + "ssK": Sprite( | |
| 1318 | + pixels=[ | |
| 1319 | + [3, 3, 3], | |
| 1320 | + [2, 14, 3], | |
| 1321 | + [0, 0, 2], | |
| 1322 | + ], | |
| 1323 | + name="ssK", | |
| 1324 | + visible=True, | |
| 1325 | + collidable=False, | |
| 1326 | + tags=["bsT"], | |
| 1327 | + ), | |
| 1328 | + "sTI": Sprite( | |
| 1329 | + pixels=[ | |
| 1330 | + [2, 2, 2], | |
| 1331 | + [2, 9, 0], | |
| 1332 | + [2, 2, 2], | |
| 1333 | + ], | |
| 1334 | + name="sTI", | |
| 1335 | + visible=True, | |
| 1336 | + collidable=True, | |
| 1337 | + ), | |
| 1338 | + "sxj": Sprite( | |
| 1339 | + pixels=[ | |
| 1340 | + [2, 0, 2], | |
| 1341 | + [0, 8, 2], | |
| 1342 | + [2, 0, 0], | |
| 1343 | + ], | |
| 1344 | + name="sxj", | |
| 1345 | + visible=True, | |
| 1346 | + collidable=True, | |
| 1347 | + ), | |
| 1348 | + "SXM": Sprite( | |
| 1349 | + pixels=[ | |
| 1350 | + [2, 0, 2], | |
| 1351 | + [2, 8, 0], | |
| 1352 | + [0, 0, 2], | |
| 1353 | + ], | |
| 1354 | + name="SXM", | |
| 1355 | + visible=True, | |
| 1356 | + collidable=True, | |
| 1357 | + tags=["bsT"], | |
| 1358 | + ), | |
| 1359 | + "tCT": Sprite( | |
| 1360 | + pixels=[ | |
| 1361 | + [2, 0, 2], | |
| 1362 | + [0, 9, 2], | |
| 1363 | + [2, 2, 2], | |
| 1364 | + ], | |
| 1365 | + name="tCT", | |
| 1366 | + visible=True, | |
| 1367 | + collidable=True, | |
| 1368 | + tags=["bsT"], | |
| 1369 | + ), | |
| 1370 | + "TOK": Sprite( | |
| 1371 | + pixels=[ | |
| 1372 | + [9, 9, 9, -1, 8, 8, 8, -1, 9, 9, 9], | |
| 1373 | + [9, 9, 9, -1, 8, 8, 8, -1, 9, 9, 9], | |
| 1374 | + [9, 9, 9, -1, 8, 8, 8, -1, 9, 9, 9], | |
| 1375 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1376 | + [8, 8, 8, -1, -1, -1, -1, -1, 8, 8, 8], | |
| 1377 | + [8, 8, 8, -1, -1, -1, -1, -1, 8, 8, 8], | |
| 1378 | + [8, 8, 8, -1, -1, -1, -1, -1, 8, 8, 8], | |
| 1379 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1380 | + [9, 9, 9, -1, 8, 8, 8, -1, 9, 9, 9], | |
| 1381 | + [9, 9, 9, -1, 8, 8, 8, -1, 9, 9, 9], | |
| 1382 | + [9, 9, 9, -1, 8, 8, 8, -1, 9, 9, 9], | |
| 1383 | + ], | |
| 1384 | + name="TOK", | |
| 1385 | + visible=True, | |
| 1386 | + collidable=False, | |
| 1387 | + ), | |
| 1388 | + "TqS": Sprite( | |
| 1389 | + pixels=[ | |
| 1390 | + [2, -1, 2], | |
| 1391 | + ], | |
| 1392 | + name="TqS", | |
| 1393 | + visible=True, | |
| 1394 | + collidable=True, | |
| 1395 | + ), | |
| 1396 | + "TqV": Sprite( | |
| 1397 | + pixels=[ | |
| 1398 | + [0, 2, 2], | |
| 1399 | + [0, 8, 2], | |
| 1400 | + [2, 2, 2], | |
| 1401 | + ], | |
| 1402 | + name="TqV", | |
| 1403 | + visible=True, | |
| 1404 | + collidable=True, | |
| 1405 | + tags=["bsT"], | |
| 1406 | + ), | |
| 1407 | + "TuS": Sprite( | |
| 1408 | + pixels=[ | |
| 1409 | + [3, 3, 3], | |
| 1410 | + [0, 14, 2], | |
| 1411 | + [0, 0, 0], | |
| 1412 | + ], | |
| 1413 | + name="TuS", | |
| 1414 | + visible=True, | |
| 1415 | + collidable=True, | |
| 1416 | + tags=["bsT"], | |
| 1417 | + ), | |
| 1418 | + "uaD": Sprite( | |
| 1419 | + pixels=[ | |
| 1420 | + [3, 0, 3], | |
| 1421 | + [0, 11, 2], | |
| 1422 | + [3, 2, 3], | |
| 1423 | + ], | |
| 1424 | + name="uaD", | |
| 1425 | + visible=True, | |
| 1426 | + collidable=True, | |
| 1427 | + tags=["bsT"], | |
| 1428 | + ), | |
| 1429 | + "UaS": Sprite( | |
| 1430 | + pixels=[ | |
| 1431 | + [2, 2, 0], | |
| 1432 | + [2, 9, 2], | |
| 1433 | + [2, 0, 0], | |
| 1434 | + ], | |
| 1435 | + name="UaS", | |
| 1436 | + visible=True, | |
| 1437 | + collidable=True, | |
| 1438 | + tags=["bsT"], | |
| 1439 | + ), | |
| 1440 | + "uCD": Sprite( | |
| 1441 | + pixels=[ | |
| 1442 | + [6], | |
| 1443 | + ], | |
| 1444 | + name="uCD", | |
| 1445 | + visible=True, | |
| 1446 | + collidable=True, | |
| 1447 | + ), | |
| 1448 | + "uCe": Sprite( | |
| 1449 | + pixels=[ | |
| 1450 | + [0, 2, 2], | |
| 1451 | + [2, 12, 2], | |
| 1452 | + [0, 0, 0], | |
| 1453 | + ], | |
| 1454 | + name="uCe", | |
| 1455 | + visible=True, | |
| 1456 | + collidable=True, | |
| 1457 | + tags=["bsT"], | |
| 1458 | + ), | |
| 1459 | + "uDP": Sprite( | |
| 1460 | + pixels=[ | |
| 1461 | + [2, 2, 2], | |
| 1462 | + [2, 9, 2], | |
| 1463 | + [0, 2, 2], | |
| 1464 | + ], | |
| 1465 | + name="uDP", | |
| 1466 | + visible=True, | |
| 1467 | + collidable=True, | |
| 1468 | + tags=["bsT"], | |
| 1469 | + ), | |
| 1470 | + "uds": Sprite( | |
| 1471 | + pixels=[ | |
| 1472 | + [2, 0, 2], | |
| 1473 | + [2, 12, 0], | |
| 1474 | + [2, 0, 2], | |
| 1475 | + ], | |
| 1476 | + name="uds", | |
| 1477 | + visible=True, | |
| 1478 | + collidable=True, | |
| 1479 | + tags=["bsT"], | |
| 1480 | + ), | |
| 1481 | + "UdT": Sprite( | |
| 1482 | + pixels=[ | |
| 1483 | + [2, 2, 0], | |
| 1484 | + [2, 8, 2], | |
| 1485 | + [0, 0, 2], | |
| 1486 | + ], | |
| 1487 | + name="UdT", | |
| 1488 | + visible=True, | |
| 1489 | + collidable=True, | |
| 1490 | + tags=["bsT"], | |
| 1491 | + ), | |
| 1492 | + "UEq": Sprite( | |
| 1493 | + pixels=[ | |
| 1494 | + [2, 2, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 2, 2], | |
| 1495 | + [2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2], | |
| 1496 | + [2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2], | |
| 1497 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1498 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1499 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1500 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1501 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1502 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1503 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1504 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1505 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1506 | + [2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2], | |
| 1507 | + [2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2], | |
| 1508 | + [2, 2, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 2, 2], | |
| 1509 | + ], | |
| 1510 | + name="UEq", | |
| 1511 | + visible=True, | |
| 1512 | + collidable=False, | |
| 1513 | + tags=["Ycb"], | |
| 1514 | + ), | |
| 1515 | + "UEt": Sprite( | |
| 1516 | + pixels=[ | |
| 1517 | + [7, 7, 7], | |
| 1518 | + [6, 7, 6], | |
| 1519 | + [6, 6, 6], | |
| 1520 | + ], | |
| 1521 | + name="UEt", | |
| 1522 | + visible=True, | |
| 1523 | + collidable=True, | |
| 1524 | + ), | |
| 1525 | + "uJY": Sprite( | |
| 1526 | + pixels=[ | |
| 1527 | + [5], | |
| 1528 | + ], | |
| 1529 | + name="uJY", | |
| 1530 | + visible=True, | |
| 1531 | + collidable=True, | |
| 1532 | + ), | |
| 1533 | + "ukF": Sprite( | |
| 1534 | + pixels=[ | |
| 1535 | + [3, 0, 2], | |
| 1536 | + [2, 12, 0], | |
| 1537 | + [2, 2, 0], | |
| 1538 | + ], | |
| 1539 | + name="ukF", | |
| 1540 | + visible=True, | |
| 1541 | + collidable=True, | |
| 1542 | + tags=["bsT"], | |
| 1543 | + ), | |
| 1544 | + "ukY": Sprite( | |
| 1545 | + pixels=[ | |
| 1546 | + [3, 2, 3], | |
| 1547 | + [0, 11, 0], | |
| 1548 | + [3, 2, 3], | |
| 1549 | + ], | |
| 1550 | + name="ukY", | |
| 1551 | + visible=True, | |
| 1552 | + collidable=False, | |
| 1553 | + tags=["bsT"], | |
| 1554 | + ), | |
| 1555 | + "UmB": Sprite( | |
| 1556 | + pixels=[ | |
| 1557 | + [6, -1, 6], | |
| 1558 | + ], | |
| 1559 | + name="UmB", | |
| 1560 | + visible=True, | |
| 1561 | + collidable=True, | |
| 1562 | + ), | |
| 1563 | + "uPr": Sprite( | |
| 1564 | + pixels=[ | |
| 1565 | + [11], | |
| 1566 | + ], | |
| 1567 | + name="uPr", | |
| 1568 | + visible=True, | |
| 1569 | + collidable=True, | |
| 1570 | + ), | |
| 1571 | + "UQj": Sprite( | |
| 1572 | + pixels=[ | |
| 1573 | + [2, 2, 2], | |
| 1574 | + [0, 8, 2], | |
| 1575 | + [2, 0, 2], | |
| 1576 | + ], | |
| 1577 | + name="UQj", | |
| 1578 | + visible=True, | |
| 1579 | + collidable=True, | |
| 1580 | + tags=["bsT"], | |
| 1581 | + ), | |
| 1582 | + "UsM": Sprite( | |
| 1583 | + pixels=[ | |
| 1584 | + [0], | |
| 1585 | + ], | |
| 1586 | + name="UsM", | |
| 1587 | + visible=True, | |
| 1588 | + collidable=True, | |
| 1589 | + ), | |
| 1590 | + "UTh": Sprite( | |
| 1591 | + pixels=[ | |
| 1592 | + [2, 2, 2], | |
| 1593 | + [2, 8, 0], | |
| 1594 | + [2, 2, 0], | |
| 1595 | + ], | |
| 1596 | + name="UTh", | |
| 1597 | + visible=True, | |
| 1598 | + collidable=True, | |
| 1599 | + tags=["bsT"], | |
| 1600 | + ), | |
| 1601 | + "uvy": Sprite( | |
| 1602 | + pixels=[ | |
| 1603 | + [2, 2, 2], | |
| 1604 | + [2, 2, 2], | |
| 1605 | + [2, 2, 2], | |
| 1606 | + ], | |
| 1607 | + name="uvy", | |
| 1608 | + visible=True, | |
| 1609 | + collidable=True, | |
| 1610 | + tags=["bsT"], | |
| 1611 | + ), | |
| 1612 | + "Uxp": Sprite( | |
| 1613 | + pixels=[ | |
| 1614 | + [2, 2, 2], | |
| 1615 | + [2, 8, 2], | |
| 1616 | + [0, 2, 2], | |
| 1617 | + ], | |
| 1618 | + name="Uxp", | |
| 1619 | + visible=True, | |
| 1620 | + collidable=True, | |
| 1621 | + tags=["bsT"], | |
| 1622 | + ), | |
| 1623 | + "vAD": Sprite( | |
| 1624 | + pixels=[ | |
| 1625 | + [-1, -1, 6, -1, -1], | |
| 1626 | + [-1, -1, -1, -1, -1], | |
| 1627 | + [6, -1, -1, -1, 6], | |
| 1628 | + [-1, -1, -1, -1, -1], | |
| 1629 | + [-1, -1, 6, -1, -1], | |
| 1630 | + ], | |
| 1631 | + name="vAD", | |
| 1632 | + visible=True, | |
| 1633 | + collidable=True, | |
| 1634 | + ), | |
| 1635 | + "van": Sprite( | |
| 1636 | + pixels=[ | |
| 1637 | + [2, 2, 2], | |
| 1638 | + [2, 2, 2], | |
| 1639 | + [2, 2, 2], | |
| 1640 | + ], | |
| 1641 | + name="van", | |
| 1642 | + visible=True, | |
| 1643 | + collidable=True, | |
| 1644 | + tags=["bsT"], | |
| 1645 | + ), | |
| 1646 | + "VdJ": Sprite( | |
| 1647 | + pixels=[ | |
| 1648 | + [2, 2, 2], | |
| 1649 | + [0, 9, 2], | |
| 1650 | + [2, 2, 0], | |
| 1651 | + ], | |
| 1652 | + name="VdJ", | |
| 1653 | + visible=True, | |
| 1654 | + collidable=True, | |
| 1655 | + ), | |
| 1656 | + "vFj": Sprite( | |
| 1657 | + pixels=[ | |
| 1658 | + [2, 0, 2], | |
| 1659 | + [2, 8, 2], | |
| 1660 | + [0, 2, 2], | |
| 1661 | + ], | |
| 1662 | + name="vFj", | |
| 1663 | + visible=True, | |
| 1664 | + collidable=True, | |
| 1665 | + tags=["bsT"], | |
| 1666 | + ), | |
| 1667 | + "VHA": Sprite( | |
| 1668 | + pixels=[ | |
| 1669 | + [11, 11], | |
| 1670 | + [11, 11], | |
| 1671 | + ], | |
| 1672 | + name="VHA", | |
| 1673 | + visible=True, | |
| 1674 | + collidable=True, | |
| 1675 | + ), | |
| 1676 | + "viw": Sprite( | |
| 1677 | + pixels=[ | |
| 1678 | + [12, 12], | |
| 1679 | + [12, 12], | |
| 1680 | + ], | |
| 1681 | + name="viw", | |
| 1682 | + visible=True, | |
| 1683 | + collidable=True, | |
| 1684 | + ), | |
| 1685 | + "vSD": Sprite( | |
| 1686 | + pixels=[ | |
| 1687 | + [2, 2, 2], | |
| 1688 | + [2, 8, 0], | |
| 1689 | + [0, 2, 0], | |
| 1690 | + ], | |
| 1691 | + name="vSD", | |
| 1692 | + visible=True, | |
| 1693 | + collidable=True, | |
| 1694 | + tags=["bsT"], | |
| 1695 | + ), | |
| 1696 | + "Vuk": Sprite( | |
| 1697 | + pixels=[ | |
| 1698 | + [7, 7, 6], | |
| 1699 | + [7, 10, 7], | |
| 1700 | + [7, 7, 7], | |
| 1701 | + ], | |
| 1702 | + name="Vuk", | |
| 1703 | + visible=True, | |
| 1704 | + collidable=True, | |
| 1705 | + tags=["NTi", "gOi"], | |
| 1706 | + ), | |
| 1707 | + "vxk": Sprite( | |
| 1708 | + pixels=[ | |
| 1709 | + [8, 8, 8, -1, 9, 9, 9, -1, 9, 9, 9], | |
| 1710 | + [8, 8, 8, -1, 9, 9, 9, -1, 9, 9, 9], | |
| 1711 | + [8, 8, 8, -1, 9, 9, 9, -1, 9, 9, 9], | |
| 1712 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1713 | + [8, 8, 8, -1, -1, -1, -1, -1, 8, 8, 8], | |
| 1714 | + [8, 8, 8, -1, -1, -1, -1, -1, 8, 8, 8], | |
| 1715 | + [8, 8, 8, -1, -1, -1, -1, -1, 8, 8, 8], | |
| 1716 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1717 | + [9, 9, 9, -1, 9, 9, 9, -1, 8, 8, 8], | |
| 1718 | + [9, 9, 9, -1, 9, 9, 9, -1, 8, 8, 8], | |
| 1719 | + [9, 9, 9, -1, 9, 9, 9, -1, 8, 8, 8], | |
| 1720 | + ], | |
| 1721 | + name="vxk", | |
| 1722 | + visible=True, | |
| 1723 | + collidable=False, | |
| 1724 | + ), | |
| 1725 | + "VxQ": Sprite( | |
| 1726 | + pixels=[ | |
| 1727 | + [7, 7, 7], | |
| 1728 | + [7, 10, 7], | |
| 1729 | + [6, 7, 6], | |
| 1730 | + ], | |
| 1731 | + name="VxQ", | |
| 1732 | + visible=True, | |
| 1733 | + collidable=True, | |
| 1734 | + tags=["NTi", "gOi"], | |
| 1735 | + ), | |
| 1736 | + "wai": Sprite( | |
| 1737 | + pixels=[ | |
| 1738 | + [0, 2, 2], | |
| 1739 | + [2, 8, 3], | |
| 1740 | + [3, 3, 3], | |
| 1741 | + ], | |
| 1742 | + name="wai", | |
| 1743 | + visible=True, | |
| 1744 | + collidable=True, | |
| 1745 | + tags=["bsT"], | |
| 1746 | + ), | |
| 1747 | + "WbH": Sprite( | |
| 1748 | + pixels=[ | |
| 1749 | + [0, 2, 0], | |
| 1750 | + [3, 12, 3], | |
| 1751 | + [0, 3, 0], | |
| 1752 | + ], | |
| 1753 | + name="WbH", | |
| 1754 | + visible=True, | |
| 1755 | + collidable=True, | |
| 1756 | + tags=["bsT"], | |
| 1757 | + ), | |
| 1758 | + "wCl": Sprite( | |
| 1759 | + pixels=[ | |
| 1760 | + [9, 9, 9, -1, 8, 8, 8, -1, 9, 9, 9], | |
| 1761 | + [9, 9, 9, -1, 8, 8, 8, -1, 9, 9, 9], | |
| 1762 | + [9, 9, 9, -1, 8, 8, 8, -1, 9, 9, 9], | |
| 1763 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1764 | + [8, 8, 8, -1, -1, -1, -1, -1, 9, 9, 9], | |
| 1765 | + [8, 8, 8, -1, -1, -1, -1, -1, 9, 9, 9], | |
| 1766 | + [8, 8, 8, -1, -1, -1, -1, -1, 9, 9, 9], | |
| 1767 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1768 | + [9, 9, 9, -1, 8, 8, 8, -1, 8, 8, 8], | |
| 1769 | + [9, 9, 9, -1, 8, 8, 8, -1, 8, 8, 8], | |
| 1770 | + [9, 9, 9, -1, 8, 8, 8, -1, 8, 8, 8], | |
| 1771 | + ], | |
| 1772 | + name="wCl", | |
| 1773 | + visible=True, | |
| 1774 | + collidable=False, | |
| 1775 | + ), | |
| 1776 | + "WDx": Sprite( | |
| 1777 | + pixels=[ | |
| 1778 | + [2, 2, 2], | |
| 1779 | + [3, 8, 3], | |
| 1780 | + [3, 3, 3], | |
| 1781 | + ], | |
| 1782 | + name="WDx", | |
| 1783 | + visible=True, | |
| 1784 | + collidable=True, | |
| 1785 | + tags=["bsT"], | |
| 1786 | + ), | |
| 1787 | + "wmW": Sprite( | |
| 1788 | + pixels=[ | |
| 1789 | + [0, 2, 2], | |
| 1790 | + [0, 8, 0], | |
| 1791 | + [0, 2, 2], | |
| 1792 | + ], | |
| 1793 | + name="wmW", | |
| 1794 | + visible=True, | |
| 1795 | + collidable=True, | |
| 1796 | + tags=["bsT"], | |
| 1797 | + ), | |
| 1798 | + "wmz": Sprite( | |
| 1799 | + pixels=[ | |
| 1800 | + [3, 0, 0], | |
| 1801 | + [2, 11, 2], | |
| 1802 | + [3, 3, 2], | |
| 1803 | + ], | |
| 1804 | + name="wmz", | |
| 1805 | + visible=True, | |
| 1806 | + collidable=True, | |
| 1807 | + tags=["bsT"], | |
| 1808 | + ), | |
| 1809 | + "Wnw": Sprite( | |
| 1810 | + pixels=[ | |
| 1811 | + [9, 9], | |
| 1812 | + [9, 9], | |
| 1813 | + [8, 8], | |
| 1814 | + [8, 8], | |
| 1815 | + ], | |
| 1816 | + name="Wnw", | |
| 1817 | + visible=True, | |
| 1818 | + collidable=True, | |
| 1819 | + ), | |
| 1820 | + "Wpv": Sprite( | |
| 1821 | + pixels=[ | |
| 1822 | + [3, 2, 2], | |
| 1823 | + [0, 11, 0], | |
| 1824 | + [3, 2, 3], | |
| 1825 | + ], | |
| 1826 | + name="Wpv", | |
| 1827 | + visible=True, | |
| 1828 | + collidable=True, | |
| 1829 | + tags=["bsT"], | |
| 1830 | + ), | |
| 1831 | + "WQe": Sprite( | |
| 1832 | + pixels=[ | |
| 1833 | + [2, 2, 0], | |
| 1834 | + [2, 9, 2], | |
| 1835 | + [0, 0, 0], | |
| 1836 | + ], | |
| 1837 | + name="WQe", | |
| 1838 | + visible=True, | |
| 1839 | + collidable=True, | |
| 1840 | + tags=["bsT"], | |
| 1841 | + ), | |
| 1842 | + "xas": Sprite( | |
| 1843 | + pixels=[ | |
| 1844 | + [2, 2, 2], | |
| 1845 | + [2, 12, 2], | |
| 1846 | + [0, 2, 0], | |
| 1847 | + ], | |
| 1848 | + name="xas", | |
| 1849 | + visible=True, | |
| 1850 | + collidable=True, | |
| 1851 | + tags=["bsT"], | |
| 1852 | + ), | |
| 1853 | + "xeV": Sprite( | |
| 1854 | + pixels=[ | |
| 1855 | + [6, 6, 6], | |
| 1856 | + [6, 7, 6], | |
| 1857 | + [6, 6, 6], | |
| 1858 | + ], | |
| 1859 | + name="xeV", | |
| 1860 | + visible=True, | |
| 1861 | + collidable=True, | |
| 1862 | + ), | |
| 1863 | + "xga": Sprite( | |
| 1864 | + pixels=[ | |
| 1865 | + [3, 2, 3], | |
| 1866 | + [0, 11, 0], | |
| 1867 | + [3, 2, 3], | |
| 1868 | + ], | |
| 1869 | + name="xga", | |
| 1870 | + visible=True, | |
| 1871 | + collidable=False, | |
| 1872 | + tags=["bsT"], | |
| 1873 | + ), | |
| 1874 | + "XND": Sprite( | |
| 1875 | + pixels=[ | |
| 1876 | + [6, 7, 6], | |
| 1877 | + [7, 10, 7], | |
| 1878 | + [7, 7, 7], | |
| 1879 | + ], | |
| 1880 | + name="XND", | |
| 1881 | + visible=True, | |
| 1882 | + collidable=True, | |
| 1883 | + tags=["NTi"], | |
| 1884 | + ), | |
| 1885 | + "XWQ": Sprite( | |
| 1886 | + pixels=[ | |
| 1887 | + [2, 2, 2], | |
| 1888 | + [2, 12, 2], | |
| 1889 | + [2, 0, 2], | |
| 1890 | + ], | |
| 1891 | + name="XWQ", | |
| 1892 | + visible=True, | |
| 1893 | + collidable=True, | |
| 1894 | + tags=["bsT"], | |
| 1895 | + ), | |
| 1896 | + "Yid": Sprite( | |
| 1897 | + pixels=[ | |
| 1898 | + [6, 6, 6], | |
| 1899 | + [7, 7, 7], | |
| 1900 | + [6, 6, 6], | |
| 1901 | + ], | |
| 1902 | + name="Yid", | |
| 1903 | + visible=True, | |
| 1904 | + collidable=True, | |
| 1905 | + ), | |
| 1906 | + "yKt": Sprite( | |
| 1907 | + pixels=[ | |
| 1908 | + [3, 0, 3], | |
| 1909 | + [2, 11, 3], | |
| 1910 | + [3, 0, 3], | |
| 1911 | + ], | |
| 1912 | + name="yKt", | |
| 1913 | + visible=True, | |
| 1914 | + collidable=True, | |
| 1915 | + tags=["bsT"], | |
| 1916 | + ), | |
| 1917 | + "yUG": Sprite( | |
| 1918 | + pixels=[ | |
| 1919 | + [3, 2, 3], | |
| 1920 | + [0, 14, 0], | |
| 1921 | + [3, 2, 3], | |
| 1922 | + ], | |
| 1923 | + name="yUG", | |
| 1924 | + visible=True, | |
| 1925 | + collidable=True, | |
| 1926 | + tags=["bsT"], | |
| 1927 | + ), | |
| 1928 | + "Ywn": Sprite( | |
| 1929 | + pixels=[ | |
| 1930 | + [14, 14], | |
| 1931 | + [14, 14], | |
| 1932 | + [15, 15], | |
| 1933 | + [15, 15], | |
| 1934 | + ], | |
| 1935 | + name="Ywn", | |
| 1936 | + visible=True, | |
| 1937 | + collidable=True, | |
| 1938 | + ), | |
| 1939 | + "ywQ": Sprite( | |
| 1940 | + pixels=[ | |
| 1941 | + [2, 2, 2], | |
| 1942 | + [2, 9, 2], | |
| 1943 | + [2, 2, 2], | |
| 1944 | + ], | |
| 1945 | + name="ywQ", | |
| 1946 | + visible=True, | |
| 1947 | + collidable=True, | |
| 1948 | + tags=["bsT"], | |
| 1949 | + ), | |
| 1950 | + "yZg": Sprite( | |
| 1951 | + pixels=[ | |
| 1952 | + [2, 0, 2], | |
| 1953 | + [0, 14, 0], | |
| 1954 | + [2, 0, 2], | |
| 1955 | + ], | |
| 1956 | + name="yZg", | |
| 1957 | + visible=True, | |
| 1958 | + collidable=True, | |
| 1959 | + tags=["bsT"], | |
| 1960 | + ), | |
| 1961 | + "Zgh": Sprite( | |
| 1962 | + pixels=[ | |
| 1963 | + [11, 11], | |
| 1964 | + [11, 11], | |
| 1965 | + ], | |
| 1966 | + name="Zgh", | |
| 1967 | + visible=True, | |
| 1968 | + collidable=True, | |
| 1969 | + ), | |
| 1970 | + "zhI": Sprite( | |
| 1971 | + pixels=[ | |
| 1972 | + [2, 2, 2], | |
| 1973 | + [2, 9, 2], | |
| 1974 | + [2, 2, 2], | |
| 1975 | + ], | |
| 1976 | + name="zhI", | |
| 1977 | + visible=True, | |
| 1978 | + collidable=True, | |
| 1979 | + tags=["bsT"], | |
| 1980 | + ), | |
| 1981 | + "zIu": Sprite( | |
| 1982 | + pixels=[ | |
| 1983 | + [3, 2, 3], | |
| 1984 | + [0, 11, 0], | |
| 1985 | + [3, 2, 3], | |
| 1986 | + ], | |
| 1987 | + name="zIu", | |
| 1988 | + visible=True, | |
| 1989 | + collidable=False, | |
| 1990 | + tags=["bsT"], | |
| 1991 | + ), | |
| 1992 | + "ZkU": Sprite( | |
| 1993 | + pixels=[ | |
| 1994 | + [7, 6, 7], | |
| 1995 | + [7, 10, 7], | |
| 1996 | + [7, 7, 7], | |
| 1997 | + ], | |
| 1998 | + name="ZkU", | |
| 1999 | + visible=True, | |
| 2000 | + collidable=True, | |
| 2001 | + tags=["NTi", "gOi"], | |
| 2002 | + ), | |
| 2003 | + "zmT": Sprite( | |
| 2004 | + pixels=[ | |
| 2005 | + [0, 2, 3], | |
| 2006 | + [2, 12, 3], | |
| 2007 | + [3, 3, 3], | |
| 2008 | + ], | |
| 2009 | + name="zmT", | |
| 2010 | + visible=True, | |
| 2011 | + collidable=True, | |
| 2012 | + tags=["bsT"], | |
| 2013 | + ), | |
| 2014 | + "zoT": Sprite( | |
| 2015 | + pixels=[ | |
| 2016 | + [6, 7, 7], | |
| 2017 | + [7, 10, 7], | |
| 2018 | + [7, 7, 6], | |
| 2019 | + ], | |
| 2020 | + name="zoT", | |
| 2021 | + visible=True, | |
| 2022 | + collidable=True, | |
| 2023 | + tags=["NTi", "gOi"], | |
| 2024 | + ), | |
| 2025 | + "zvj": Sprite( | |
| 2026 | + pixels=[ | |
| 2027 | + [2, 0, 0], | |
| 2028 | + [2, 8, 2], | |
| 2029 | + [2, 2, 2], | |
| 2030 | + ], | |
| 2031 | + name="zvj", | |
| 2032 | + visible=True, | |
| 2033 | + collidable=True, | |
| 2034 | + tags=["bsT"], | |
| 2035 | + ), | |
| 2036 | +} | |
| 2037 | + | |
| 2038 | +levels = [ | |
| 2039 | + # THR | |
| 2040 | + Level( | |
| 2041 | + sprites=[ | |
| 2042 | + sprites["cgN"].clone().set_position(0, 14), | |
| 2043 | + sprites["dvQ"].clone(), | |
| 2044 | + sprites["Hkx"].clone().set_position(18, 18), | |
| 2045 | + sprites["Hkx"].clone().set_position(22, 18), | |
| 2046 | + sprites["Hkx"].clone().set_position(26, 18), | |
| 2047 | + sprites["Hkx"].clone().set_position(18, 22), | |
| 2048 | + sprites["Hkx"].clone().set_position(26, 22), | |
| 2049 | + sprites["Hkx"].clone().set_position(18, 26), | |
| 2050 | + sprites["Hkx"].clone().set_position(22, 26), | |
| 2051 | + sprites["Hkx"].clone().set_position(26, 26), | |
| 2052 | + sprites["MEF"].clone().set_position(23, 5), | |
| 2053 | + sprites["qqX"].clone().set_position(6, 22), | |
| 2054 | + sprites["seE"].clone().set_position(16, 16), | |
| 2055 | + sprites["sxj"].clone().set_position(6, 5), | |
| 2056 | + sprites["TOK"].clone().set_position(19, 1), | |
| 2057 | + sprites["UEq"].clone().set_position(16, 16), | |
| 2058 | + sprites["vxk"].clone().set_position(2, 18), | |
| 2059 | + sprites["wCl"].clone().set_position(2, 1), | |
| 2060 | + sprites["wmW"].clone().set_position(22, 22), | |
| 2061 | + ], | |
| 2062 | + grid_size=(32, 32), | |
| 2063 | + data={ | |
| 2064 | + "kCv": 32, | |
| 2065 | + "cwU": [9, 8], | |
| 2066 | + "elp": [[0, 0, 0], [0, 1, 0], [0, 0, 0]], | |
| 2067 | + }, | |
| 2068 | + name="THR", | |
| 2069 | + ), | |
| 2070 | + # hxv | |
| 2071 | + Level( | |
| 2072 | + sprites=[ | |
| 2073 | + sprites["EQX"].clone().set_position(14, 19), | |
| 2074 | + sprites["Hkx"].clone().set_position(10, 7), | |
| 2075 | + sprites["Hkx"].clone().set_position(14, 7), | |
| 2076 | + sprites["Hkx"].clone().set_position(18, 7), | |
| 2077 | + sprites["Hkx"].clone().set_position(10, 11), | |
| 2078 | + sprites["Hkx"].clone().set_position(18, 11), | |
| 2079 | + sprites["Hkx"].clone().set_position(10, 15), | |
| 2080 | + sprites["Hkx"].clone().set_position(14, 15), | |
| 2081 | + sprites["Hkx"].clone().set_position(18, 15), | |
| 2082 | + sprites["Hkx"].clone().set_position(18, 19), | |
| 2083 | + sprites["Hkx"].clone().set_position(14, 23), | |
| 2084 | + sprites["Hkx"].clone().set_position(10, 23), | |
| 2085 | + sprites["Hkx"].clone().set_position(10, 19), | |
| 2086 | + sprites["Hkx"].clone().set_position(18, 23), | |
| 2087 | + sprites["jGI"].clone().set_position(14, 11), | |
| 2088 | + sprites["qpe"].clone().set_position(30, 0), | |
| 2089 | + sprites["viw"].clone().set_position(30, 2), | |
| 2090 | + ], | |
| 2091 | + grid_size=(32, 32), | |
| 2092 | + data={ | |
| 2093 | + "kCv": 32, | |
| 2094 | + "cwU": [9, 12], | |
| 2095 | + "elp": [[0, 0, 0], [0, 1, 0], [0, 0, 0]], | |
| 2096 | + }, | |
| 2097 | + name="hxv", | |
| 2098 | + ), | |
| 2099 | + # Fmh | |
| 2100 | + Level( | |
| 2101 | + sprites=[ | |
| 2102 | + sprites["APy"].clone().set_position(18, 14), | |
| 2103 | + sprites["dta"].clone().set_position(14, 22), | |
| 2104 | + sprites["fBi"].clone().set_position(30, 0), | |
| 2105 | + sprites["Hkx"].clone().set_position(10, 2), | |
| 2106 | + sprites["Hkx"].clone().set_position(10, 6), | |
| 2107 | + sprites["Hkx"].clone().set_position(10, 10), | |
| 2108 | + sprites["Hkx"].clone().set_position(14, 10), | |
| 2109 | + sprites["Hkx"].clone().set_position(14, 14), | |
| 2110 | + sprites["Hkx"].clone().set_position(18, 10), | |
| 2111 | + sprites["Hkx"].clone().set_position(18, 6), | |
| 2112 | + sprites["Hkx"].clone().set_position(22, 10), | |
| 2113 | + sprites["Hkx"].clone().set_position(18, 2), | |
| 2114 | + sprites["Hkx"].clone().set_position(14, 2), | |
| 2115 | + sprites["Hkx"].clone().set_position(6, 14), | |
| 2116 | + sprites["Hkx"].clone().set_position(6, 10), | |
| 2117 | + sprites["Hkx"].clone().set_position(10, 18), | |
| 2118 | + sprites["Hkx"].clone().set_position(6, 18), | |
| 2119 | + sprites["Hkx"].clone().set_position(14, 18), | |
| 2120 | + sprites["Hkx"].clone().set_position(18, 18), | |
| 2121 | + sprites["Hkx"].clone().set_position(22, 18), | |
| 2122 | + sprites["Hkx"].clone().set_position(22, 14), | |
| 2123 | + sprites["Hkx"].clone().set_position(10, 22), | |
| 2124 | + sprites["Hkx"].clone().set_position(18, 22), | |
| 2125 | + sprites["Hkx"].clone().set_position(14, 26), | |
| 2126 | + sprites["Hkx"].clone().set_position(10, 26), | |
| 2127 | + sprites["Hkx"].clone().set_position(18, 26), | |
| 2128 | + sprites["KYk"].clone().set_position(14, 6), | |
| 2129 | + sprites["SXM"].clone().set_position(10, 14), | |
| 2130 | + ], | |
| 2131 | + grid_size=(32, 32), | |
| 2132 | + data={ | |
| 2133 | + "kCv": 96, | |
| 2134 | + "cwU": [8, 12], | |
| 2135 | + "elp": [[0, 0, 0], [0, 1, 0], [0, 0, 0]], | |
| 2136 | + }, | |
| 2137 | + name="Fmh", | |
| 2138 | + ), | |
| 2139 | + # oea | |
| 2140 | + Level( | |
| 2141 | + sprites=[ | |
| 2142 | + sprites["aRa"].clone().set_position(18, 11), | |
| 2143 | + sprites["gYF"].clone().set_position(30, 4), | |
| 2144 | + sprites["Hkx"].clone().set_position(10, 7), | |
| 2145 | + sprites["Hkx"].clone().set_position(14, 11), | |
| 2146 | + sprites["Hkx"].clone().set_position(14, 15), | |
| 2147 | + sprites["Hkx"].clone().set_position(22, 11), | |
| 2148 | + sprites["Hkx"].clone().set_position(22, 15), | |
| 2149 | + sprites["Hkx"].clone().set_position(18, 7), | |
| 2150 | + sprites["Hkx"].clone().set_position(14, 7), | |
| 2151 | + sprites["Hkx"].clone().set_position(6, 11), | |
| 2152 | + sprites["Hkx"].clone().set_position(10, 15), | |
| 2153 | + sprites["Hkx"].clone().set_position(18, 15), | |
| 2154 | + sprites["Hkx"].clone().set_position(6, 15), | |
| 2155 | + sprites["Hkx"].clone().set_position(6, 7), | |
| 2156 | + sprites["Hkx"].clone().set_position(22, 7), | |
| 2157 | + sprites["Hkx"].clone().set_position(10, 19), | |
| 2158 | + sprites["Hkx"].clone().set_position(18, 19), | |
| 2159 | + sprites["Hkx"].clone().set_position(10, 23), | |
| 2160 | + sprites["Hkx"].clone().set_position(14, 23), | |
| 2161 | + sprites["Hkx"].clone().set_position(18, 23), | |
| 2162 | + sprites["lMN"].clone().set_position(10, 11), | |
| 2163 | + sprites["PrU"].clone().set_position(30, 2), | |
| 2164 | + sprites["QpB"].clone().set_position(30, 0), | |
| 2165 | + sprites["uCe"].clone().set_position(14, 19), | |
| 2166 | + ], | |
| 2167 | + grid_size=(32, 32), | |
| 2168 | + data={ | |
| 2169 | + "kCv": 96, | |
| 2170 | + "cwU": [9, 8, 12], | |
| 2171 | + "elp": [[0, 0, 0], [0, 1, 0], [0, 0, 0]], | |
| 2172 | + }, | |
| 2173 | + name="oea", | |
| 2174 | + ), | |
| 2175 | + # INW | |
| 2176 | + Level( | |
| 2177 | + sprites=[ | |
| 2178 | + sprites["AQG"].clone().set_position(19, 6), | |
| 2179 | + sprites["fPj"].clone().set_position(11, 18), | |
| 2180 | + sprites["Hkx"].clone().set_position(7, 6), | |
| 2181 | + sprites["Hkx"].clone().set_position(15, 18), | |
| 2182 | + sprites["Hkx"].clone().set_position(15, 6), | |
| 2183 | + sprites["Hkx"].clone().set_position(11, 10), | |
| 2184 | + sprites["Hkx"].clone().set_position(11, 2), | |
| 2185 | + sprites["Hkx"].clone().set_position(23, 14), | |
| 2186 | + sprites["Hkx"].clone().set_position(15, 10), | |
| 2187 | + sprites["Hkx"].clone().set_position(19, 18), | |
| 2188 | + sprites["Hkx"].clone().set_position(23, 22), | |
| 2189 | + sprites["Hkx"].clone().set_position(15, 22), | |
| 2190 | + sprites["Hkx"].clone().set_position(19, 26), | |
| 2191 | + sprites["Hkx"].clone().set_position(15, 26), | |
| 2192 | + sprites["Hkx"].clone().set_position(23, 18), | |
| 2193 | + sprites["Hkx"].clone().set_position(19, 10), | |
| 2194 | + sprites["Hkx"].clone().set_position(7, 10), | |
| 2195 | + sprites["Hkx"].clone().set_position(15, 2), | |
| 2196 | + sprites["Hkx"].clone().set_position(7, 18), | |
| 2197 | + sprites["Hkx"].clone().set_position(7, 22), | |
| 2198 | + sprites["Hkx"].clone().set_position(7, 26), | |
| 2199 | + sprites["Hkx"].clone().set_position(11, 26), | |
| 2200 | + sprites["Hkx"].clone().set_position(7, 14), | |
| 2201 | + sprites["Hkx"].clone().set_position(3, 10), | |
| 2202 | + sprites["Hkx"].clone().set_position(3, 18), | |
| 2203 | + sprites["Hkx"].clone().set_position(15, 14), | |
| 2204 | + sprites["Hkx"].clone().set_position(23, 10), | |
| 2205 | + sprites["Hkx"].clone().set_position(27, 18), | |
| 2206 | + sprites["Hkx"].clone().set_position(27, 10), | |
| 2207 | + sprites["IFI"].clone().set_position(3, 14), | |
| 2208 | + sprites["NTi"].clone().set_position(11, 6), | |
| 2209 | + sprites["NTi"].clone().set_position(19, 22), | |
| 2210 | + sprites["NTi"].clone().set_position(11, 14), | |
| 2211 | + sprites["Nul"].clone().set_position(7, 2), | |
| 2212 | + sprites["PmE"].clone().set_position(23, 26), | |
| 2213 | + sprites["qqM"].clone().set_position(11, 22), | |
| 2214 | + sprites["SfD"].clone().set_position(27, 14), | |
| 2215 | + sprites["Ywn"].clone().set_position(27, 0), | |
| 2216 | + sprites["yZg"].clone().set_position(19, 14), | |
| 2217 | + ], | |
| 2218 | + grid_size=(32, 32), | |
| 2219 | + data={ | |
| 2220 | + "kCv": 128, | |
| 2221 | + "cwU": [14, 15], | |
| 2222 | + "elp": [[0, 0, 0], [0, 1, 0], [0, 0, 0]], | |
| 2223 | + }, | |
| 2224 | + name="INW", | |
| 2225 | + ), | |
| 2226 | + # DFx | |
| 2227 | + Level( | |
| 2228 | + sprites=[ | |
| 2229 | + sprites["ASc"].clone().set_position(22, 23), | |
| 2230 | + sprites["gFd"].clone().set_position(30, 2), | |
| 2231 | + sprites["kvt"].clone().set_position(10, 15), | |
| 2232 | + sprites["PjS"].clone().set_position(18, 11), | |
| 2233 | + sprites["ssK"].clone().set_position(6, 3), | |
| 2234 | + sprites["Zgh"].clone().set_position(30, 0), | |
| 2235 | + sprites["ZkU"].clone().set_position(6, 7), | |
| 2236 | + sprites["ZkU"].clone().set_position(10, 7), | |
| 2237 | + sprites["ZkU"].clone().set_position(14, 7), | |
| 2238 | + sprites["ZkU"].clone().set_position(18, 7), | |
| 2239 | + sprites["ZkU"].clone().set_position(22, 7), | |
| 2240 | + sprites["ZkU"].clone().set_position(6, 11), | |
| 2241 | + sprites["ZkU"].clone().set_position(22, 11), | |
| 2242 | + sprites["ZkU"].clone().set_position(10, 11), | |
| 2243 | + sprites["ZkU"].clone().set_position(14, 11), | |
| 2244 | + sprites["ZkU"].clone().set_position(18, 15), | |
| 2245 | + sprites["ZkU"].clone().set_position(6, 15), | |
| 2246 | + sprites["ZkU"].clone().set_position(22, 15), | |
| 2247 | + sprites["ZkU"].clone().set_position(14, 15), | |
| 2248 | + sprites["ZkU"].clone().set_position(18, 19), | |
| 2249 | + sprites["ZkU"].clone().set_position(6, 19), | |
| 2250 | + sprites["ZkU"].clone().set_position(22, 19), | |
| 2251 | + sprites["ZkU"].clone().set_position(10, 19), | |
| 2252 | + sprites["ZkU"].clone().set_position(14, 19), | |
| 2253 | + sprites["ZkU"].clone().set_position(26, 19), | |
| 2254 | + sprites["ZkU"].clone().set_position(2, 7), | |
| 2255 | + sprites["ZkU"].clone().set_position(2, 3), | |
| 2256 | + sprites["ZkU"].clone().set_position(26, 23), | |
| 2257 | + ], | |
| 2258 | + grid_size=(32, 32), | |
| 2259 | + data={ | |
| 2260 | + "kCv": 128, | |
| 2261 | + "cwU": [11, 14], | |
| 2262 | + "elp": [[0, 0, 0], [0, 1, 0], [0, 0, 0]], | |
| 2263 | + }, | |
| 2264 | + name="DFx", | |
| 2265 | + ), | |
| 2266 | +] | |
| 2267 | + | |
| 2268 | +BACKGROUND_COLOR = 4 | |
| 2269 | +PADDING_COLOR = 4 | |
| 2270 | + | |
| 2271 | + | |
| 2272 | +class sve(RenderableUserDisplay): | |
| 2273 | + def __init__(self, sbb: int, vrr: "Ft09"): | |
| 2274 | + self.oro = sbb | |
| 2275 | + self.dzy = sbb | |
| 2276 | + self.vai = vrr | |
| 2277 | + | |
| 2278 | + def cab(self, shl: int) -> None: | |
| 2279 | + self.dzy = max(0, min(shl, self.oro)) | |
| 2280 | + | |
| 2281 | + def lph(self) -> bool: | |
| 2282 | + if self.dzy > 0: | |
| 2283 | + self.dzy -= 1 | |
| 2284 | + return self.dzy > 0 | |
| 2285 | + | |
| 2286 | + def dsl(self) -> None: | |
| 2287 | + self.dzy = self.oro | |
| 2288 | + | |
| 2289 | + def render_interface(self, frame: np.ndarray) -> np.ndarray: | |
| 2290 | + if self.oro == 0: | |
| 2291 | + return frame | |
| 2292 | + | |
| 2293 | + slC = self.dzy / self.oro | |
| 2294 | + GoJ = round(64 * slC) | |
| 2295 | + for x in range(64): | |
| 2296 | + frame[63, x] = 12 if x < GoJ else 11 | |
| 2297 | + | |
| 2298 | + return frame | |
| 2299 | + | |
| 2300 | + | |
| 2301 | +class Ft09(ARCBaseGame): | |
| 2302 | + def __init__(self) -> None: | |
| 2303 | + ZnK = levels[0].get_data("kCv") if levels else 0 | |
| 2304 | + bUg = ZnK if ZnK else 0 | |
| 2305 | + self.lpw = sve(bUg, self) | |
| 2306 | + super().__init__("ft09", levels, Camera(0, 0, 16, 16, 4, 4, [self.lpw]), available_actions=[6]) | |
| 2307 | + | |
| 2308 | + def olv(self) -> None: | |
| 2309 | + yTL = self.current_level.get_data("kCv") | |
| 2310 | + if yTL: | |
| 2311 | + self.lpw.oro = yTL | |
| 2312 | + self.lpw.dsl() | |
| 2313 | + | |
| 2314 | + def on_set_level(self, level: Level) -> None: | |
| 2315 | + self.olv() | |
| 2316 | + | |
| 2317 | + self.zth = None | |
| 2318 | + self.our = 0 | |
| 2319 | + if self.level_index == 0: | |
| 2320 | + Uev = self.current_level.get_sprites_by_tag("Ycb") | |
| 2321 | + if Uev: | |
| 2322 | + self.zth = Uev[0] | |
| 2323 | + | |
| 2324 | + rKu = self.current_level.grid_size | |
| 2325 | + self.pdw = rKu[0] # type: ignore | |
| 2326 | + self.zbh = rKu[1] # type: ignore | |
| 2327 | + | |
| 2328 | + self.gig = self.current_level.get_sprites_by_tag("bsT") | |
| 2329 | + self.fhc = self.current_level.get_sprites_by_tag("Hkx") | |
| 2330 | + self.mou = self.current_level.get_sprites_by_tag("NTi") | |
| 2331 | + | |
| 2332 | + self.gqb = self.current_level.get_data("cwU") | |
| 2333 | + if self.gqb is None: | |
| 2334 | + self.gqb = [9, 8] | |
| 2335 | + | |
| 2336 | + self.irw = self.current_level.get_data("elp") | |
| 2337 | + | |
| 2338 | + if self.irw is None: | |
| 2339 | + self.irw = [[0, 0, 0], [0, 1, 0], [0, 0, 0]] | |
| 2340 | + | |
| 2341 | + for rmy, zge in enumerate(self.fhc): | |
| 2342 | + zge.color_remap(zge.pixels[0][0], self.gqb[0]) | |
| 2343 | + | |
| 2344 | + for rmy, zge in enumerate(self.mou): | |
| 2345 | + for jon in range(3): | |
| 2346 | + for vlo in range(3): | |
| 2347 | + if zge.pixels[jon][vlo] != 6: | |
| 2348 | + zge.pixels[jon][vlo] = self.gqb[0] | |
| 2349 | + | |
| 2350 | + def step(self) -> None: | |
| 2351 | + if self.action.id.value == 0: | |
| 2352 | + self.complete_action() | |
| 2353 | + return | |
| 2354 | + | |
| 2355 | + if self.our > 0 and self.zth: | |
| 2356 | + self.our -= 1 | |
| 2357 | + | |
| 2358 | + aIT = 0 if self.our % 2 == 1 else 2 | |
| 2359 | + Ytt = self.zth.pixels > -1 | |
| 2360 | + self.zth.pixels[Ytt] = aIT | |
| 2361 | + if self.our == 0: | |
| 2362 | + self.complete_action() | |
| 2363 | + return | |
| 2364 | + | |
| 2365 | + kMO = None | |
| 2366 | + ATn = False | |
| 2367 | + Hzf = None | |
| 2368 | + | |
| 2369 | + if self.action.id.value == 6: | |
| 2370 | + AfP = self.action.data.get("x", 0) | |
| 2371 | + Ywt = self.action.data.get("y", 0) | |
| 2372 | + | |
| 2373 | + Hzf = self.camera.display_to_grid(AfP, Ywt) | |
| 2374 | + if Hzf: | |
| 2375 | + ppb, tut = Hzf | |
| 2376 | + | |
| 2377 | + Wmr = self.current_level.get_sprite_at(ppb, tut, "Hkx") | |
| 2378 | + if not Wmr: | |
| 2379 | + Wmr = self.current_level.get_sprite_at(ppb, tut, "NTi") | |
| 2380 | + if Wmr: | |
| 2381 | + ATn = True | |
| 2382 | + if Wmr: | |
| 2383 | + self.blr = Wmr | |
| 2384 | + kMO = 5 | |
| 2385 | + | |
| 2386 | + if kMO is None and Hzf is not None: | |
| 2387 | + uTB = Hzf and self.current_level.get_sprite_at(Hzf[0], Hzf[1], "bsT") | |
| 2388 | + if self.level_index == 0 and self.zth and not uTB: | |
| 2389 | + self.our = 4 | |
| 2390 | + return | |
| 2391 | + self.complete_action() | |
| 2392 | + return | |
| 2393 | + | |
| 2394 | + GBS = [ | |
| 2395 | + [(-1, -1), (0, -1), (1, -1)], | |
| 2396 | + [(-1, 0), (0, 0), (1, 0)], | |
| 2397 | + [(-1, 1), (0, 1), (1, 1)], | |
| 2398 | + ] | |
| 2399 | + | |
| 2400 | + if ATn: | |
| 2401 | + eHl = [[0, 0, 0], [0, 1, 0], [0, 0, 0]] | |
| 2402 | + bBi = self.blr.pixels | |
| 2403 | + for j in range(3): | |
| 2404 | + for i in range(3): | |
| 2405 | + if bBi[j][i] == 6: | |
| 2406 | + eHl[j][i] = 1 | |
| 2407 | + else: | |
| 2408 | + eHl = self.irw | |
| 2409 | + | |
| 2410 | + if kMO == 5: | |
| 2411 | + for i in range(3): | |
| 2412 | + for j in range(3): | |
| 2413 | + if eHl[j][i] == 1: | |
| 2414 | + ybc, lga = GBS[j][i] | |
| 2415 | + cAw = (self.blr.x + (ybc * 4), self.blr.y + (lga * 4)) | |
| 2416 | + | |
| 2417 | + RfH = self.current_level.get_sprite_at(cAw[0], cAw[1], "Hkx") | |
| 2418 | + | |
| 2419 | + if not RfH: | |
| 2420 | + RfH = self.current_level.get_sprite_at(cAw[0], cAw[1], "NTi") | |
| 2421 | + if RfH: | |
| 2422 | + kNa = self.gqb.index(RfH.pixels[1][1]) | |
| 2423 | + kNa = (kNa + 1) % len(self.gqb) | |
| 2424 | + RfH.color_remap(RfH.pixels[1][1], self.gqb[kNa]) | |
| 2425 | + | |
| 2426 | + if self.cgj(): | |
| 2427 | + self.next_level() | |
| 2428 | + self.complete_action() | |
| 2429 | + return | |
| 2430 | + | |
| 2431 | + if not self.lpw.lph(): | |
| 2432 | + self.lose() | |
| 2433 | + | |
| 2434 | + self.complete_action() | |
| 2435 | + | |
| 2436 | + def cgj(self) -> bool: | |
| 2437 | + for etf in self.gig: | |
| 2438 | + nRq = etf.pixels[1][1] | |
| 2439 | + | |
| 2440 | + HJd = etf.pixels[0][0] == 0 | |
| 2441 | + tx, ty = etf.x - 4, etf.y - 4 | |
| 2442 | + PML = self.current_level.get_sprite_at(tx, ty, "Hkx") | |
| 2443 | + if not PML: | |
| 2444 | + PML = self.current_level.get_sprite_at(tx, ty, "NTi") | |
| 2445 | + | |
| 2446 | + if PML: | |
| 2447 | + pbA = (PML.pixels[1][1] == nRq) if HJd else (PML.pixels[1][1] != nRq) | |
| 2448 | + if not pbA: | |
| 2449 | + return False | |
| 2450 | + | |
| 2451 | + HJd = etf.pixels[0][1] == 0 | |
| 2452 | + tx, ty = etf.x, etf.y - 4 | |
| 2453 | + PML = self.current_level.get_sprite_at(tx, ty, "Hkx") | |
| 2454 | + if not PML: | |
| 2455 | + PML = self.current_level.get_sprite_at(tx, ty, "NTi") | |
| 2456 | + if PML: | |
| 2457 | + pbA = (PML.pixels[1][1] == nRq) if HJd else (PML.pixels[1][1] != nRq) | |
| 2458 | + if not pbA: | |
| 2459 | + return False | |
| 2460 | + | |
| 2461 | + HJd = etf.pixels[0][2] == 0 | |
| 2462 | + tx, ty = etf.x + 4, etf.y - 4 | |
| 2463 | + PML = self.current_level.get_sprite_at(tx, ty, "Hkx") | |
| 2464 | + if not PML: | |
| 2465 | + PML = self.current_level.get_sprite_at(tx, ty, "NTi") | |
| 2466 | + if PML: | |
| 2467 | + pbA = (PML.pixels[1][1] == nRq) if HJd else (PML.pixels[1][1] != nRq) | |
| 2468 | + if not pbA: | |
| 2469 | + return False | |
| 2470 | + | |
| 2471 | + HJd = etf.pixels[1][0] == 0 | |
| 2472 | + tx, ty = etf.x - 4, etf.y | |
| 2473 | + PML = self.current_level.get_sprite_at(tx, ty, "Hkx") | |
| 2474 | + if not PML: | |
| 2475 | + PML = self.current_level.get_sprite_at(tx, ty, "NTi") | |
| 2476 | + if PML: | |
| 2477 | + pbA = (PML.pixels[1][1] == nRq) if HJd else (PML.pixels[1][1] != nRq) | |
| 2478 | + if not pbA: | |
| 2479 | + return False | |
| 2480 | + | |
| 2481 | + HJd = etf.pixels[1][2] == 0 | |
| 2482 | + tx, ty = etf.x + 4, etf.y | |
| 2483 | + PML = self.current_level.get_sprite_at(tx, ty, "Hkx") | |
| 2484 | + if not PML: | |
| 2485 | + PML = self.current_level.get_sprite_at(tx, ty, "NTi") | |
| 2486 | + if PML: | |
| 2487 | + pbA = (PML.pixels[1][1] == nRq) if HJd else (PML.pixels[1][1] != nRq) | |
| 2488 | + if not pbA: | |
| 2489 | + return False | |
| 2490 | + | |
| 2491 | + HJd = etf.pixels[2][0] == 0 | |
| 2492 | + tx, ty = etf.x - 4, etf.y + 4 | |
| 2493 | + PML = self.current_level.get_sprite_at(tx, ty, "Hkx") | |
| 2494 | + if not PML: | |
| 2495 | + PML = self.current_level.get_sprite_at(tx, ty, "NTi") | |
| 2496 | + if PML: | |
| 2497 | + pbA = (PML.pixels[1][1] == nRq) if HJd else (PML.pixels[1][1] != nRq) | |
| 2498 | + if not pbA: | |
| 2499 | + return False | |
| 2500 | + | |
| 2501 | + HJd = etf.pixels[2][1] == 0 | |
| 2502 | + tx, ty = etf.x, etf.y + 4 | |
| 2503 | + PML = self.current_level.get_sprite_at(tx, ty, "Hkx") | |
| 2504 | + if not PML: | |
| 2505 | + PML = self.current_level.get_sprite_at(tx, ty, "NTi") | |
| 2506 | + if PML: | |
| 2507 | + pbA = (PML.pixels[1][1] == nRq) if HJd else (PML.pixels[1][1] != nRq) | |
| 2508 | + if not pbA: | |
| 2509 | + return False | |
| 2510 | + | |
| 2511 | + HJd = etf.pixels[2][2] == 0 | |
| 2512 | + tx, ty = etf.x + 4, etf.y + 4 | |
| 2513 | + PML = self.current_level.get_sprite_at(tx, ty, "Hkx") | |
| 2514 | + if not PML: | |
| 2515 | + PML = self.current_level.get_sprite_at(tx, ty, "NTi") | |
| 2516 | + if PML: | |
| 2517 | + pbA = (PML.pixels[1][1] == nRq) if HJd else (PML.pixels[1][1] != nRq) | |
| 2518 | + if not pbA: | |
| 2519 | + return False | |
| 2520 | + return True | |
+14 −0 referee/environment_files/ft09/0d8bbf25/metadata.json added View file
| @@ -0,0 +1,14 @@ | ||
| 1 | +{ | |
| 2 | + "game_id": "ft09-0d8bbf25", | |
| 3 | + "title": "FT09", | |
| 4 | + "default_fps": 8, | |
| 5 | + "baseline_actions": [ | |
| 6 | + 43, | |
| 7 | + 12, | |
| 8 | + 23, | |
| 9 | + 28, | |
| 10 | + 65, | |
| 11 | + 37 | |
| 12 | + ], | |
| 13 | + "date_downloaded": "2026-10-21T17:12:01.294915+00:00" | |
| 14 | +} | |
+21451 −0 referee/environment_files/lp85/305b61c3/lp85.py added View file
| @@ -0,0 +1,21451 @@ | ||
| 1 | +# MIT License | |
| 2 | +# | |
| 3 | +# Copyright (c) 2026 ARC Prize Foundation | |
| 4 | +# | |
| 5 | +# Permission is hereby granted, free of charge, to any person obtaining a copy | |
| 6 | +# of this software and associated documentation files (the "Software"), to deal | |
| 7 | +# in the Software without restriction, including without limitation the rights | |
| 8 | +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| 9 | +# copies of the Software, and to permit persons to whom the Software is | |
| 10 | +# furnished to do so, subject to the following conditions: | |
| 11 | +# | |
| 12 | +# The above copyright notice and this permission notice shall be included in all | |
| 13 | +# copies or substantial portions of the Software. | |
| 14 | +# | |
| 15 | +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| 16 | +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| 17 | +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| 18 | +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| 19 | +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| 20 | +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| 21 | +# SOFTWARE. | |
| 22 | + | |
| 23 | +from typing import Dict, List, NamedTuple, Tuple, TypedDict | |
| 24 | + | |
| 25 | +import numpy as np | |
| 26 | +from arcengine import ( | |
| 27 | + ARCBaseGame, | |
| 28 | + Camera, | |
| 29 | + GameAction, | |
| 30 | + Level, | |
| 31 | + RenderableUserDisplay, | |
| 32 | + Sprite, | |
| 33 | +) | |
| 34 | + | |
| 35 | +sprites = { | |
| 36 | + "ahdesifykt": Sprite( | |
| 37 | + pixels=[ | |
| 38 | + [-1, 8, 8], | |
| 39 | + [8, 8, 8], | |
| 40 | + [8, 8, 8], | |
| 41 | + [-1, 8, 8], | |
| 42 | + ], | |
| 43 | + name="ahdesifykt", | |
| 44 | + visible=True, | |
| 45 | + collidable=True, | |
| 46 | + tags=["button_A_L", "sys_click"], | |
| 47 | + ), | |
| 48 | + "aoibinevrm": Sprite( | |
| 49 | + pixels=[ | |
| 50 | + [14, 14, -1], | |
| 51 | + [14, 14, 14], | |
| 52 | + [14, 14, 14], | |
| 53 | + [14, 14, -1], | |
| 54 | + ], | |
| 55 | + name="aoibinevrm", | |
| 56 | + visible=True, | |
| 57 | + collidable=True, | |
| 58 | + tags=["button_13_R", "sys_click"], | |
| 59 | + ), | |
| 60 | + "aqwhbtzcfg": Sprite( | |
| 61 | + pixels=[ | |
| 62 | + [14, 14, -1], | |
| 63 | + [14, 14, 14], | |
| 64 | + [14, 14, 14], | |
| 65 | + [14, 14, -1], | |
| 66 | + ], | |
| 67 | + name="aqwhbtzcfg", | |
| 68 | + visible=True, | |
| 69 | + collidable=True, | |
| 70 | + tags=["button_27_R", "sys_click"], | |
| 71 | + ), | |
| 72 | + "auxglvwwep": Sprite( | |
| 73 | + pixels=[ | |
| 74 | + [14, 14, -1], | |
| 75 | + [14, 14, 14], | |
| 76 | + [14, 14, 14], | |
| 77 | + [14, 14, -1], | |
| 78 | + ], | |
| 79 | + name="auxglvwwep", | |
| 80 | + visible=True, | |
| 81 | + collidable=True, | |
| 82 | + tags=["button_23_R", "sys_click"], | |
| 83 | + ), | |
| 84 | + "avazowxmej": Sprite( | |
| 85 | + pixels=[ | |
| 86 | + [14, 14, -1], | |
| 87 | + [14, 14, 14], | |
| 88 | + [14, 14, 14], | |
| 89 | + [14, 14, -1], | |
| 90 | + ], | |
| 91 | + name="avazowxmej", | |
| 92 | + visible=True, | |
| 93 | + collidable=True, | |
| 94 | + tags=["button_18_R", "sys_click"], | |
| 95 | + ), | |
| 96 | + "aydooxtcli": Sprite( | |
| 97 | + pixels=[ | |
| 98 | + [9, 9], | |
| 99 | + [9, 9], | |
| 100 | + ], | |
| 101 | + name="aydooxtcli", | |
| 102 | + visible=True, | |
| 103 | + collidable=True, | |
| 104 | + tags=["tile"], | |
| 105 | + ), | |
| 106 | + "azkpmswird": Sprite( | |
| 107 | + pixels=[ | |
| 108 | + [14, 14, -1], | |
| 109 | + [14, 14, 14], | |
| 110 | + [14, 14, 14], | |
| 111 | + [14, 14, -1], | |
| 112 | + ], | |
| 113 | + name="azkpmswird", | |
| 114 | + visible=True, | |
| 115 | + collidable=True, | |
| 116 | + tags=["button_8_R", "sys_click"], | |
| 117 | + ), | |
| 118 | + "bbxrzomunc": Sprite( | |
| 119 | + pixels=[ | |
| 120 | + [14, 14, -1], | |
| 121 | + [14, 14, 14], | |
| 122 | + [14, 14, 14], | |
| 123 | + [14, 14, -1], | |
| 124 | + ], | |
| 125 | + name="bbxrzomunc", | |
| 126 | + visible=True, | |
| 127 | + collidable=True, | |
| 128 | + tags=["button_11_R", "sys_click"], | |
| 129 | + ), | |
| 130 | + "bghvgbtwcb": Sprite( | |
| 131 | + pixels=[ | |
| 132 | + [11, -1, -1, 11], | |
| 133 | + [-1, -1, -1, -1], | |
| 134 | + [-1, -1, -1, -1], | |
| 135 | + [11, -1, -1, 11], | |
| 136 | + ], | |
| 137 | + name="bghvgbtwcb", | |
| 138 | + visible=True, | |
| 139 | + collidable=True, | |
| 140 | + tags=["bghvgbtwcb"], | |
| 141 | + ), | |
| 142 | + "cfhhkdewbs": Sprite( | |
| 143 | + pixels=[ | |
| 144 | + [14, 14, -1], | |
| 145 | + [14, 14, 14], | |
| 146 | + [14, 14, 14], | |
| 147 | + [14, 14, -1], | |
| 148 | + ], | |
| 149 | + name="cfhhkdewbs", | |
| 150 | + visible=True, | |
| 151 | + collidable=True, | |
| 152 | + tags=["button_3_R", "sys_click"], | |
| 153 | + ), | |
| 154 | + "cgkbezvpdp": Sprite( | |
| 155 | + pixels=[ | |
| 156 | + [14, 14, -1], | |
| 157 | + [14, 14, 14], | |
| 158 | + [14, 14, 14], | |
| 159 | + [14, 14, -1], | |
| 160 | + ], | |
| 161 | + name="cgkbezvpdp", | |
| 162 | + visible=True, | |
| 163 | + collidable=True, | |
| 164 | + tags=["button_9_R", "sys_click"], | |
| 165 | + ), | |
| 166 | + "chwujwypuk": Sprite( | |
| 167 | + pixels=[ | |
| 168 | + [-1, 8, 8], | |
| 169 | + [8, 8, 8], | |
| 170 | + [8, 8, 8], | |
| 171 | + [-1, 8, 8], | |
| 172 | + ], | |
| 173 | + name="chwujwypuk", | |
| 174 | + visible=True, | |
| 175 | + collidable=True, | |
| 176 | + tags=["button_2_L", "sys_click"], | |
| 177 | + ), | |
| 178 | + "cjcssvobei": Sprite( | |
| 179 | + pixels=[ | |
| 180 | + [14, 14, -1], | |
| 181 | + [14, 14, 14], | |
| 182 | + [14, 14, 14], | |
| 183 | + [14, 14, -1], | |
| 184 | + ], | |
| 185 | + name="cjcssvobei", | |
| 186 | + visible=True, | |
| 187 | + collidable=True, | |
| 188 | + tags=["button_I_R", "sys_click"], | |
| 189 | + ), | |
| 190 | + "ckkvkowlfm": Sprite( | |
| 191 | + pixels=[ | |
| 192 | + [-1, 8, 8], | |
| 193 | + [8, 8, 8], | |
| 194 | + [8, 8, 8], | |
| 195 | + [-1, 8, 8], | |
| 196 | + ], | |
| 197 | + name="ckkvkowlfm", | |
| 198 | + visible=True, | |
| 199 | + collidable=True, | |
| 200 | + tags=["button_26_L", "sys_click"], | |
| 201 | + ), | |
| 202 | + "cyqncaekpb": Sprite( | |
| 203 | + pixels=[ | |
| 204 | + [14, 14, -1], | |
| 205 | + [14, 14, 14], | |
| 206 | + [14, 14, 14], | |
| 207 | + [14, 14, -1], | |
| 208 | + ], | |
| 209 | + name="cyqncaekpb", | |
| 210 | + visible=True, | |
| 211 | + collidable=True, | |
| 212 | + tags=["button_1_R", "sys_click"], | |
| 213 | + ), | |
| 214 | + "djepopdkpm": Sprite( | |
| 215 | + pixels=[ | |
| 216 | + [14, 14, -1], | |
| 217 | + [14, 14, 14], | |
| 218 | + [14, 14, 14], | |
| 219 | + [14, 14, -1], | |
| 220 | + ], | |
| 221 | + name="djepopdkpm", | |
| 222 | + visible=True, | |
| 223 | + collidable=True, | |
| 224 | + tags=["button_4_R", "sys_click"], | |
| 225 | + ), | |
| 226 | + "djqnpusomv": Sprite( | |
| 227 | + pixels=[ | |
| 228 | + [-1, 8, 8], | |
| 229 | + [8, 8, 8], | |
| 230 | + [8, 8, 8], | |
| 231 | + [-1, 8, 8], | |
| 232 | + ], | |
| 233 | + name="djqnpusomv", | |
| 234 | + visible=True, | |
| 235 | + collidable=True, | |
| 236 | + tags=["button_23_L", "sys_click"], | |
| 237 | + ), | |
| 238 | + "dvvacwfchj": Sprite( | |
| 239 | + pixels=[ | |
| 240 | + [14, 14, -1], | |
| 241 | + [14, 14, 14], | |
| 242 | + [14, 14, 14], | |
| 243 | + [14, 14, -1], | |
| 244 | + ], | |
| 245 | + name="dvvacwfchj", | |
| 246 | + visible=True, | |
| 247 | + collidable=True, | |
| 248 | + tags=["button_B_R", "sys_click"], | |
| 249 | + ), | |
| 250 | + "ekpijbeoel": Sprite( | |
| 251 | + pixels=[ | |
| 252 | + [1, 1], | |
| 253 | + [1, 1], | |
| 254 | + ], | |
| 255 | + name="ekpijbeoel", | |
| 256 | + visible=True, | |
| 257 | + collidable=True, | |
| 258 | + tags=["tile"], | |
| 259 | + ), | |
| 260 | + "fdgmtkfrxl": Sprite( | |
| 261 | + pixels=[ | |
| 262 | + [12, -1, -1, 12], | |
| 263 | + [-1, -1, -1, -1], | |
| 264 | + [-1, -1, -1, -1], | |
| 265 | + [12, -1, -1, 12], | |
| 266 | + ], | |
| 267 | + name="fdgmtkfrxl", | |
| 268 | + visible=True, | |
| 269 | + collidable=True, | |
| 270 | + tags=["fdgmtkfrxl"], | |
| 271 | + ), | |
| 272 | + "fxtadqcoja": Sprite( | |
| 273 | + pixels=[ | |
| 274 | + [-1, 8, 8], | |
| 275 | + [8, 8, 8], | |
| 276 | + [8, 8, 8], | |
| 277 | + [-1, 8, 8], | |
| 278 | + ], | |
| 279 | + name="fxtadqcoja", | |
| 280 | + visible=True, | |
| 281 | + collidable=True, | |
| 282 | + tags=["button_14_L", "sys_click"], | |
| 283 | + ), | |
| 284 | + "gknuimaglj": Sprite( | |
| 285 | + pixels=[ | |
| 286 | + [14, 14, -1], | |
| 287 | + [14, 14, 14], | |
| 288 | + [14, 14, 14], | |
| 289 | + [14, 14, -1], | |
| 290 | + ], | |
| 291 | + name="gknuimaglj", | |
| 292 | + visible=True, | |
| 293 | + collidable=True, | |
| 294 | + tags=["button_24_R", "sys_click"], | |
| 295 | + ), | |
| 296 | + "gzfuxxfhxh": Sprite( | |
| 297 | + pixels=[ | |
| 298 | + [14, 14, -1], | |
| 299 | + [14, 14, 14], | |
| 300 | + [14, 14, 14], | |
| 301 | + [14, 14, -1], | |
| 302 | + ], | |
| 303 | + name="gzfuxxfhxh", | |
| 304 | + visible=True, | |
| 305 | + collidable=True, | |
| 306 | + tags=["button_L_R", "sys_click"], | |
| 307 | + ), | |
| 308 | + "hfikqtizdo": Sprite( | |
| 309 | + pixels=[ | |
| 310 | + [12, 12], | |
| 311 | + [12, 12], | |
| 312 | + ], | |
| 313 | + name="hfikqtizdo", | |
| 314 | + visible=True, | |
| 315 | + collidable=True, | |
| 316 | + tags=["goal-o"], | |
| 317 | + ), | |
| 318 | + "hiictjojxg": Sprite( | |
| 319 | + pixels=[ | |
| 320 | + [14, 14, -1], | |
| 321 | + [14, 14, 14], | |
| 322 | + [14, 14, 14], | |
| 323 | + [14, 14, -1], | |
| 324 | + ], | |
| 325 | + name="hiictjojxg", | |
| 326 | + visible=True, | |
| 327 | + collidable=True, | |
| 328 | + tags=["button_5_R", "sys_click"], | |
| 329 | + ), | |
| 330 | + "hlpgfhkhui": Sprite( | |
| 331 | + pixels=[ | |
| 332 | + [-1, 8, 8], | |
| 333 | + [8, 8, 8], | |
| 334 | + [8, 8, 8], | |
| 335 | + [-1, 8, 8], | |
| 336 | + ], | |
| 337 | + name="hlpgfhkhui", | |
| 338 | + visible=True, | |
| 339 | + collidable=True, | |
| 340 | + tags=["button_16_L", "sys_click"], | |
| 341 | + ), | |
| 342 | + "hvgvgpuasf": Sprite( | |
| 343 | + pixels=[ | |
| 344 | + [14, 14, -1], | |
| 345 | + [14, 14, 14], | |
| 346 | + [14, 14, 14], | |
| 347 | + [14, 14, -1], | |
| 348 | + ], | |
| 349 | + name="hvgvgpuasf", | |
| 350 | + visible=True, | |
| 351 | + collidable=True, | |
| 352 | + tags=["button_D_R", "sys_click"], | |
| 353 | + ), | |
| 354 | + "hyifvqmswy": Sprite( | |
| 355 | + pixels=[ | |
| 356 | + [14, 14, -1], | |
| 357 | + [14, 14, 14], | |
| 358 | + [14, 14, 14], | |
| 359 | + [14, 14, -1], | |
| 360 | + ], | |
| 361 | + name="hyifvqmswy", | |
| 362 | + visible=True, | |
| 363 | + collidable=True, | |
| 364 | + tags=["button_K_R", "sys_click"], | |
| 365 | + ), | |
| 366 | + "icgyrqkqpc": Sprite( | |
| 367 | + pixels=[ | |
| 368 | + [14, 14, -1], | |
| 369 | + [14, 14, 14], | |
| 370 | + [14, 14, 14], | |
| 371 | + [14, 14, -1], | |
| 372 | + ], | |
| 373 | + name="icgyrqkqpc", | |
| 374 | + visible=True, | |
| 375 | + collidable=True, | |
| 376 | + tags=["button_16_R", "sys_click"], | |
| 377 | + ), | |
| 378 | + "ikexwlluqt": Sprite( | |
| 379 | + pixels=[ | |
| 380 | + [14, 14, -1], | |
| 381 | + [14, 14, 14], | |
| 382 | + [14, 14, 14], | |
| 383 | + [14, 14, -1], | |
| 384 | + ], | |
| 385 | + name="ikexwlluqt", | |
| 386 | + visible=True, | |
| 387 | + collidable=True, | |
| 388 | + tags=["button_J_R", "sys_click"], | |
| 389 | + ), | |
| 390 | + "ikgydmjteo": Sprite( | |
| 391 | + pixels=[ | |
| 392 | + [14, 14, -1], | |
| 393 | + [14, 14, 14], | |
| 394 | + [14, 14, 14], | |
| 395 | + [14, 14, -1], | |
| 396 | + ], | |
| 397 | + name="ikgydmjteo", | |
| 398 | + visible=True, | |
| 399 | + collidable=True, | |
| 400 | + tags=["button_10_R", "sys_click"], | |
| 401 | + ), | |
| 402 | + "iozrrxaimm": Sprite( | |
| 403 | + pixels=[ | |
| 404 | + [-1, 8, 8], | |
| 405 | + [8, 8, 8], | |
| 406 | + [8, 8, 8], | |
| 407 | + [-1, 8, 8], | |
| 408 | + ], | |
| 409 | + name="iozrrxaimm", | |
| 410 | + visible=True, | |
| 411 | + collidable=True, | |
| 412 | + tags=["button_27_L", "sys_click"], | |
| 413 | + ), | |
| 414 | + "isjrkszgff": Sprite( | |
| 415 | + pixels=[ | |
| 416 | + [14, 14, -1], | |
| 417 | + [14, 14, 14], | |
| 418 | + [14, 14, 14], | |
| 419 | + [14, 14, -1], | |
| 420 | + ], | |
| 421 | + name="isjrkszgff", | |
| 422 | + visible=True, | |
| 423 | + collidable=True, | |
| 424 | + tags=["button_22_R", "sys_click"], | |
| 425 | + ), | |
| 426 | + "jxibbjkyqn": Sprite( | |
| 427 | + pixels=[ | |
| 428 | + [14, 14, -1], | |
| 429 | + [14, 14, 14], | |
| 430 | + [14, 14, 14], | |
| 431 | + [14, 14, -1], | |
| 432 | + ], | |
| 433 | + name="jxibbjkyqn", | |
| 434 | + visible=True, | |
| 435 | + collidable=True, | |
| 436 | + tags=["button_12_R", "sys_click"], | |
| 437 | + ), | |
| 438 | + "kcuuamovad": Sprite( | |
| 439 | + pixels=[ | |
| 440 | + [14, 14, -1], | |
| 441 | + [14, 14, 14], | |
| 442 | + [14, 14, 14], | |
| 443 | + [14, 14, -1], | |
| 444 | + ], | |
| 445 | + name="kcuuamovad", | |
| 446 | + visible=True, | |
| 447 | + collidable=True, | |
| 448 | + tags=["button_17_R", "sys_click"], | |
| 449 | + ), | |
| 450 | + "kisflvfvsy": Sprite( | |
| 451 | + pixels=[ | |
| 452 | + [10, 10], | |
| 453 | + [10, 10], | |
| 454 | + ], | |
| 455 | + name="kisflvfvsy", | |
| 456 | + visible=True, | |
| 457 | + collidable=True, | |
| 458 | + tags=["tile"], | |
| 459 | + ), | |
| 460 | + "ksnvdjtrfm": Sprite( | |
| 461 | + pixels=[ | |
| 462 | + [-1, 8, 8], | |
| 463 | + [8, 8, 8], | |
| 464 | + [8, 8, 8], | |
| 465 | + [-1, 8, 8], | |
| 466 | + ], | |
| 467 | + name="ksnvdjtrfm", | |
| 468 | + visible=True, | |
| 469 | + collidable=True, | |
| 470 | + tags=["button_7_L", "sys_click"], | |
| 471 | + ), | |
| 472 | + "kzjtnfvqjg": Sprite( | |
| 473 | + pixels=[ | |
| 474 | + [-1, 8, 8], | |
| 475 | + [8, 8, 8], | |
| 476 | + [8, 8, 8], | |
| 477 | + [-1, 8, 8], | |
| 478 | + ], | |
| 479 | + name="kzjtnfvqjg", | |
| 480 | + visible=True, | |
| 481 | + collidable=True, | |
| 482 | + tags=["button_4_L", "sys_click"], | |
| 483 | + ), | |
| 484 | + "lfcynjbowf": Sprite( | |
| 485 | + pixels=[ | |
| 486 | + [14, 14, -1], | |
| 487 | + [14, 14, 14], | |
| 488 | + [14, 14, 14], | |
| 489 | + [14, 14, -1], | |
| 490 | + ], | |
| 491 | + name="lfcynjbowf", | |
| 492 | + visible=True, | |
| 493 | + collidable=True, | |
| 494 | + tags=["button_2_R", "sys_click"], | |
| 495 | + ), | |
| 496 | + "lfimxyubtw": Sprite( | |
| 497 | + pixels=[ | |
| 498 | + [-1, 8, 8], | |
| 499 | + [8, 8, 8], | |
| 500 | + [8, 8, 8], | |
| 501 | + [-1, 8, 8], | |
| 502 | + ], | |
| 503 | + name="lfimxyubtw", | |
| 504 | + visible=True, | |
| 505 | + collidable=True, | |
| 506 | + tags=["button_E_L", "sys_click"], | |
| 507 | + ), | |
| 508 | + "lnnponqnto": Sprite( | |
| 509 | + pixels=[ | |
| 510 | + [14, 14, -1], | |
| 511 | + [14, 14, 14], | |
| 512 | + [14, 14, 14], | |
| 513 | + [14, 14, -1], | |
| 514 | + ], | |
| 515 | + name="lnnponqnto", | |
| 516 | + visible=True, | |
| 517 | + collidable=True, | |
| 518 | + tags=["button_6_R", "sys_click"], | |
| 519 | + ), | |
| 520 | + "lqtjzsqwtz": Sprite( | |
| 521 | + pixels=[ | |
| 522 | + [14, 14, -1], | |
| 523 | + [14, 14, 14], | |
| 524 | + [14, 14, 14], | |
| 525 | + [14, 14, -1], | |
| 526 | + ], | |
| 527 | + name="lqtjzsqwtz", | |
| 528 | + visible=True, | |
| 529 | + collidable=True, | |
| 530 | + tags=["button_20_R", "sys_click"], | |
| 531 | + ), | |
| 532 | + "mchtsgjpjm": Sprite( | |
| 533 | + pixels=[ | |
| 534 | + [-1, 8, 8], | |
| 535 | + [8, 8, 8], | |
| 536 | + [8, 8, 8], | |
| 537 | + [-1, 8, 8], | |
| 538 | + ], | |
| 539 | + name="mchtsgjpjm", | |
| 540 | + visible=True, | |
| 541 | + collidable=True, | |
| 542 | + tags=["button_12_L", "sys_click"], | |
| 543 | + ), | |
| 544 | + "msmalfqpgt": Sprite( | |
| 545 | + pixels=[ | |
| 546 | + [-1, 8, 8], | |
| 547 | + [8, 8, 8], | |
| 548 | + [8, 8, 8], | |
| 549 | + [-1, 8, 8], | |
| 550 | + ], | |
| 551 | + name="msmalfqpgt", | |
| 552 | + visible=True, | |
| 553 | + collidable=True, | |
| 554 | + tags=["button_10_L", "sys_click"], | |
| 555 | + ), | |
| 556 | + "nidhkbeymj": Sprite( | |
| 557 | + pixels=[ | |
| 558 | + [-1, 8, 8], | |
| 559 | + [8, 8, 8], | |
| 560 | + [8, 8, 8], | |
| 561 | + [-1, 8, 8], | |
| 562 | + ], | |
| 563 | + name="nidhkbeymj", | |
| 564 | + visible=True, | |
| 565 | + collidable=True, | |
| 566 | + tags=["button_5_L", "sys_click"], | |
| 567 | + ), | |
| 568 | + "npiudvzxms": Sprite( | |
| 569 | + pixels=[ | |
| 570 | + [-1, 8, 8], | |
| 571 | + [8, 8, 8], | |
| 572 | + [8, 8, 8], | |
| 573 | + [-1, 8, 8], | |
| 574 | + ], | |
| 575 | + name="npiudvzxms", | |
| 576 | + visible=True, | |
| 577 | + collidable=True, | |
| 578 | + tags=["button_3_L", "sys_click"], | |
| 579 | + ), | |
| 580 | + "odkpvwbihk": Sprite( | |
| 581 | + pixels=[ | |
| 582 | + [11, 11], | |
| 583 | + [11, 11], | |
| 584 | + ], | |
| 585 | + name="odkpvwbihk", | |
| 586 | + visible=True, | |
| 587 | + collidable=True, | |
| 588 | + tags=["goal"], | |
| 589 | + ), | |
| 590 | + "olznmtqgqf": Sprite( | |
| 591 | + pixels=[ | |
| 592 | + [-1, 8, 8], | |
| 593 | + [8, 8, 8], | |
| 594 | + [8, 8, 8], | |
| 595 | + [-1, 8, 8], | |
| 596 | + ], | |
| 597 | + name="olznmtqgqf", | |
| 598 | + visible=True, | |
| 599 | + collidable=True, | |
| 600 | + tags=["button_20_L", "sys_click"], | |
| 601 | + ), | |
| 602 | + "oqsumsdlyg": Sprite( | |
| 603 | + pixels=[ | |
| 604 | + [-1, 8, 8], | |
| 605 | + [8, 8, 8], | |
| 606 | + [8, 8, 8], | |
| 607 | + [-1, 8, 8], | |
| 608 | + ], | |
| 609 | + name="oqsumsdlyg", | |
| 610 | + visible=True, | |
| 611 | + collidable=True, | |
| 612 | + tags=["button_D_L", "sys_click"], | |
| 613 | + ), | |
| 614 | + "peuddygayw": Sprite( | |
| 615 | + pixels=[ | |
| 616 | + [-1, 8, 8], | |
| 617 | + [8, 8, 8], | |
| 618 | + [8, 8, 8], | |
| 619 | + [-1, 8, 8], | |
| 620 | + ], | |
| 621 | + name="peuddygayw", | |
| 622 | + visible=True, | |
| 623 | + collidable=True, | |
| 624 | + tags=["button_B_L", "sys_click"], | |
| 625 | + ), | |
| 626 | + "pispbshofi": Sprite( | |
| 627 | + pixels=[ | |
| 628 | + [-1, 8, 8], | |
| 629 | + [8, 8, 8], | |
| 630 | + [8, 8, 8], | |
| 631 | + [-1, 8, 8], | |
| 632 | + ], | |
| 633 | + name="pispbshofi", | |
| 634 | + visible=True, | |
| 635 | + collidable=True, | |
| 636 | + tags=["button_G_L", "sys_click"], | |
| 637 | + ), | |
| 638 | + "qfmlfsmppb": Sprite( | |
| 639 | + pixels=[ | |
| 640 | + [14, 14, -1], | |
| 641 | + [14, 14, 14], | |
| 642 | + [14, 14, 14], | |
| 643 | + [14, 14, -1], | |
| 644 | + ], | |
| 645 | + name="qfmlfsmppb", | |
| 646 | + visible=True, | |
| 647 | + collidable=True, | |
| 648 | + tags=["button_14_R", "sys_click"], | |
| 649 | + ), | |
| 650 | + "qiezkvylfa": Sprite( | |
| 651 | + pixels=[ | |
| 652 | + [-1, 8, 8], | |
| 653 | + [8, 8, 8], | |
| 654 | + [8, 8, 8], | |
| 655 | + [-1, 8, 8], | |
| 656 | + ], | |
| 657 | + name="qiezkvylfa", | |
| 658 | + visible=True, | |
| 659 | + collidable=True, | |
| 660 | + tags=["button_13_L", "sys_click"], | |
| 661 | + ), | |
| 662 | + "qwjjziosdl": Sprite( | |
| 663 | + pixels=[ | |
| 664 | + [-1, 8, 8], | |
| 665 | + [8, 8, 8], | |
| 666 | + [8, 8, 8], | |
| 667 | + [-1, 8, 8], | |
| 668 | + ], | |
| 669 | + name="qwjjziosdl", | |
| 670 | + visible=True, | |
| 671 | + collidable=True, | |
| 672 | + tags=["button_21_L", "sys_click"], | |
| 673 | + ), | |
| 674 | + "reafrgzfwk": Sprite( | |
| 675 | + pixels=[ | |
| 676 | + [14, 14, -1], | |
| 677 | + [14, 14, 14], | |
| 678 | + [14, 14, 14], | |
| 679 | + [14, 14, -1], | |
| 680 | + ], | |
| 681 | + name="reafrgzfwk", | |
| 682 | + visible=True, | |
| 683 | + collidable=True, | |
| 684 | + tags=["button_C_R", "sys_click"], | |
| 685 | + ), | |
| 686 | + "rhyksubvjk": Sprite( | |
| 687 | + pixels=[ | |
| 688 | + [14, 14, -1], | |
| 689 | + [14, 14, 14], | |
| 690 | + [14, 14, 14], | |
| 691 | + [14, 14, -1], | |
| 692 | + ], | |
| 693 | + name="rhyksubvjk", | |
| 694 | + visible=True, | |
| 695 | + collidable=True, | |
| 696 | + tags=["button_19_R", "sys_click"], | |
| 697 | + ), | |
| 698 | + "rltccsmmjh": Sprite( | |
| 699 | + pixels=[ | |
| 700 | + [-1, 8, 8], | |
| 701 | + [8, 8, 8], | |
| 702 | + [8, 8, 8], | |
| 703 | + [-1, 8, 8], | |
| 704 | + ], | |
| 705 | + name="rltccsmmjh", | |
| 706 | + visible=True, | |
| 707 | + collidable=True, | |
| 708 | + tags=["button_I_L", "sys_click"], | |
| 709 | + ), | |
| 710 | + "rslwkirzds": Sprite( | |
| 711 | + pixels=[ | |
| 712 | + [-1, 8, 8], | |
| 713 | + [8, 8, 8], | |
| 714 | + [8, 8, 8], | |
| 715 | + [-1, 8, 8], | |
| 716 | + ], | |
| 717 | + name="rslwkirzds", | |
| 718 | + visible=True, | |
| 719 | + collidable=True, | |
| 720 | + tags=["button_19_L", "sys_click"], | |
| 721 | + ), | |
| 722 | + "sbogwsxcvo": Sprite( | |
| 723 | + pixels=[ | |
| 724 | + [14, 14, -1], | |
| 725 | + [14, 14, 14], | |
| 726 | + [14, 14, 14], | |
| 727 | + [14, 14, -1], | |
| 728 | + ], | |
| 729 | + name="sbogwsxcvo", | |
| 730 | + visible=True, | |
| 731 | + collidable=True, | |
| 732 | + tags=["button_E_R", "sys_click"], | |
| 733 | + ), | |
| 734 | + "sjummcsymu": Sprite( | |
| 735 | + pixels=[ | |
| 736 | + [-1, 8, 8], | |
| 737 | + [8, 8, 8], | |
| 738 | + [8, 8, 8], | |
| 739 | + [-1, 8, 8], | |
| 740 | + ], | |
| 741 | + name="sjummcsymu", | |
| 742 | + visible=True, | |
| 743 | + collidable=True, | |
| 744 | + tags=["button_F_L", "sys_click"], | |
| 745 | + ), | |
| 746 | + "sklqiglcbh": Sprite( | |
| 747 | + pixels=[ | |
| 748 | + [-1, 8, 8], | |
| 749 | + [8, 8, 8], | |
| 750 | + [8, 8, 8], | |
| 751 | + [-1, 8, 8], | |
| 752 | + ], | |
| 753 | + name="sklqiglcbh", | |
| 754 | + visible=True, | |
| 755 | + collidable=True, | |
| 756 | + tags=["button_18_L", "sys_click"], | |
| 757 | + ), | |
| 758 | + "slefrnjymo": Sprite( | |
| 759 | + pixels=[ | |
| 760 | + [2, 2], | |
| 761 | + [2, 2], | |
| 762 | + ], | |
| 763 | + name="slefrnjymo", | |
| 764 | + visible=True, | |
| 765 | + collidable=True, | |
| 766 | + tags=["tile"], | |
| 767 | + ), | |
| 768 | + "squvkghyif": Sprite( | |
| 769 | + pixels=[ | |
| 770 | + [-1, 8, 8], | |
| 771 | + [8, 8, 8], | |
| 772 | + [8, 8, 8], | |
| 773 | + [-1, 8, 8], | |
| 774 | + ], | |
| 775 | + name="squvkghyif", | |
| 776 | + visible=True, | |
| 777 | + collidable=True, | |
| 778 | + tags=["button_H_L", "sys_click"], | |
| 779 | + ), | |
| 780 | + "tcweaqkrko": Sprite( | |
| 781 | + pixels=[ | |
| 782 | + [14, 14, -1], | |
| 783 | + [14, 14, 14], | |
| 784 | + [14, 14, 14], | |
| 785 | + [14, 14, -1], | |
| 786 | + ], | |
| 787 | + name="tcweaqkrko", | |
| 788 | + visible=True, | |
| 789 | + collidable=True, | |
| 790 | + tags=["button_15_R", "sys_click"], | |
| 791 | + ), | |
| 792 | + "tddzizwhzf": Sprite( | |
| 793 | + pixels=[ | |
| 794 | + [15, 15], | |
| 795 | + [15, 15], | |
| 796 | + ], | |
| 797 | + name="tddzizwhzf", | |
| 798 | + visible=True, | |
| 799 | + collidable=True, | |
| 800 | + tags=["tile"], | |
| 801 | + ), | |
| 802 | + "tohldkeyto": Sprite( | |
| 803 | + pixels=[ | |
| 804 | + [-1, 8, 8], | |
| 805 | + [8, 8, 8], | |
| 806 | + [8, 8, 8], | |
| 807 | + [-1, 8, 8], | |
| 808 | + ], | |
| 809 | + name="tohldkeyto", | |
| 810 | + visible=True, | |
| 811 | + collidable=True, | |
| 812 | + tags=["button_1_L", "sys_click"], | |
| 813 | + ), | |
| 814 | + "uqipjzobpp": Sprite( | |
| 815 | + pixels=[ | |
| 816 | + [14, 14, -1], | |
| 817 | + [14, 14, 14], | |
| 818 | + [14, 14, 14], | |
| 819 | + [14, 14, -1], | |
| 820 | + ], | |
| 821 | + name="uqipjzobpp", | |
| 822 | + visible=True, | |
| 823 | + collidable=True, | |
| 824 | + tags=["button_F_R", "sys_click"], | |
| 825 | + ), | |
| 826 | + "uyqbibneuw": Sprite( | |
| 827 | + pixels=[ | |
| 828 | + [-1, 8, 8], | |
| 829 | + [8, 8, 8], | |
| 830 | + [8, 8, 8], | |
| 831 | + [-1, 8, 8], | |
| 832 | + ], | |
| 833 | + name="uyqbibneuw", | |
| 834 | + visible=True, | |
| 835 | + collidable=True, | |
| 836 | + tags=["button_15_L", "sys_click"], | |
| 837 | + ), | |
| 838 | + "vdeasuthve": Sprite( | |
| 839 | + pixels=[ | |
| 840 | + [-1, 8, 8], | |
| 841 | + [8, 8, 8], | |
| 842 | + [8, 8, 8], | |
| 843 | + [-1, 8, 8], | |
| 844 | + ], | |
| 845 | + name="vdeasuthve", | |
| 846 | + visible=True, | |
| 847 | + collidable=True, | |
| 848 | + tags=["button_6_L", "sys_click"], | |
| 849 | + ), | |
| 850 | + "vdjpajqpny": Sprite( | |
| 851 | + pixels=[ | |
| 852 | + [14, 14, -1], | |
| 853 | + [14, 14, 14], | |
| 854 | + [14, 14, 14], | |
| 855 | + [14, 14, -1], | |
| 856 | + ], | |
| 857 | + name="vdjpajqpny", | |
| 858 | + visible=True, | |
| 859 | + collidable=True, | |
| 860 | + tags=["button_21_R", "sys_click"], | |
| 861 | + ), | |
| 862 | + "viyoficcma": Sprite( | |
| 863 | + pixels=[ | |
| 864 | + [-1, 8, 8], | |
| 865 | + [8, 8, 8], | |
| 866 | + [8, 8, 8], | |
| 867 | + [-1, 8, 8], | |
| 868 | + ], | |
| 869 | + name="viyoficcma", | |
| 870 | + visible=True, | |
| 871 | + collidable=True, | |
| 872 | + tags=["button_11_L", "sys_click"], | |
| 873 | + ), | |
| 874 | + "vwassicppq": Sprite( | |
| 875 | + pixels=[ | |
| 876 | + [-1, 8, 8], | |
| 877 | + [8, 8, 8], | |
| 878 | + [8, 8, 8], | |
| 879 | + [-1, 8, 8], | |
| 880 | + ], | |
| 881 | + name="vwassicppq", | |
| 882 | + visible=True, | |
| 883 | + collidable=True, | |
| 884 | + tags=["button_L_L", "sys_click"], | |
| 885 | + ), | |
| 886 | + "vwwnrphkjt": Sprite( | |
| 887 | + pixels=[ | |
| 888 | + [14, 14, -1], | |
| 889 | + [14, 14, 14], | |
| 890 | + [14, 14, 14], | |
| 891 | + [14, 14, -1], | |
| 892 | + ], | |
| 893 | + name="vwwnrphkjt", | |
| 894 | + visible=True, | |
| 895 | + collidable=True, | |
| 896 | + tags=["button_M_R", "sys_click"], | |
| 897 | + ), | |
| 898 | + "wnmnhngnez": Sprite( | |
| 899 | + pixels=[ | |
| 900 | + [-1, 8, 8], | |
| 901 | + [8, 8, 8], | |
| 902 | + [8, 8, 8], | |
| 903 | + [-1, 8, 8], | |
| 904 | + ], | |
| 905 | + name="wnmnhngnez", | |
| 906 | + visible=True, | |
| 907 | + collidable=True, | |
| 908 | + tags=["button_K_L", "sys_click"], | |
| 909 | + ), | |
| 910 | + "wonxgysgjx": Sprite( | |
| 911 | + pixels=[ | |
| 912 | + [-1, 8, 8], | |
| 913 | + [8, 8, 8], | |
| 914 | + [8, 8, 8], | |
| 915 | + [-1, 8, 8], | |
| 916 | + ], | |
| 917 | + name="wonxgysgjx", | |
| 918 | + visible=True, | |
| 919 | + collidable=True, | |
| 920 | + tags=["button_M_L", "sys_click"], | |
| 921 | + ), | |
| 922 | + "wvgpslgvch": Sprite( | |
| 923 | + pixels=[ | |
| 924 | + [-1, 8, 8], | |
| 925 | + [8, 8, 8], | |
| 926 | + [8, 8, 8], | |
| 927 | + [-1, 8, 8], | |
| 928 | + ], | |
| 929 | + name="wvgpslgvch", | |
| 930 | + visible=True, | |
| 931 | + collidable=True, | |
| 932 | + tags=["button_22_L", "sys_click"], | |
| 933 | + ), | |
| 934 | + "wxlzrpcmji": Sprite( | |
| 935 | + pixels=[ | |
| 936 | + [-1, 8, 8], | |
| 937 | + [8, 8, 8], | |
| 938 | + [8, 8, 8], | |
| 939 | + [-1, 8, 8], | |
| 940 | + ], | |
| 941 | + name="wxlzrpcmji", | |
| 942 | + visible=True, | |
| 943 | + collidable=True, | |
| 944 | + tags=["button_9_L", "sys_click"], | |
| 945 | + ), | |
| 946 | + "xtxayxwyfn": Sprite( | |
| 947 | + pixels=[ | |
| 948 | + [14, 14, -1], | |
| 949 | + [14, 14, 14], | |
| 950 | + [14, 14, 14], | |
| 951 | + [14, 14, -1], | |
| 952 | + ], | |
| 953 | + name="xtxayxwyfn", | |
| 954 | + visible=True, | |
| 955 | + collidable=True, | |
| 956 | + tags=["button_G_R", "sys_click"], | |
| 957 | + ), | |
| 958 | + "ycdtvcgsiu": Sprite( | |
| 959 | + pixels=[ | |
| 960 | + [-1, 8, 8], | |
| 961 | + [8, 8, 8], | |
| 962 | + [8, 8, 8], | |
| 963 | + [-1, 8, 8], | |
| 964 | + ], | |
| 965 | + name="ycdtvcgsiu", | |
| 966 | + visible=True, | |
| 967 | + collidable=True, | |
| 968 | + tags=["button_25_L", "sys_click"], | |
| 969 | + ), | |
| 970 | + "yjdrfgspyl": Sprite( | |
| 971 | + pixels=[ | |
| 972 | + [-1, 8, 8], | |
| 973 | + [8, 8, 8], | |
| 974 | + [8, 8, 8], | |
| 975 | + [-1, 8, 8], | |
| 976 | + ], | |
| 977 | + name="yjdrfgspyl", | |
| 978 | + visible=True, | |
| 979 | + collidable=True, | |
| 980 | + tags=["button_8_L", "sys_click"], | |
| 981 | + ), | |
| 982 | + "ymwkwkfxct": Sprite( | |
| 983 | + pixels=[ | |
| 984 | + [-1, 8, 8], | |
| 985 | + [8, 8, 8], | |
| 986 | + [8, 8, 8], | |
| 987 | + [-1, 8, 8], | |
| 988 | + ], | |
| 989 | + name="ymwkwkfxct", | |
| 990 | + visible=True, | |
| 991 | + collidable=True, | |
| 992 | + tags=["button_C_L", "sys_click"], | |
| 993 | + ), | |
| 994 | + "ypbsjakojf": Sprite( | |
| 995 | + pixels=[ | |
| 996 | + [14, 14, -1], | |
| 997 | + [14, 14, 14], | |
| 998 | + [14, 14, 14], | |
| 999 | + [14, 14, -1], | |
| 1000 | + ], | |
| 1001 | + name="ypbsjakojf", | |
| 1002 | + visible=True, | |
| 1003 | + collidable=True, | |
| 1004 | + tags=["button_7_R", "sys_click"], | |
| 1005 | + ), | |
| 1006 | + "yqgkbwbeag": Sprite( | |
| 1007 | + pixels=[ | |
| 1008 | + [-1, 8, 8], | |
| 1009 | + [8, 8, 8], | |
| 1010 | + [8, 8, 8], | |
| 1011 | + [-1, 8, 8], | |
| 1012 | + ], | |
| 1013 | + name="yqgkbwbeag", | |
| 1014 | + visible=True, | |
| 1015 | + collidable=True, | |
| 1016 | + tags=["button_24_L", "sys_click"], | |
| 1017 | + ), | |
| 1018 | + "yyxhanzsay": Sprite( | |
| 1019 | + pixels=[ | |
| 1020 | + [-1, 8, 8], | |
| 1021 | + [8, 8, 8], | |
| 1022 | + [8, 8, 8], | |
| 1023 | + [-1, 8, 8], | |
| 1024 | + ], | |
| 1025 | + name="yyxhanzsay", | |
| 1026 | + visible=True, | |
| 1027 | + collidable=True, | |
| 1028 | + tags=["button_17_L", "sys_click"], | |
| 1029 | + ), | |
| 1030 | + "zapbjqjgij": Sprite( | |
| 1031 | + pixels=[ | |
| 1032 | + [-1, 8, 8], | |
| 1033 | + [8, 8, 8], | |
| 1034 | + [8, 8, 8], | |
| 1035 | + [-1, 8, 8], | |
| 1036 | + ], | |
| 1037 | + name="zapbjqjgij", | |
| 1038 | + visible=True, | |
| 1039 | + collidable=True, | |
| 1040 | + tags=["button_J_L", "sys_click"], | |
| 1041 | + ), | |
| 1042 | + "zdlwfpeyyd": Sprite( | |
| 1043 | + pixels=[ | |
| 1044 | + [14, 14, -1], | |
| 1045 | + [14, 14, 14], | |
| 1046 | + [14, 14, 14], | |
| 1047 | + [14, 14, -1], | |
| 1048 | + ], | |
| 1049 | + name="zdlwfpeyyd", | |
| 1050 | + visible=True, | |
| 1051 | + collidable=True, | |
| 1052 | + tags=["button_H_R", "sys_click"], | |
| 1053 | + ), | |
| 1054 | + "zpxgvxwdex": Sprite( | |
| 1055 | + pixels=[ | |
| 1056 | + [14, 14, -1], | |
| 1057 | + [14, 14, 14], | |
| 1058 | + [14, 14, 14], | |
| 1059 | + [14, 14, -1], | |
| 1060 | + ], | |
| 1061 | + name="zpxgvxwdex", | |
| 1062 | + visible=True, | |
| 1063 | + collidable=True, | |
| 1064 | + tags=["button_A_R", "sys_click"], | |
| 1065 | + ), | |
| 1066 | + "zrzovwqbcx": Sprite( | |
| 1067 | + pixels=[ | |
| 1068 | + [14, 14, -1], | |
| 1069 | + [14, 14, 14], | |
| 1070 | + [14, 14, 14], | |
| 1071 | + [14, 14, -1], | |
| 1072 | + ], | |
| 1073 | + name="zrzovwqbcx", | |
| 1074 | + visible=True, | |
| 1075 | + collidable=True, | |
| 1076 | + tags=["button_25_R", "sys_click"], | |
| 1077 | + ), | |
| 1078 | + "zseotqksli": Sprite( | |
| 1079 | + pixels=[ | |
| 1080 | + [14, 14, -1], | |
| 1081 | + [14, 14, 14], | |
| 1082 | + [14, 14, 14], | |
| 1083 | + [14, 14, -1], | |
| 1084 | + ], | |
| 1085 | + name="zseotqksli", | |
| 1086 | + visible=True, | |
| 1087 | + collidable=True, | |
| 1088 | + tags=["button_26_R", "sys_click"], | |
| 1089 | + ), | |
| 1090 | +} | |
| 1091 | +levels = [ | |
| 1092 | + # Level 1 | |
| 1093 | + Level( | |
| 1094 | + sprites=[ | |
| 1095 | + sprites["ahdesifykt"].clone().set_position(1, 8), | |
| 1096 | + sprites["aydooxtcli"].clone().set_position(15, 3), | |
| 1097 | + sprites["aydooxtcli"].clone().set_position(24, 9), | |
| 1098 | + sprites["aydooxtcli"].clone().set_position(12, 15), | |
| 1099 | + sprites["aydooxtcli"].clone().set_position(15, 15), | |
| 1100 | + sprites["bghvgbtwcb"].clone().set_position(5, 2), | |
| 1101 | + sprites["ekpijbeoel"].clone().set_position(6, 3), | |
| 1102 | + sprites["ekpijbeoel"].clone().set_position(9, 15), | |
| 1103 | + sprites["ekpijbeoel"].clone().set_position(6, 15), | |
| 1104 | + sprites["kisflvfvsy"].clone().set_position(12, 3), | |
| 1105 | + sprites["kisflvfvsy"].clone().set_position(24, 12), | |
| 1106 | + sprites["kisflvfvsy"].clone().set_position(18, 15), | |
| 1107 | + sprites["kisflvfvsy"].clone().set_position(6, 6), | |
| 1108 | + sprites["odkpvwbihk"].clone().set_position(21, 3), | |
| 1109 | + sprites["slefrnjymo"].clone().set_position(9, 3), | |
| 1110 | + sprites["slefrnjymo"].clone().set_position(24, 3), | |
| 1111 | + sprites["slefrnjymo"].clone().set_position(24, 15), | |
| 1112 | + sprites["slefrnjymo"].clone().set_position(6, 12), | |
| 1113 | + sprites["tddzizwhzf"].clone().set_position(18, 3), | |
| 1114 | + sprites["tddzizwhzf"].clone().set_position(24, 6), | |
| 1115 | + sprites["tddzizwhzf"].clone().set_position(21, 15), | |
| 1116 | + sprites["tddzizwhzf"].clone().set_position(6, 9), | |
| 1117 | + sprites["zpxgvxwdex"].clone().set_position(28, 8), | |
| 1118 | + ], | |
| 1119 | + grid_size=(32, 19), | |
| 1120 | + data={ | |
| 1121 | + "StepCounter": 13, | |
| 1122 | + "level_name": "kdrsqrvpwb", | |
| 1123 | + }, | |
| 1124 | + ), | |
| 1125 | + # Level 2 | |
| 1126 | + Level( | |
| 1127 | + sprites=[ | |
| 1128 | + sprites["ahdesifykt"].clone().set_position(8, 5), | |
| 1129 | + sprites["aydooxtcli"].clone().set_position(15, 6), | |
| 1130 | + sprites["aydooxtcli"].clone().set_position(24, 9), | |
| 1131 | + sprites["aydooxtcli"].clone().set_position(9, 15), | |
| 1132 | + sprites["aydooxtcli"].clone().set_position(12, 15), | |
| 1133 | + sprites["aydooxtcli"].clone().set_position(12, 24), | |
| 1134 | + sprites["aydooxtcli"].clone().set_position(27, 24), | |
| 1135 | + sprites["aydooxtcli"].clone().set_position(24, 30), | |
| 1136 | + sprites["aydooxtcli"].clone().set_position(18, 24), | |
| 1137 | + sprites["bghvgbtwcb"].clone().set_position(23, 14), | |
| 1138 | + sprites["bghvgbtwcb"].clone().set_position(23, 23), | |
| 1139 | + sprites["dvvacwfchj"].clone().set_position(36, 14), | |
| 1140 | + sprites["ekpijbeoel"].clone().set_position(12, 18), | |
| 1141 | + sprites["ekpijbeoel"].clone().set_position(6, 15), | |
| 1142 | + sprites["ekpijbeoel"].clone().set_position(15, 15), | |
| 1143 | + sprites["ekpijbeoel"].clone().set_position(24, 18), | |
| 1144 | + sprites["ekpijbeoel"].clone().set_position(24, 27), | |
| 1145 | + sprites["ekpijbeoel"].clone().set_position(15, 24), | |
| 1146 | + sprites["ekpijbeoel"].clone().set_position(12, 21), | |
| 1147 | + sprites["ekpijbeoel"].clone().set_position(6, 24), | |
| 1148 | + sprites["kisflvfvsy"].clone().set_position(12, 6), | |
| 1149 | + sprites["kisflvfvsy"].clone().set_position(24, 12), | |
| 1150 | + sprites["kisflvfvsy"].clone().set_position(18, 15), | |
| 1151 | + sprites["kisflvfvsy"].clone().set_position(12, 33), | |
| 1152 | + sprites["kisflvfvsy"].clone().set_position(33, 24), | |
| 1153 | + sprites["kisflvfvsy"].clone().set_position(27, 15), | |
| 1154 | + sprites["kisflvfvsy"].clone().set_position(21, 24), | |
| 1155 | + sprites["kisflvfvsy"].clone().set_position(15, 33), | |
| 1156 | + sprites["kisflvfvsy"].clone().set_position(9, 24), | |
| 1157 | + sprites["odkpvwbihk"].clone().set_position(21, 6), | |
| 1158 | + sprites["odkpvwbihk"].clone().set_position(12, 27), | |
| 1159 | + sprites["peuddygayw"].clone().set_position(2, 14), | |
| 1160 | + sprites["reafrgzfwk"].clone().set_position(36, 23), | |
| 1161 | + sprites["slefrnjymo"].clone().set_position(30, 15), | |
| 1162 | + sprites["slefrnjymo"].clone().set_position(33, 15), | |
| 1163 | + sprites["slefrnjymo"].clone().set_position(24, 15), | |
| 1164 | + sprites["slefrnjymo"].clone().set_position(12, 12), | |
| 1165 | + sprites["slefrnjymo"].clone().set_position(24, 21), | |
| 1166 | + sprites["slefrnjymo"].clone().set_position(12, 30), | |
| 1167 | + sprites["slefrnjymo"].clone().set_position(30, 24), | |
| 1168 | + sprites["slefrnjymo"].clone().set_position(24, 33), | |
| 1169 | + sprites["tddzizwhzf"].clone().set_position(18, 6), | |
| 1170 | + sprites["tddzizwhzf"].clone().set_position(24, 6), | |
| 1171 | + sprites["tddzizwhzf"].clone().set_position(21, 15), | |
| 1172 | + sprites["tddzizwhzf"].clone().set_position(12, 9), | |
| 1173 | + sprites["tddzizwhzf"].clone().set_position(21, 33), | |
| 1174 | + sprites["tddzizwhzf"].clone().set_position(24, 24), | |
| 1175 | + sprites["tddzizwhzf"].clone().set_position(18, 33), | |
| 1176 | + sprites["ymwkwkfxct"].clone().set_position(2, 23), | |
| 1177 | + sprites["zpxgvxwdex"].clone().set_position(27, 5), | |
| 1178 | + ], | |
| 1179 | + grid_size=(41, 41), | |
| 1180 | + data={ | |
| 1181 | + "StepCounter": 60, | |
| 1182 | + "level_name": "cecdsipmha", | |
| 1183 | + }, | |
| 1184 | + ), | |
| 1185 | + # Level 3 | |
| 1186 | + Level( | |
| 1187 | + sprites=[ | |
| 1188 | + sprites["ahdesifykt"].clone().set_position(22, 24), | |
| 1189 | + sprites["aydooxtcli"].clone().set_position(9, 3), | |
| 1190 | + sprites["aydooxtcli"].clone().set_position(18, 6), | |
| 1191 | + sprites["aydooxtcli"].clone().set_position(3, 12), | |
| 1192 | + sprites["aydooxtcli"].clone().set_position(6, 6), | |
| 1193 | + sprites["aydooxtcli"].clone().set_position(27, 3), | |
| 1194 | + sprites["aydooxtcli"].clone().set_position(12, 21), | |
| 1195 | + sprites["aydooxtcli"].clone().set_position(21, 15), | |
| 1196 | + sprites["aydooxtcli"].clone().set_position(33, 12), | |
| 1197 | + sprites["bghvgbtwcb"].clone().set_position(2, 11), | |
| 1198 | + sprites["dvvacwfchj"].clone().set_position(13, 24), | |
| 1199 | + sprites["ekpijbeoel"].clone().set_position(9, 21), | |
| 1200 | + sprites["ekpijbeoel"].clone().set_position(21, 21), | |
| 1201 | + sprites["ekpijbeoel"].clone().set_position(15, 12), | |
| 1202 | + sprites["ekpijbeoel"].clone().set_position(30, 18), | |
| 1203 | + sprites["ekpijbeoel"].clone().set_position(3, 9), | |
| 1204 | + sprites["ekpijbeoel"].clone().set_position(21, 9), | |
| 1205 | + sprites["fdgmtkfrxl"].clone().set_position(32, 11), | |
| 1206 | + sprites["hfikqtizdo"].clone().set_position(6, 18), | |
| 1207 | + sprites["kisflvfvsy"].clone().set_position(15, 21), | |
| 1208 | + sprites["kisflvfvsy"].clone().set_position(21, 3), | |
| 1209 | + sprites["kisflvfvsy"].clone().set_position(3, 15), | |
| 1210 | + sprites["kisflvfvsy"].clone().set_position(27, 21), | |
| 1211 | + sprites["odkpvwbihk"].clone().set_position(30, 6), | |
| 1212 | + sprites["peuddygayw"].clone().set_position(10, 24), | |
| 1213 | + sprites["slefrnjymo"].clone().set_position(15, 15), | |
| 1214 | + sprites["slefrnjymo"].clone().set_position(15, 3), | |
| 1215 | + sprites["slefrnjymo"].clone().set_position(33, 9), | |
| 1216 | + sprites["slefrnjymo"].clone().set_position(24, 21), | |
| 1217 | + sprites["slefrnjymo"].clone().set_position(18, 18), | |
| 1218 | + sprites["tddzizwhzf"].clone().set_position(15, 9), | |
| 1219 | + sprites["tddzizwhzf"].clone().set_position(24, 3), | |
| 1220 | + sprites["tddzizwhzf"].clone().set_position(12, 3), | |
| 1221 | + sprites["tddzizwhzf"].clone().set_position(33, 15), | |
| 1222 | + sprites["tddzizwhzf"].clone().set_position(21, 12), | |
| 1223 | + sprites["zpxgvxwdex"].clone().set_position(25, 24), | |
| 1224 | + ], | |
| 1225 | + grid_size=(39, 31), | |
| 1226 | + data={ | |
| 1227 | + "StepCounter": 80, | |
| 1228 | + "level_name": "vvnbesozdj", | |
| 1229 | + }, | |
| 1230 | + ), | |
| 1231 | + # Level 4 | |
| 1232 | + Level( | |
| 1233 | + sprites=[ | |
| 1234 | + sprites["ahdesifykt"].clone().set_position(2, 11), | |
| 1235 | + sprites["ahdesifykt"].clone().set_position(32, 11), | |
| 1236 | + sprites["ahdesifykt"].clone().set_position(32, 41), | |
| 1237 | + sprites["ahdesifykt"].clone().set_position(2, 41), | |
| 1238 | + sprites["aydooxtcli"].clone().set_position(12, 9), | |
| 1239 | + sprites["aydooxtcli"].clone().set_position(9, 42), | |
| 1240 | + sprites["aydooxtcli"].clone().set_position(39, 42), | |
| 1241 | + sprites["aydooxtcli"].clone().set_position(39, 12), | |
| 1242 | + sprites["aydooxtcli"].clone().set_position(42, 6), | |
| 1243 | + sprites["aydooxtcli"].clone().set_position(36, 42), | |
| 1244 | + sprites["bghvgbtwcb"].clone().set_position(41, 41), | |
| 1245 | + sprites["dvvacwfchj"].clone().set_position(11, 2).set_rotation(270), | |
| 1246 | + sprites["dvvacwfchj"].clone().set_position(41, 2).set_rotation(270), | |
| 1247 | + sprites["dvvacwfchj"].clone().set_position(11, 32).set_rotation(270), | |
| 1248 | + sprites["dvvacwfchj"].clone().set_position(41, 32).set_rotation(270), | |
| 1249 | + sprites["ekpijbeoel"].clone().set_position(6, 42), | |
| 1250 | + sprites["ekpijbeoel"].clone().set_position(12, 12), | |
| 1251 | + sprites["ekpijbeoel"].clone().set_position(48, 42), | |
| 1252 | + sprites["ekpijbeoel"].clone().set_position(42, 12), | |
| 1253 | + sprites["ekpijbeoel"].clone().set_position(6, 12), | |
| 1254 | + sprites["ekpijbeoel"].clone().set_position(18, 42), | |
| 1255 | + sprites["ekpijbeoel"].clone().set_position(42, 15), | |
| 1256 | + sprites["fdgmtkfrxl"].clone().set_position(47, 41), | |
| 1257 | + sprites["hfikqtizdo"].clone().set_position(12, 45), | |
| 1258 | + sprites["kisflvfvsy"].clone().set_position(12, 6), | |
| 1259 | + sprites["kisflvfvsy"].clone().set_position(15, 42), | |
| 1260 | + sprites["kisflvfvsy"].clone().set_position(42, 45), | |
| 1261 | + sprites["kisflvfvsy"].clone().set_position(18, 12), | |
| 1262 | + sprites["kisflvfvsy"].clone().set_position(12, 48), | |
| 1263 | + sprites["kisflvfvsy"].clone().set_position(42, 18), | |
| 1264 | + sprites["kisflvfvsy"].clone().set_position(45, 42), | |
| 1265 | + sprites["odkpvwbihk"].clone().set_position(36, 12), | |
| 1266 | + sprites["peuddygayw"].clone().set_position(11, 21).set_rotation(270), | |
| 1267 | + sprites["peuddygayw"].clone().set_position(41, 51).set_rotation(270), | |
| 1268 | + sprites["peuddygayw"].clone().set_position(41, 21).set_rotation(270), | |
| 1269 | + sprites["peuddygayw"].clone().set_position(11, 51).set_rotation(270), | |
| 1270 | + sprites["slefrnjymo"].clone().set_position(12, 15), | |
| 1271 | + sprites["slefrnjymo"].clone().set_position(42, 9), | |
| 1272 | + sprites["slefrnjymo"].clone().set_position(42, 39), | |
| 1273 | + sprites["slefrnjymo"].clone().set_position(12, 36), | |
| 1274 | + sprites["slefrnjymo"].clone().set_position(9, 12), | |
| 1275 | + sprites["slefrnjymo"].clone().set_position(12, 42), | |
| 1276 | + sprites["slefrnjymo"].clone().set_position(45, 12), | |
| 1277 | + sprites["slefrnjymo"].clone().set_position(42, 48), | |
| 1278 | + sprites["tddzizwhzf"].clone().set_position(42, 36), | |
| 1279 | + sprites["tddzizwhzf"].clone().set_position(15, 12), | |
| 1280 | + sprites["tddzizwhzf"].clone().set_position(48, 12), | |
| 1281 | + sprites["tddzizwhzf"].clone().set_position(12, 18), | |
| 1282 | + sprites["tddzizwhzf"].clone().set_position(12, 39), | |
| 1283 | + sprites["tddzizwhzf"].clone().set_position(42, 42), | |
| 1284 | + sprites["zpxgvxwdex"].clone().set_position(21, 11), | |
| 1285 | + sprites["zpxgvxwdex"].clone().set_position(51, 41), | |
| 1286 | + sprites["zpxgvxwdex"].clone().set_position(21, 41), | |
| 1287 | + sprites["zpxgvxwdex"].clone().set_position(51, 11), | |
| 1288 | + ], | |
| 1289 | + grid_size=(57, 57), | |
| 1290 | + data={ | |
| 1291 | + "StepCounter": 150, | |
| 1292 | + "level_name": "ihpokmcrjm", | |
| 1293 | + }, | |
| 1294 | + ), | |
| 1295 | + # Level 5 | |
| 1296 | + Level( | |
| 1297 | + sprites=[ | |
| 1298 | + sprites["ahdesifykt"].clone().set_position(2, 17), | |
| 1299 | + sprites["aydooxtcli"].clone().set_position(9, 3), | |
| 1300 | + sprites["aydooxtcli"].clone().set_position(12, 15), | |
| 1301 | + sprites["aydooxtcli"].clone().set_position(12, 9), | |
| 1302 | + sprites["aydooxtcli"].clone().set_position(12, 24), | |
| 1303 | + sprites["bghvgbtwcb"].clone().set_position(5, 2), | |
| 1304 | + sprites["bghvgbtwcb"].clone().set_position(17, 2), | |
| 1305 | + sprites["dvvacwfchj"].clone().set_position(22, 2), | |
| 1306 | + sprites["ekpijbeoel"].clone().set_position(9, 15), | |
| 1307 | + sprites["ekpijbeoel"].clone().set_position(6, 15), | |
| 1308 | + sprites["ekpijbeoel"].clone().set_position(12, 12), | |
| 1309 | + sprites["ekpijbeoel"].clone().set_position(6, 27), | |
| 1310 | + sprites["ekpijbeoel"].clone().set_position(9, 21), | |
| 1311 | + sprites["ekpijbeoel"].clone().set_position(9, 27), | |
| 1312 | + sprites["ekpijbeoel"].clone().set_position(18, 3), | |
| 1313 | + sprites["kisflvfvsy"].clone().set_position(6, 3), | |
| 1314 | + sprites["kisflvfvsy"].clone().set_position(6, 18), | |
| 1315 | + sprites["kisflvfvsy"].clone().set_position(12, 21), | |
| 1316 | + sprites["odkpvwbihk"].clone().set_position(6, 9), | |
| 1317 | + sprites["odkpvwbihk"].clone().set_position(12, 27), | |
| 1318 | + sprites["peuddygayw"].clone().set_position(1, 2), | |
| 1319 | + sprites["slefrnjymo"].clone().set_position(9, 9), | |
| 1320 | + sprites["slefrnjymo"].clone().set_position(12, 3), | |
| 1321 | + sprites["tddzizwhzf"].clone().set_position(15, 3), | |
| 1322 | + sprites["tddzizwhzf"].clone().set_position(6, 21), | |
| 1323 | + sprites["tddzizwhzf"].clone().set_position(6, 6), | |
| 1324 | + sprites["zpxgvxwdex"].clone().set_position(15, 17), | |
| 1325 | + ], | |
| 1326 | + grid_size=(27, 32), | |
| 1327 | + data={ | |
| 1328 | + "StepCounter": 80, | |
| 1329 | + "level_name": "qibynbipmw", | |
| 1330 | + }, | |
| 1331 | + ), | |
| 1332 | + # Level 6 | |
| 1333 | + Level( | |
| 1334 | + sprites=[ | |
| 1335 | + sprites["aoibinevrm"].clone().set_position(54, 14), | |
| 1336 | + sprites["aqwhbtzcfg"].clone().set_position(50, 54).set_rotation(270), | |
| 1337 | + sprites["auxglvwwep"].clone().set_position(39, 44), | |
| 1338 | + sprites["avazowxmej"].clone().set_position(39, 44), | |
| 1339 | + sprites["aydooxtcli"].clone().set_position(48, 9), | |
| 1340 | + sprites["aydooxtcli"].clone().set_position(9, 15), | |
| 1341 | + sprites["aydooxtcli"].clone().set_position(45, 15), | |
| 1342 | + sprites["aydooxtcli"].clone().set_position(51, 24), | |
| 1343 | + sprites["aydooxtcli"].clone().set_position(27, 39), | |
| 1344 | + sprites["aydooxtcli"].clone().set_position(21, 45), | |
| 1345 | + sprites["aydooxtcli"].clone().set_position(18, 54), | |
| 1346 | + sprites["aydooxtcli"].clone().set_position(15, 18), | |
| 1347 | + sprites["aydooxtcli"].clone().set_position(15, 15), | |
| 1348 | + sprites["aydooxtcli"].clone().set_position(12, 12), | |
| 1349 | + sprites["aydooxtcli"].clone().set_position(12, 24), | |
| 1350 | + sprites["azkpmswird"].clone().set_position(24, 14), | |
| 1351 | + sprites["bbxrzomunc"].clone().set_position(54, 14), | |
| 1352 | + sprites["bghvgbtwcb"].clone().set_position(23, 26), | |
| 1353 | + sprites["bghvgbtwcb"].clone().set_position(29, 26), | |
| 1354 | + sprites["bghvgbtwcb"].clone().set_position(26, 32), | |
| 1355 | + sprites["cfhhkdewbs"].clone().set_position(24, 14), | |
| 1356 | + sprites["cgkbezvpdp"].clone().set_position(54, 14), | |
| 1357 | + sprites["cjcssvobei"].clone().set_position(27, 57), | |
| 1358 | + sprites["cyqncaekpb"].clone().set_position(24, 14), | |
| 1359 | + sprites["djepopdkpm"].clone().set_position(24, 14), | |
| 1360 | + sprites["dvvacwfchj"].clone().set_position(12, 27), | |
| 1361 | + sprites["ekpijbeoel"].clone().set_position(51, 6), | |
| 1362 | + sprites["ekpijbeoel"].clone().set_position(45, 18), | |
| 1363 | + sprites["ekpijbeoel"].clone().set_position(18, 36), | |
| 1364 | + sprites["ekpijbeoel"].clone().set_position(36, 36), | |
| 1365 | + sprites["ekpijbeoel"].clone().set_position(30, 42), | |
| 1366 | + sprites["ekpijbeoel"].clone().set_position(18, 45), | |
| 1367 | + sprites["ekpijbeoel"].clone().set_position(33, 45), | |
| 1368 | + sprites["ekpijbeoel"].clone().set_position(33, 51), | |
| 1369 | + sprites["ekpijbeoel"].clone().set_position(36, 54), | |
| 1370 | + sprites["ekpijbeoel"].clone().set_position(15, 12), | |
| 1371 | + sprites["ekpijbeoel"].clone().set_position(9, 12), | |
| 1372 | + sprites["ekpijbeoel"].clone().set_position(12, 18), | |
| 1373 | + sprites["ekpijbeoel"].clone().set_position(3, 6), | |
| 1374 | + sprites["gknuimaglj"].clone().set_position(39, 44), | |
| 1375 | + sprites["hiictjojxg"].clone().set_position(24, 14), | |
| 1376 | + sprites["hvgvgpuasf"].clone().set_position(42, 27), | |
| 1377 | + sprites["icgyrqkqpc"].clone().set_position(54, 14), | |
| 1378 | + sprites["ikgydmjteo"].clone().set_position(54, 14), | |
| 1379 | + sprites["isjrkszgff"].clone().set_position(39, 44), | |
| 1380 | + sprites["jxibbjkyqn"].clone().set_position(54, 14), | |
| 1381 | + sprites["kcuuamovad"].clone().set_position(39, 44), | |
| 1382 | + sprites["kisflvfvsy"].clone().set_position(33, 6), | |
| 1383 | + sprites["kisflvfvsy"].clone().set_position(6, 9), | |
| 1384 | + sprites["kisflvfvsy"].clone().set_position(39, 12), | |
| 1385 | + sprites["kisflvfvsy"].clone().set_position(33, 15), | |
| 1386 | + sprites["kisflvfvsy"].clone().set_position(39, 18), | |
| 1387 | + sprites["kisflvfvsy"].clone().set_position(48, 21), | |
| 1388 | + sprites["kisflvfvsy"].clone().set_position(30, 27), | |
| 1389 | + sprites["kisflvfvsy"].clone().set_position(27, 36), | |
| 1390 | + sprites["kisflvfvsy"].clone().set_position(33, 39), | |
| 1391 | + sprites["kisflvfvsy"].clone().set_position(27, 42), | |
| 1392 | + sprites["kisflvfvsy"].clone().set_position(36, 45), | |
| 1393 | + sprites["kisflvfvsy"].clone().set_position(24, 48), | |
| 1394 | + sprites["kisflvfvsy"].clone().set_position(27, 48), | |
| 1395 | + sprites["kisflvfvsy"].clone().set_position(21, 51), | |
| 1396 | + sprites["kisflvfvsy"].clone().set_position(6, 15), | |
| 1397 | + sprites["kisflvfvsy"].clone().set_position(6, 21), | |
| 1398 | + sprites["kisflvfvsy"].clone().set_position(18, 21), | |
| 1399 | + sprites["kisflvfvsy"].clone().set_position(18, 15), | |
| 1400 | + sprites["kisflvfvsy"].clone().set_position(12, 21), | |
| 1401 | + sprites["lfcynjbowf"].clone().set_position(24, 14), | |
| 1402 | + sprites["lnnponqnto"].clone().set_position(24, 14), | |
| 1403 | + sprites["lqtjzsqwtz"].clone().set_position(39, 44), | |
| 1404 | + sprites["odkpvwbihk"].clone().set_position(9, 18), | |
| 1405 | + sprites["odkpvwbihk"].clone().set_position(45, 12), | |
| 1406 | + sprites["odkpvwbihk"].clone().set_position(24, 45), | |
| 1407 | + sprites["qfmlfsmppb"].clone().set_position(54, 14), | |
| 1408 | + sprites["reafrgzfwk"].clone().set_position(12, 27), | |
| 1409 | + sprites["rhyksubvjk"].clone().set_position(39, 44), | |
| 1410 | + sprites["sbogwsxcvo"].clone().set_position(42, 27), | |
| 1411 | + sprites["slefrnjymo"].clone().set_position(36, 9), | |
| 1412 | + sprites["slefrnjymo"].clone().set_position(42, 12), | |
| 1413 | + sprites["slefrnjymo"].clone().set_position(36, 15), | |
| 1414 | + sprites["slefrnjymo"].clone().set_position(39, 15), | |
| 1415 | + sprites["slefrnjymo"].clone().set_position(48, 15), | |
| 1416 | + sprites["slefrnjymo"].clone().set_position(51, 15), | |
| 1417 | + sprites["slefrnjymo"].clone().set_position(42, 24), | |
| 1418 | + sprites["slefrnjymo"].clone().set_position(24, 27), | |
| 1419 | + sprites["slefrnjymo"].clone().set_position(21, 39), | |
| 1420 | + sprites["slefrnjymo"].clone().set_position(24, 42), | |
| 1421 | + sprites["slefrnjymo"].clone().set_position(30, 45), | |
| 1422 | + sprites["slefrnjymo"].clone().set_position(30, 48), | |
| 1423 | + sprites["slefrnjymo"].clone().set_position(27, 51), | |
| 1424 | + sprites["slefrnjymo"].clone().set_position(12, 9), | |
| 1425 | + sprites["slefrnjymo"].clone().set_position(18, 9), | |
| 1426 | + sprites["tcweaqkrko"].clone().set_position(54, 14), | |
| 1427 | + sprites["tddzizwhzf"].clone().set_position(42, 6), | |
| 1428 | + sprites["tddzizwhzf"].clone().set_position(42, 9), | |
| 1429 | + sprites["tddzizwhzf"].clone().set_position(3, 15), | |
| 1430 | + sprites["tddzizwhzf"].clone().set_position(42, 18), | |
| 1431 | + sprites["tddzizwhzf"].clone().set_position(36, 21), | |
| 1432 | + sprites["tddzizwhzf"].clone().set_position(42, 21), | |
| 1433 | + sprites["tddzizwhzf"].clone().set_position(33, 24), | |
| 1434 | + sprites["tddzizwhzf"].clone().set_position(27, 33), | |
| 1435 | + sprites["tddzizwhzf"].clone().set_position(27, 54), | |
| 1436 | + sprites["tddzizwhzf"].clone().set_position(3, 24), | |
| 1437 | + sprites["tddzizwhzf"].clone().set_position(21, 24), | |
| 1438 | + sprites["tddzizwhzf"].clone().set_position(21, 15), | |
| 1439 | + sprites["tddzizwhzf"].clone().set_position(21, 6), | |
| 1440 | + sprites["tddzizwhzf"].clone().set_position(12, 6), | |
| 1441 | + sprites["uqipjzobpp"].clone().set_position(42, 27), | |
| 1442 | + sprites["vdjpajqpny"].clone().set_position(39, 44), | |
| 1443 | + sprites["xtxayxwyfn"].clone().set_position(27, 57), | |
| 1444 | + sprites["ypbsjakojf"].clone().set_position(24, 14), | |
| 1445 | + sprites["zdlwfpeyyd"].clone().set_position(27, 57), | |
| 1446 | + sprites["zpxgvxwdex"].clone().set_position(12, 27), | |
| 1447 | + sprites["zrzovwqbcx"].clone().set_position(50, 54).set_rotation(270), | |
| 1448 | + sprites["zseotqksli"].clone().set_position(50, 54).set_rotation(270), | |
| 1449 | + ], | |
| 1450 | + grid_size=(60, 64), | |
| 1451 | + data={ | |
| 1452 | + "StepCounter": 80, | |
| 1453 | + "level_name": "ksgcbuhgwz", | |
| 1454 | + }, | |
| 1455 | + ), | |
| 1456 | + # Level 7 | |
| 1457 | + Level( | |
| 1458 | + sprites=[ | |
| 1459 | + sprites["ahdesifykt"].clone().set_position(20, 27), | |
| 1460 | + sprites["aydooxtcli"].clone().set_position(30, 9), | |
| 1461 | + sprites["aydooxtcli"].clone().set_position(21, 24), | |
| 1462 | + sprites["bghvgbtwcb"].clone().set_position(23, 20), | |
| 1463 | + sprites["bghvgbtwcb"].clone().set_position(32, 8), | |
| 1464 | + sprites["dvvacwfchj"].clone().set_position(11, 5).set_rotation(270), | |
| 1465 | + sprites["ekpijbeoel"].clone().set_position(18, 9), | |
| 1466 | + sprites["ekpijbeoel"].clone().set_position(27, 9), | |
| 1467 | + sprites["ekpijbeoel"].clone().set_position(21, 21), | |
| 1468 | + sprites["hvgvgpuasf"].clone().set_position(24, 27), | |
| 1469 | + sprites["kisflvfvsy"].clone().set_position(15, 9), | |
| 1470 | + sprites["odkpvwbihk"].clone().set_position(33, 9), | |
| 1471 | + sprites["odkpvwbihk"].clone().set_position(24, 24), | |
| 1472 | + sprites["oqsumsdlyg"].clone().set_position(20, 27), | |
| 1473 | + sprites["peuddygayw"].clone().set_position(11, 18).set_rotation(270), | |
| 1474 | + sprites["slefrnjymo"].clone().set_position(24, 9), | |
| 1475 | + sprites["slefrnjymo"].clone().set_position(12, 12), | |
| 1476 | + sprites["tddzizwhzf"].clone().set_position(12, 9), | |
| 1477 | + sprites["tddzizwhzf"].clone().set_position(21, 9), | |
| 1478 | + sprites["tddzizwhzf"].clone().set_position(12, 15), | |
| 1479 | + sprites["tddzizwhzf"].clone().set_position(24, 21), | |
| 1480 | + sprites["zpxgvxwdex"].clone().set_position(24, 27), | |
| 1481 | + ], | |
| 1482 | + grid_size=(48, 36), | |
| 1483 | + data={ | |
| 1484 | + "StepCounter": 80, | |
| 1485 | + "level_name": "yzzznxxvju", | |
| 1486 | + }, | |
| 1487 | + ), | |
| 1488 | + # Level 8 | |
| 1489 | + Level( | |
| 1490 | + sprites=[ | |
| 1491 | + sprites["ahdesifykt"].clone().set_position(48, 23), | |
| 1492 | + sprites["aydooxtcli"].clone().set_position(6, 6), | |
| 1493 | + sprites["aydooxtcli"].clone().set_position(24, 6), | |
| 1494 | + sprites["aydooxtcli"].clone().set_position(24, 9), | |
| 1495 | + sprites["aydooxtcli"].clone().set_position(12, 12), | |
| 1496 | + sprites["aydooxtcli"].clone().set_position(36, 12), | |
| 1497 | + sprites["aydooxtcli"].clone().set_position(42, 15), | |
| 1498 | + sprites["aydooxtcli"].clone().set_position(9, 18), | |
| 1499 | + sprites["aydooxtcli"].clone().set_position(42, 21), | |
| 1500 | + sprites["aydooxtcli"].clone().set_position(15, 24), | |
| 1501 | + sprites["aydooxtcli"].clone().set_position(30, 30), | |
| 1502 | + sprites["aydooxtcli"].clone().set_position(24, 33), | |
| 1503 | + sprites["aydooxtcli"].clone().set_position(42, 36), | |
| 1504 | + sprites["aydooxtcli"].clone().set_position(30, 45), | |
| 1505 | + sprites["aydooxtcli"].clone().set_position(42, 45), | |
| 1506 | + sprites["aydooxtcli"].clone().set_position(36, 48), | |
| 1507 | + sprites["aydooxtcli"].clone().set_position(30, 51), | |
| 1508 | + sprites["aydooxtcli"].clone().set_position(42, 51), | |
| 1509 | + sprites["bghvgbtwcb"].clone().set_position(23, 50), | |
| 1510 | + sprites["bghvgbtwcb"].clone().set_position(29, 50), | |
| 1511 | + sprites["bghvgbtwcb"].clone().set_position(35, 50), | |
| 1512 | + sprites["dvvacwfchj"].clone().set_position(52, 28), | |
| 1513 | + sprites["ekpijbeoel"].clone().set_position(9, 9), | |
| 1514 | + sprites["ekpijbeoel"].clone().set_position(30, 12), | |
| 1515 | + sprites["ekpijbeoel"].clone().set_position(15, 15), | |
| 1516 | + sprites["ekpijbeoel"].clone().set_position(42, 18), | |
| 1517 | + sprites["ekpijbeoel"].clone().set_position(21, 21), | |
| 1518 | + sprites["ekpijbeoel"].clone().set_position(24, 39), | |
| 1519 | + sprites["hvgvgpuasf"].clone().set_position(35, 56), | |
| 1520 | + sprites["kisflvfvsy"].clone().set_position(36, 15), | |
| 1521 | + sprites["kisflvfvsy"].clone().set_position(36, 18), | |
| 1522 | + sprites["kisflvfvsy"].clone().set_position(27, 27), | |
| 1523 | + sprites["kisflvfvsy"].clone().set_position(36, 27), | |
| 1524 | + sprites["kisflvfvsy"].clone().set_position(42, 27), | |
| 1525 | + sprites["kisflvfvsy"].clone().set_position(36, 30), | |
| 1526 | + sprites["kisflvfvsy"].clone().set_position(42, 33), | |
| 1527 | + sprites["kisflvfvsy"].clone().set_position(24, 36), | |
| 1528 | + sprites["kisflvfvsy"].clone().set_position(30, 36), | |
| 1529 | + sprites["kisflvfvsy"].clone().set_position(30, 39), | |
| 1530 | + sprites["kisflvfvsy"].clone().set_position(36, 39), | |
| 1531 | + sprites["kisflvfvsy"].clone().set_position(24, 42), | |
| 1532 | + sprites["kisflvfvsy"].clone().set_position(42, 42), | |
| 1533 | + sprites["kisflvfvsy"].clone().set_position(24, 45), | |
| 1534 | + sprites["kisflvfvsy"].clone().set_position(3, 12), | |
| 1535 | + sprites["kisflvfvsy"].clone().set_position(36, 9), | |
| 1536 | + sprites["lfimxyubtw"].clone().set_position(30, 56), | |
| 1537 | + sprites["odkpvwbihk"].clone().set_position(18, 9), | |
| 1538 | + sprites["odkpvwbihk"].clone().set_position(18, 27), | |
| 1539 | + sprites["odkpvwbihk"].clone().set_position(18, 18), | |
| 1540 | + sprites["oqsumsdlyg"].clone().set_position(30, 56), | |
| 1541 | + sprites["peuddygayw"].clone().set_position(48, 28), | |
| 1542 | + sprites["reafrgzfwk"].clone().set_position(52, 33), | |
| 1543 | + sprites["sbogwsxcvo"].clone().set_position(35, 56), | |
| 1544 | + sprites["sjummcsymu"].clone().set_position(30, 56), | |
| 1545 | + sprites["slefrnjymo"].clone().set_position(6, 15), | |
| 1546 | + sprites["slefrnjymo"].clone().set_position(24, 15), | |
| 1547 | + sprites["slefrnjymo"].clone().set_position(27, 18), | |
| 1548 | + sprites["slefrnjymo"].clone().set_position(30, 21), | |
| 1549 | + sprites["slefrnjymo"].clone().set_position(36, 21), | |
| 1550 | + sprites["slefrnjymo"].clone().set_position(33, 24), | |
| 1551 | + sprites["slefrnjymo"].clone().set_position(42, 24), | |
| 1552 | + sprites["slefrnjymo"].clone().set_position(21, 30), | |
| 1553 | + sprites["slefrnjymo"].clone().set_position(30, 42), | |
| 1554 | + sprites["slefrnjymo"].clone().set_position(24, 48), | |
| 1555 | + sprites["slefrnjymo"].clone().set_position(30, 48), | |
| 1556 | + sprites["slefrnjymo"].clone().set_position(39, 48), | |
| 1557 | + sprites["slefrnjymo"].clone().set_position(24, 51), | |
| 1558 | + sprites["tddzizwhzf"].clone().set_position(21, 12), | |
| 1559 | + sprites["tddzizwhzf"].clone().set_position(42, 12), | |
| 1560 | + sprites["tddzizwhzf"].clone().set_position(30, 15), | |
| 1561 | + sprites["tddzizwhzf"].clone().set_position(12, 21), | |
| 1562 | + sprites["tddzizwhzf"].clone().set_position(24, 24), | |
| 1563 | + sprites["tddzizwhzf"].clone().set_position(42, 30), | |
| 1564 | + sprites["tddzizwhzf"].clone().set_position(30, 33), | |
| 1565 | + sprites["tddzizwhzf"].clone().set_position(36, 33), | |
| 1566 | + sprites["tddzizwhzf"].clone().set_position(36, 36), | |
| 1567 | + sprites["tddzizwhzf"].clone().set_position(42, 39), | |
| 1568 | + sprites["tddzizwhzf"].clone().set_position(36, 42), | |
| 1569 | + sprites["tddzizwhzf"].clone().set_position(36, 45), | |
| 1570 | + sprites["tddzizwhzf"].clone().set_position(42, 48), | |
| 1571 | + sprites["tddzizwhzf"].clone().set_position(36, 51), | |
| 1572 | + sprites["uqipjzobpp"].clone().set_position(35, 56), | |
| 1573 | + sprites["ymwkwkfxct"].clone().set_position(48, 33), | |
| 1574 | + sprites["zpxgvxwdex"].clone().set_position(52, 23), | |
| 1575 | + ], | |
| 1576 | + grid_size=(63, 63), | |
| 1577 | + data={ | |
| 1578 | + "StepCounter": 80, | |
| 1579 | + "level_name": "hmzsasouat", | |
| 1580 | + }, | |
| 1581 | + ), | |
| 1582 | +] | |
| 1583 | +izutyjcpih = { | |
| 1584 | + "kdrsqrvpwb": { | |
| 1585 | + "A": [ | |
| 1586 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1587 | + [-1, -1, 1, 2, 3, 4, 5, 6, 7, -1, -1], | |
| 1588 | + [-1, -1, 20, -1, -1, -1, -1, -1, 8, -1, -1], | |
| 1589 | + [-1, -1, 19, -1, -1, -1, -1, -1, 9, -1, -1], | |
| 1590 | + [-1, -1, 18, -1, -1, -1, -1, -1, 10, -1, -1], | |
| 1591 | + [-1, -1, 17, 16, 15, 14, 13, 12, 11, -1, -1], | |
| 1592 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1593 | + ] | |
| 1594 | + }, | |
| 1595 | + "cecdsipmha": { | |
| 1596 | + "A": [ | |
| 1597 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1598 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1599 | + [-1, -1, -1, -1, 1, 2, 3, 4, 5, -1, -1, -1, -1, -1], | |
| 1600 | + [-1, -1, -1, -1, 26, -1, -1, -1, 6, -1, -1, -1, -1, -1], | |
| 1601 | + [-1, -1, -1, -1, 25, -1, -1, -1, 7, -1, -1, -1, -1, -1], | |
| 1602 | + [-1, -1, -1, -1, 24, -1, -1, -1, 8, -1, -1, -1, -1, -1], | |
| 1603 | + [-1, -1, -1, -1, 23, -1, -1, -1, 9, -1, -1, -1, -1, -1], | |
| 1604 | + [-1, -1, -1, -1, 22, -1, -1, -1, 10, -1, -1, -1, -1, -1], | |
| 1605 | + [-1, -1, -1, -1, 21, -1, -1, -1, 11, -1, -1, -1, -1, -1], | |
| 1606 | + [-1, -1, -1, -1, 20, -1, -1, -1, 12, -1, -1, -1, -1, -1], | |
| 1607 | + [-1, -1, -1, -1, 19, -1, -1, -1, 13, -1, -1, -1, -1, -1], | |
| 1608 | + [-1, -1, -1, -1, 18, 17, 16, 15, 14, -1, -1, -1, -1, -1], | |
| 1609 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1610 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1611 | + ], | |
| 1612 | + "B": [ | |
| 1613 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1614 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1615 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1616 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1617 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1618 | + [-1, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1], | |
| 1619 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1620 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1621 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1622 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1623 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1624 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1625 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1626 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1627 | + ], | |
| 1628 | + "C": [ | |
| 1629 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1630 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1631 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1632 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1633 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1634 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1635 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1636 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1637 | + [-1, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1], | |
| 1638 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1639 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1640 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1641 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1642 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1643 | + ], | |
| 1644 | + }, | |
| 1645 | + "qibynbipmw": { | |
| 1646 | + "A": [ | |
| 1647 | + [-1, -1, -1, -1, -1, -1, -1], | |
| 1648 | + [-1, -1, 17, 18, 19, 20, 21], | |
| 1649 | + [-1, -1, 16, -1, -1, -1, -1], | |
| 1650 | + [-1, -1, 15, 14, 13, -1, -1], | |
| 1651 | + [-1, -1, -1, -1, 12, -1, -1], | |
| 1652 | + [-1, -1, 9, 10, 11, -1, -1], | |
| 1653 | + [-1, -1, 8, -1, -1, -1, -1], | |
| 1654 | + [-1, -1, 7, 6, 5, -1, -1], | |
| 1655 | + [-1, -1, -1, -1, 4, -1, -1], | |
| 1656 | + [-1, -1, 1, 2, 3, -1, -1], | |
| 1657 | + ], | |
| 1658 | + "B": [ | |
| 1659 | + [-1, -1, -1, -1, -1, -1, -1], | |
| 1660 | + [-1, -1, 1, 2, 3, 4, 5], | |
| 1661 | + [-1, -1, -1, -1, -1, -1, -1], | |
| 1662 | + [-1, -1, -1, -1, -1, -1, -1], | |
| 1663 | + [-1, -1, -1, -1, -1, -1, -1], | |
| 1664 | + [-1, -1, -1, -1, -1, -1, -1], | |
| 1665 | + [-1, -1, -1, -1, -1, -1, -1], | |
| 1666 | + [-1, -1, -1, -1, -1, -1, -1], | |
| 1667 | + [-1, -1, -1, -1, -1, -1, -1], | |
| 1668 | + [-1, -1, -1, -1, -1, -1, -1], | |
| 1669 | + ], | |
| 1670 | + }, | |
| 1671 | + "asymmetry": { | |
| 1672 | + "A": [ | |
| 1673 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1674 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1675 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1676 | + [-1, -1, -1, -1, 8, -1, -1, -1, -1, -1], | |
| 1677 | + [-1, -1, -1, -1, 7, -1, -1, -1, -1, -1], | |
| 1678 | + [-1, -1, -1, -1, 6, -1, -1, -1, -1, -1], | |
| 1679 | + [-1, -1, -1, -1, 5, -1, -1, -1, -1, -1], | |
| 1680 | + [-1, -1, -1, -1, 4, -1, -1, -1, -1, -1], | |
| 1681 | + [-1, -1, -1, -1, 3, -1, -1, -1, -1, -1], | |
| 1682 | + [-1, -1, -1, -1, 2, -1, -1, -1, -1, -1], | |
| 1683 | + [-1, -1, -1, -1, 1, -1, -1, -1, -1, -1], | |
| 1684 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1685 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1686 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1687 | + ], | |
| 1688 | + "B": [ | |
| 1689 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1690 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1691 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1692 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1693 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1694 | + [-1, -1, 1, 2, 3, 4, 5, 6, -1, -1], | |
| 1695 | + [-1, -1, 16, -1, -1, -1, -1, 7, -1, -1], | |
| 1696 | + [-1, -1, 15, -1, -1, -1, -1, 8, -1, -1], | |
| 1697 | + [-1, -1, 14, 13, 12, 11, 10, 9, -1, -1], | |
| 1698 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1699 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1700 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1701 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1702 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1703 | + ], | |
| 1704 | + }, | |
| 1705 | + "vvnbesozdj": { | |
| 1706 | + "A": [ | |
| 1707 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1708 | + [-1, -1, -1, -1, -1, -1, -1, 1, 2, 3, -1, -1, -1], | |
| 1709 | + [-1, -1, -1, -1, -1, -1, 16, -1, -1, -1, 4, -1, -1], | |
| 1710 | + [-1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, 5, -1], | |
| 1711 | + [-1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, 6, -1], | |
| 1712 | + [-1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, 7, -1], | |
| 1713 | + [-1, -1, -1, -1, -1, -1, 12, -1, -1, -1, 8, -1, -1], | |
| 1714 | + [-1, -1, -1, -1, -1, -1, -1, 11, 10, 9, -1, -1, -1], | |
| 1715 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1716 | + ], | |
| 1717 | + "B": [ | |
| 1718 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1719 | + [-1, -1, -1, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1], | |
| 1720 | + [-1, -1, 16, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1], | |
| 1721 | + [-1, 15, -1, -1, -1, -1, -1, 5, -1, -1, -1, -1, -1], | |
| 1722 | + [-1, 14, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1], | |
| 1723 | + [-1, 13, -1, -1, -1, -1, -1, 7, -1, -1, -1, -1, -1], | |
| 1724 | + [-1, -1, 12, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1], | |
| 1725 | + [-1, -1, -1, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1], | |
| 1726 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 1727 | + ], | |
| 1728 | + }, | |
| 1729 | + "ihpokmcrjm": { | |
| 1730 | + "A": [ | |
| 1731 | + [ | |
| 1732 | + -1, | |
| 1733 | + -1, | |
| 1734 | + -1, | |
| 1735 | + -1, | |
| 1736 | + -1, | |
| 1737 | + -1, | |
| 1738 | + -1, | |
| 1739 | + -1, | |
| 1740 | + -1, | |
| 1741 | + -1, | |
| 1742 | + -1, | |
| 1743 | + -1, | |
| 1744 | + -1, | |
| 1745 | + -1, | |
| 1746 | + -1, | |
| 1747 | + -1, | |
| 1748 | + -1, | |
| 1749 | + -1, | |
| 1750 | + -1, | |
| 1751 | + ], | |
| 1752 | + [ | |
| 1753 | + -1, | |
| 1754 | + -1, | |
| 1755 | + -1, | |
| 1756 | + -1, | |
| 1757 | + -1, | |
| 1758 | + -1, | |
| 1759 | + -1, | |
| 1760 | + -1, | |
| 1761 | + -1, | |
| 1762 | + -1, | |
| 1763 | + -1, | |
| 1764 | + -1, | |
| 1765 | + -1, | |
| 1766 | + -1, | |
| 1767 | + -1, | |
| 1768 | + -1, | |
| 1769 | + -1, | |
| 1770 | + -1, | |
| 1771 | + -1, | |
| 1772 | + ], | |
| 1773 | + [ | |
| 1774 | + -1, | |
| 1775 | + -1, | |
| 1776 | + -1, | |
| 1777 | + -1, | |
| 1778 | + -1, | |
| 1779 | + -1, | |
| 1780 | + -1, | |
| 1781 | + -1, | |
| 1782 | + -1, | |
| 1783 | + -1, | |
| 1784 | + -1, | |
| 1785 | + -1, | |
| 1786 | + -1, | |
| 1787 | + -1, | |
| 1788 | + -1, | |
| 1789 | + -1, | |
| 1790 | + -1, | |
| 1791 | + -1, | |
| 1792 | + -1, | |
| 1793 | + ], | |
| 1794 | + [ | |
| 1795 | + -1, | |
| 1796 | + -1, | |
| 1797 | + -1, | |
| 1798 | + -1, | |
| 1799 | + -1, | |
| 1800 | + -1, | |
| 1801 | + -1, | |
| 1802 | + -1, | |
| 1803 | + -1, | |
| 1804 | + -1, | |
| 1805 | + -1, | |
| 1806 | + -1, | |
| 1807 | + -1, | |
| 1808 | + -1, | |
| 1809 | + -1, | |
| 1810 | + -1, | |
| 1811 | + -1, | |
| 1812 | + -1, | |
| 1813 | + -1, | |
| 1814 | + ], | |
| 1815 | + [-1, -1, 1, 2, 3, 4, 5, -1, -1, -1, -1, -1, 6, 7, 8, 9, 10, -1, -1], | |
| 1816 | + [ | |
| 1817 | + -1, | |
| 1818 | + -1, | |
| 1819 | + -1, | |
| 1820 | + -1, | |
| 1821 | + -1, | |
| 1822 | + -1, | |
| 1823 | + -1, | |
| 1824 | + -1, | |
| 1825 | + -1, | |
| 1826 | + -1, | |
| 1827 | + -1, | |
| 1828 | + -1, | |
| 1829 | + -1, | |
| 1830 | + -1, | |
| 1831 | + -1, | |
| 1832 | + -1, | |
| 1833 | + -1, | |
| 1834 | + -1, | |
| 1835 | + -1, | |
| 1836 | + ], | |
| 1837 | + [ | |
| 1838 | + -1, | |
| 1839 | + -1, | |
| 1840 | + -1, | |
| 1841 | + -1, | |
| 1842 | + -1, | |
| 1843 | + -1, | |
| 1844 | + -1, | |
| 1845 | + -1, | |
| 1846 | + -1, | |
| 1847 | + -1, | |
| 1848 | + -1, | |
| 1849 | + -1, | |
| 1850 | + -1, | |
| 1851 | + -1, | |
| 1852 | + -1, | |
| 1853 | + -1, | |
| 1854 | + -1, | |
| 1855 | + -1, | |
| 1856 | + -1, | |
| 1857 | + ], | |
| 1858 | + [ | |
| 1859 | + -1, | |
| 1860 | + -1, | |
| 1861 | + -1, | |
| 1862 | + -1, | |
| 1863 | + -1, | |
| 1864 | + -1, | |
| 1865 | + -1, | |
| 1866 | + -1, | |
| 1867 | + -1, | |
| 1868 | + -1, | |
| 1869 | + -1, | |
| 1870 | + -1, | |
| 1871 | + -1, | |
| 1872 | + -1, | |
| 1873 | + -1, | |
| 1874 | + -1, | |
| 1875 | + -1, | |
| 1876 | + -1, | |
| 1877 | + -1, | |
| 1878 | + ], | |
| 1879 | + [ | |
| 1880 | + -1, | |
| 1881 | + -1, | |
| 1882 | + -1, | |
| 1883 | + -1, | |
| 1884 | + -1, | |
| 1885 | + -1, | |
| 1886 | + -1, | |
| 1887 | + -1, | |
| 1888 | + -1, | |
| 1889 | + -1, | |
| 1890 | + -1, | |
| 1891 | + -1, | |
| 1892 | + -1, | |
| 1893 | + -1, | |
| 1894 | + -1, | |
| 1895 | + -1, | |
| 1896 | + -1, | |
| 1897 | + -1, | |
| 1898 | + -1, | |
| 1899 | + ], | |
| 1900 | + [ | |
| 1901 | + -1, | |
| 1902 | + -1, | |
| 1903 | + -1, | |
| 1904 | + -1, | |
| 1905 | + -1, | |
| 1906 | + -1, | |
| 1907 | + -1, | |
| 1908 | + -1, | |
| 1909 | + -1, | |
| 1910 | + -1, | |
| 1911 | + -1, | |
| 1912 | + -1, | |
| 1913 | + -1, | |
| 1914 | + -1, | |
| 1915 | + -1, | |
| 1916 | + -1, | |
| 1917 | + -1, | |
| 1918 | + -1, | |
| 1919 | + -1, | |
| 1920 | + ], | |
| 1921 | + [ | |
| 1922 | + -1, | |
| 1923 | + -1, | |
| 1924 | + -1, | |
| 1925 | + -1, | |
| 1926 | + -1, | |
| 1927 | + -1, | |
| 1928 | + -1, | |
| 1929 | + -1, | |
| 1930 | + -1, | |
| 1931 | + -1, | |
| 1932 | + -1, | |
| 1933 | + -1, | |
| 1934 | + -1, | |
| 1935 | + -1, | |
| 1936 | + -1, | |
| 1937 | + -1, | |
| 1938 | + -1, | |
| 1939 | + -1, | |
| 1940 | + -1, | |
| 1941 | + ], | |
| 1942 | + [ | |
| 1943 | + -1, | |
| 1944 | + -1, | |
| 1945 | + -1, | |
| 1946 | + -1, | |
| 1947 | + -1, | |
| 1948 | + -1, | |
| 1949 | + -1, | |
| 1950 | + -1, | |
| 1951 | + -1, | |
| 1952 | + -1, | |
| 1953 | + -1, | |
| 1954 | + -1, | |
| 1955 | + -1, | |
| 1956 | + -1, | |
| 1957 | + -1, | |
| 1958 | + -1, | |
| 1959 | + -1, | |
| 1960 | + -1, | |
| 1961 | + -1, | |
| 1962 | + ], | |
| 1963 | + [ | |
| 1964 | + -1, | |
| 1965 | + -1, | |
| 1966 | + -1, | |
| 1967 | + -1, | |
| 1968 | + -1, | |
| 1969 | + -1, | |
| 1970 | + -1, | |
| 1971 | + -1, | |
| 1972 | + -1, | |
| 1973 | + -1, | |
| 1974 | + -1, | |
| 1975 | + -1, | |
| 1976 | + -1, | |
| 1977 | + -1, | |
| 1978 | + -1, | |
| 1979 | + -1, | |
| 1980 | + -1, | |
| 1981 | + -1, | |
| 1982 | + -1, | |
| 1983 | + ], | |
| 1984 | + [ | |
| 1985 | + -1, | |
| 1986 | + -1, | |
| 1987 | + -1, | |
| 1988 | + -1, | |
| 1989 | + -1, | |
| 1990 | + -1, | |
| 1991 | + -1, | |
| 1992 | + -1, | |
| 1993 | + -1, | |
| 1994 | + -1, | |
| 1995 | + -1, | |
| 1996 | + -1, | |
| 1997 | + -1, | |
| 1998 | + -1, | |
| 1999 | + -1, | |
| 2000 | + -1, | |
| 2001 | + -1, | |
| 2002 | + -1, | |
| 2003 | + -1, | |
| 2004 | + ], | |
| 2005 | + [ | |
| 2006 | + -1, | |
| 2007 | + -1, | |
| 2008 | + 11, | |
| 2009 | + 12, | |
| 2010 | + 13, | |
| 2011 | + 14, | |
| 2012 | + 15, | |
| 2013 | + -1, | |
| 2014 | + -1, | |
| 2015 | + -1, | |
| 2016 | + -1, | |
| 2017 | + -1, | |
| 2018 | + 16, | |
| 2019 | + 17, | |
| 2020 | + 18, | |
| 2021 | + 19, | |
| 2022 | + 20, | |
| 2023 | + -1, | |
| 2024 | + -1, | |
| 2025 | + ], | |
| 2026 | + [ | |
| 2027 | + -1, | |
| 2028 | + -1, | |
| 2029 | + -1, | |
| 2030 | + -1, | |
| 2031 | + -1, | |
| 2032 | + -1, | |
| 2033 | + -1, | |
| 2034 | + -1, | |
| 2035 | + -1, | |
| 2036 | + -1, | |
| 2037 | + -1, | |
| 2038 | + -1, | |
| 2039 | + -1, | |
| 2040 | + -1, | |
| 2041 | + -1, | |
| 2042 | + -1, | |
| 2043 | + -1, | |
| 2044 | + -1, | |
| 2045 | + -1, | |
| 2046 | + ], | |
| 2047 | + [ | |
| 2048 | + -1, | |
| 2049 | + -1, | |
| 2050 | + -1, | |
| 2051 | + -1, | |
| 2052 | + -1, | |
| 2053 | + -1, | |
| 2054 | + -1, | |
| 2055 | + -1, | |
| 2056 | + -1, | |
| 2057 | + -1, | |
| 2058 | + -1, | |
| 2059 | + -1, | |
| 2060 | + -1, | |
| 2061 | + -1, | |
| 2062 | + -1, | |
| 2063 | + -1, | |
| 2064 | + -1, | |
| 2065 | + -1, | |
| 2066 | + -1, | |
| 2067 | + ], | |
| 2068 | + [ | |
| 2069 | + -1, | |
| 2070 | + -1, | |
| 2071 | + -1, | |
| 2072 | + -1, | |
| 2073 | + -1, | |
| 2074 | + -1, | |
| 2075 | + -1, | |
| 2076 | + -1, | |
| 2077 | + -1, | |
| 2078 | + -1, | |
| 2079 | + -1, | |
| 2080 | + -1, | |
| 2081 | + -1, | |
| 2082 | + -1, | |
| 2083 | + -1, | |
| 2084 | + -1, | |
| 2085 | + -1, | |
| 2086 | + -1, | |
| 2087 | + -1, | |
| 2088 | + ], | |
| 2089 | + [ | |
| 2090 | + -1, | |
| 2091 | + -1, | |
| 2092 | + -1, | |
| 2093 | + -1, | |
| 2094 | + -1, | |
| 2095 | + -1, | |
| 2096 | + -1, | |
| 2097 | + -1, | |
| 2098 | + -1, | |
| 2099 | + -1, | |
| 2100 | + -1, | |
| 2101 | + -1, | |
| 2102 | + -1, | |
| 2103 | + -1, | |
| 2104 | + -1, | |
| 2105 | + -1, | |
| 2106 | + -1, | |
| 2107 | + -1, | |
| 2108 | + -1, | |
| 2109 | + ], | |
| 2110 | + ], | |
| 2111 | + "B": [ | |
| 2112 | + [ | |
| 2113 | + -1, | |
| 2114 | + -1, | |
| 2115 | + -1, | |
| 2116 | + -1, | |
| 2117 | + -1, | |
| 2118 | + -1, | |
| 2119 | + -1, | |
| 2120 | + -1, | |
| 2121 | + -1, | |
| 2122 | + -1, | |
| 2123 | + -1, | |
| 2124 | + -1, | |
| 2125 | + -1, | |
| 2126 | + -1, | |
| 2127 | + -1, | |
| 2128 | + -1, | |
| 2129 | + -1, | |
| 2130 | + -1, | |
| 2131 | + -1, | |
| 2132 | + ], | |
| 2133 | + [ | |
| 2134 | + -1, | |
| 2135 | + -1, | |
| 2136 | + -1, | |
| 2137 | + -1, | |
| 2138 | + -1, | |
| 2139 | + -1, | |
| 2140 | + -1, | |
| 2141 | + -1, | |
| 2142 | + -1, | |
| 2143 | + -1, | |
| 2144 | + -1, | |
| 2145 | + -1, | |
| 2146 | + -1, | |
| 2147 | + -1, | |
| 2148 | + -1, | |
| 2149 | + -1, | |
| 2150 | + -1, | |
| 2151 | + -1, | |
| 2152 | + -1, | |
| 2153 | + ], | |
| 2154 | + [ | |
| 2155 | + -1, | |
| 2156 | + -1, | |
| 2157 | + -1, | |
| 2158 | + -1, | |
| 2159 | + 20, | |
| 2160 | + -1, | |
| 2161 | + -1, | |
| 2162 | + -1, | |
| 2163 | + -1, | |
| 2164 | + -1, | |
| 2165 | + -1, | |
| 2166 | + -1, | |
| 2167 | + -1, | |
| 2168 | + -1, | |
| 2169 | + 10, | |
| 2170 | + -1, | |
| 2171 | + -1, | |
| 2172 | + -1, | |
| 2173 | + -1, | |
| 2174 | + ], | |
| 2175 | + [-1, -1, -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1], | |
| 2176 | + [-1, -1, -1, -1, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, -1], | |
| 2177 | + [-1, -1, -1, -1, 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7, -1, -1, -1, -1], | |
| 2178 | + [-1, -1, -1, -1, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1], | |
| 2179 | + [ | |
| 2180 | + -1, | |
| 2181 | + -1, | |
| 2182 | + -1, | |
| 2183 | + -1, | |
| 2184 | + -1, | |
| 2185 | + -1, | |
| 2186 | + -1, | |
| 2187 | + -1, | |
| 2188 | + -1, | |
| 2189 | + -1, | |
| 2190 | + -1, | |
| 2191 | + -1, | |
| 2192 | + -1, | |
| 2193 | + -1, | |
| 2194 | + -1, | |
| 2195 | + -1, | |
| 2196 | + -1, | |
| 2197 | + -1, | |
| 2198 | + -1, | |
| 2199 | + ], | |
| 2200 | + [ | |
| 2201 | + -1, | |
| 2202 | + -1, | |
| 2203 | + -1, | |
| 2204 | + -1, | |
| 2205 | + -1, | |
| 2206 | + -1, | |
| 2207 | + -1, | |
| 2208 | + -1, | |
| 2209 | + -1, | |
| 2210 | + -1, | |
| 2211 | + -1, | |
| 2212 | + -1, | |
| 2213 | + -1, | |
| 2214 | + -1, | |
| 2215 | + -1, | |
| 2216 | + -1, | |
| 2217 | + -1, | |
| 2218 | + -1, | |
| 2219 | + -1, | |
| 2220 | + ], | |
| 2221 | + [ | |
| 2222 | + -1, | |
| 2223 | + -1, | |
| 2224 | + -1, | |
| 2225 | + -1, | |
| 2226 | + -1, | |
| 2227 | + -1, | |
| 2228 | + -1, | |
| 2229 | + -1, | |
| 2230 | + -1, | |
| 2231 | + -1, | |
| 2232 | + -1, | |
| 2233 | + -1, | |
| 2234 | + -1, | |
| 2235 | + -1, | |
| 2236 | + -1, | |
| 2237 | + -1, | |
| 2238 | + -1, | |
| 2239 | + -1, | |
| 2240 | + -1, | |
| 2241 | + ], | |
| 2242 | + [ | |
| 2243 | + -1, | |
| 2244 | + -1, | |
| 2245 | + -1, | |
| 2246 | + -1, | |
| 2247 | + -1, | |
| 2248 | + -1, | |
| 2249 | + -1, | |
| 2250 | + -1, | |
| 2251 | + -1, | |
| 2252 | + -1, | |
| 2253 | + -1, | |
| 2254 | + -1, | |
| 2255 | + -1, | |
| 2256 | + -1, | |
| 2257 | + -1, | |
| 2258 | + -1, | |
| 2259 | + -1, | |
| 2260 | + -1, | |
| 2261 | + -1, | |
| 2262 | + ], | |
| 2263 | + [ | |
| 2264 | + -1, | |
| 2265 | + -1, | |
| 2266 | + -1, | |
| 2267 | + -1, | |
| 2268 | + -1, | |
| 2269 | + -1, | |
| 2270 | + -1, | |
| 2271 | + -1, | |
| 2272 | + -1, | |
| 2273 | + -1, | |
| 2274 | + -1, | |
| 2275 | + -1, | |
| 2276 | + -1, | |
| 2277 | + -1, | |
| 2278 | + -1, | |
| 2279 | + -1, | |
| 2280 | + -1, | |
| 2281 | + -1, | |
| 2282 | + -1, | |
| 2283 | + ], | |
| 2284 | + [-1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, -1, -1, -1, -1], | |
| 2285 | + [-1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1], | |
| 2286 | + [-1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, -1, -1], | |
| 2287 | + [-1, -1, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1], | |
| 2288 | + [-1, -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1], | |
| 2289 | + [ | |
| 2290 | + -1, | |
| 2291 | + -1, | |
| 2292 | + -1, | |
| 2293 | + -1, | |
| 2294 | + -1, | |
| 2295 | + -1, | |
| 2296 | + -1, | |
| 2297 | + -1, | |
| 2298 | + -1, | |
| 2299 | + -1, | |
| 2300 | + -1, | |
| 2301 | + -1, | |
| 2302 | + -1, | |
| 2303 | + -1, | |
| 2304 | + -1, | |
| 2305 | + -1, | |
| 2306 | + -1, | |
| 2307 | + -1, | |
| 2308 | + -1, | |
| 2309 | + ], | |
| 2310 | + [ | |
| 2311 | + -1, | |
| 2312 | + -1, | |
| 2313 | + -1, | |
| 2314 | + -1, | |
| 2315 | + -1, | |
| 2316 | + -1, | |
| 2317 | + -1, | |
| 2318 | + -1, | |
| 2319 | + -1, | |
| 2320 | + -1, | |
| 2321 | + -1, | |
| 2322 | + -1, | |
| 2323 | + -1, | |
| 2324 | + -1, | |
| 2325 | + -1, | |
| 2326 | + -1, | |
| 2327 | + -1, | |
| 2328 | + -1, | |
| 2329 | + -1, | |
| 2330 | + ], | |
| 2331 | + ], | |
| 2332 | + }, | |
| 2333 | + "concentric": { | |
| 2334 | + "A": [ | |
| 2335 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2336 | + [-1, -1, -1, -1, -1, 1, 2, 3, 4, 5, -1, -1, -1, -1, -1, -1], | |
| 2337 | + [-1, -1, -1, -1, 28, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1], | |
| 2338 | + [-1, -1, -1, 27, -1, -1, -1, -1, -1, -1, -1, 7, -1, -1, -1, -1], | |
| 2339 | + [-1, -1, 26, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, -1], | |
| 2340 | + [-1, -1, 25, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1], | |
| 2341 | + [-1, -1, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, -1], | |
| 2342 | + [-1, -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11, -1, -1, -1], | |
| 2343 | + [-1, -1, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, -1, -1, -1], | |
| 2344 | + [-1, -1, -1, 21, -1, -1, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1], | |
| 2345 | + [-1, -1, -1, -1, 20, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1], | |
| 2346 | + [-1, -1, -1, -1, -1, 19, 18, 17, 16, 15, -1, -1, -1, -1, -1, -1], | |
| 2347 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2348 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2349 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2350 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2351 | + ], | |
| 2352 | + "B": [ | |
| 2353 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2354 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2355 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2356 | + [-1, -1, -1, -1, -1, -1, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1], | |
| 2357 | + [-1, -1, -1, -1, -1, 16, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1], | |
| 2358 | + [-1, -1, -1, -1, 15, -1, -1, -1, -1, -1, 5, -1, -1, -1, -1, -1], | |
| 2359 | + [-1, -1, -1, -1, 14, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1], | |
| 2360 | + [-1, -1, -1, -1, 13, -1, -1, -1, -1, -1, 7, -1, -1, -1, -1, -1], | |
| 2361 | + [-1, -1, -1, -1, -1, 12, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1], | |
| 2362 | + [-1, -1, -1, -1, -1, -1, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1], | |
| 2363 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2364 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2365 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2366 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2367 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2368 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2369 | + ], | |
| 2370 | + "C": [ | |
| 2371 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2372 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2373 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2374 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2375 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2376 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2377 | + [-1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, -1], | |
| 2378 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2379 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2380 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2381 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2382 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2383 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2384 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2385 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2386 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2387 | + ], | |
| 2388 | + }, | |
| 2389 | + "metronome": { | |
| 2390 | + "A": [ | |
| 2391 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2392 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2393 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2394 | + [-1, -1, -1, -1, 1, 2, 3, 4, 5, 6, 7, 8, -1, -1, -1, -1], | |
| 2395 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2396 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2397 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2398 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2399 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2400 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2401 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2402 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2403 | + ], | |
| 2404 | + "B": [ | |
| 2405 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2406 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2407 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2408 | + [-1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2409 | + [-1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2410 | + [-1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2411 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2412 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2413 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2414 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2415 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2416 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2417 | + ], | |
| 2418 | + "C": [ | |
| 2419 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2420 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2421 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2422 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2423 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2424 | + [-1, -1, -1, -1, 1, 2, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2425 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2426 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2427 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2428 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2429 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2430 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2431 | + ], | |
| 2432 | + "D": [ | |
| 2433 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2434 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2435 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2436 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2437 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2438 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2439 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2440 | + [-1, -1, -1, -1, -1, -1, -1, 1, 2, -1, -1, -1, -1, -1, -1, -1], | |
| 2441 | + [-1, -1, -1, -1, -1, -1, -1, 4, 3, -1, -1, -1, -1, -1, -1, -1], | |
| 2442 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2443 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2444 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2445 | + ], | |
| 2446 | + }, | |
| 2447 | + "yzzznxxvju": { | |
| 2448 | + "A": [ | |
| 2449 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2450 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2451 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2452 | + [-1, -1, -1, -1, 1, 2, 3, 4, 5, 6, 7, 8, -1, -1, -1, -1], | |
| 2453 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2454 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2455 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2456 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2457 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2458 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2459 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2460 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2461 | + ], | |
| 2462 | + "B": [ | |
| 2463 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2464 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2465 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2466 | + [-1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2467 | + [-1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2468 | + [-1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2469 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2470 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2471 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2472 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2473 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2474 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2475 | + ], | |
| 2476 | + "C": [ | |
| 2477 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2478 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2479 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2480 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2481 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2482 | + [-1, -1, -1, -1, 1, 2, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2483 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2484 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2485 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2486 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2487 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2488 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2489 | + ], | |
| 2490 | + "D": [ | |
| 2491 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2492 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2493 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2494 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2495 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2496 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2497 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2498 | + [-1, -1, -1, -1, -1, -1, -1, 1, 2, -1, -1, -1, -1, -1, -1, -1], | |
| 2499 | + [-1, -1, -1, -1, -1, -1, -1, 4, 3, -1, -1, -1, -1, -1, -1, -1], | |
| 2500 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2501 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2502 | + [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 2503 | + ], | |
| 2504 | + }, | |
| 2505 | + "hmzsasouat": { | |
| 2506 | + "A": [ | |
| 2507 | + [ | |
| 2508 | + -1, | |
| 2509 | + -1, | |
| 2510 | + -1, | |
| 2511 | + -1, | |
| 2512 | + -1, | |
| 2513 | + -1, | |
| 2514 | + -1, | |
| 2515 | + -1, | |
| 2516 | + -1, | |
| 2517 | + -1, | |
| 2518 | + -1, | |
| 2519 | + -1, | |
| 2520 | + -1, | |
| 2521 | + -1, | |
| 2522 | + -1, | |
| 2523 | + -1, | |
| 2524 | + -1, | |
| 2525 | + -1, | |
| 2526 | + -1, | |
| 2527 | + -1, | |
| 2528 | + ], | |
| 2529 | + [ | |
| 2530 | + -1, | |
| 2531 | + -1, | |
| 2532 | + -1, | |
| 2533 | + -1, | |
| 2534 | + -1, | |
| 2535 | + -1, | |
| 2536 | + -1, | |
| 2537 | + -1, | |
| 2538 | + -1, | |
| 2539 | + -1, | |
| 2540 | + -1, | |
| 2541 | + -1, | |
| 2542 | + -1, | |
| 2543 | + -1, | |
| 2544 | + -1, | |
| 2545 | + -1, | |
| 2546 | + -1, | |
| 2547 | + -1, | |
| 2548 | + -1, | |
| 2549 | + -1, | |
| 2550 | + ], | |
| 2551 | + [ | |
| 2552 | + -1, | |
| 2553 | + -1, | |
| 2554 | + -1, | |
| 2555 | + -1, | |
| 2556 | + -1, | |
| 2557 | + -1, | |
| 2558 | + -1, | |
| 2559 | + -1, | |
| 2560 | + -1, | |
| 2561 | + -1, | |
| 2562 | + -1, | |
| 2563 | + -1, | |
| 2564 | + -1, | |
| 2565 | + -1, | |
| 2566 | + -1, | |
| 2567 | + -1, | |
| 2568 | + -1, | |
| 2569 | + -1, | |
| 2570 | + -1, | |
| 2571 | + -1, | |
| 2572 | + ], | |
| 2573 | + [ | |
| 2574 | + -1, | |
| 2575 | + -1, | |
| 2576 | + -1, | |
| 2577 | + -1, | |
| 2578 | + -1, | |
| 2579 | + -1, | |
| 2580 | + 1, | |
| 2581 | + -1, | |
| 2582 | + -1, | |
| 2583 | + -1, | |
| 2584 | + -1, | |
| 2585 | + -1, | |
| 2586 | + -1, | |
| 2587 | + -1, | |
| 2588 | + -1, | |
| 2589 | + -1, | |
| 2590 | + -1, | |
| 2591 | + -1, | |
| 2592 | + -1, | |
| 2593 | + -1, | |
| 2594 | + ], | |
| 2595 | + [ | |
| 2596 | + -1, | |
| 2597 | + -1, | |
| 2598 | + -1, | |
| 2599 | + -1, | |
| 2600 | + -1, | |
| 2601 | + -1, | |
| 2602 | + -1, | |
| 2603 | + 2, | |
| 2604 | + -1, | |
| 2605 | + -1, | |
| 2606 | + -1, | |
| 2607 | + -1, | |
| 2608 | + -1, | |
| 2609 | + -1, | |
| 2610 | + -1, | |
| 2611 | + -1, | |
| 2612 | + -1, | |
| 2613 | + -1, | |
| 2614 | + -1, | |
| 2615 | + -1, | |
| 2616 | + ], | |
| 2617 | + [ | |
| 2618 | + -1, | |
| 2619 | + -1, | |
| 2620 | + -1, | |
| 2621 | + -1, | |
| 2622 | + -1, | |
| 2623 | + -1, | |
| 2624 | + -1, | |
| 2625 | + -1, | |
| 2626 | + -1, | |
| 2627 | + -1, | |
| 2628 | + -1, | |
| 2629 | + -1, | |
| 2630 | + -1, | |
| 2631 | + -1, | |
| 2632 | + -1, | |
| 2633 | + -1, | |
| 2634 | + -1, | |
| 2635 | + -1, | |
| 2636 | + -1, | |
| 2637 | + -1, | |
| 2638 | + ], | |
| 2639 | + [ | |
| 2640 | + -1, | |
| 2641 | + -1, | |
| 2642 | + -1, | |
| 2643 | + -1, | |
| 2644 | + -1, | |
| 2645 | + -1, | |
| 2646 | + -1, | |
| 2647 | + -1, | |
| 2648 | + -1, | |
| 2649 | + -1, | |
| 2650 | + -1, | |
| 2651 | + -1, | |
| 2652 | + -1, | |
| 2653 | + -1, | |
| 2654 | + -1, | |
| 2655 | + -1, | |
| 2656 | + -1, | |
| 2657 | + -1, | |
| 2658 | + -1, | |
| 2659 | + -1, | |
| 2660 | + ], | |
| 2661 | + [ | |
| 2662 | + -1, | |
| 2663 | + -1, | |
| 2664 | + -1, | |
| 2665 | + -1, | |
| 2666 | + -1, | |
| 2667 | + -1, | |
| 2668 | + -1, | |
| 2669 | + -1, | |
| 2670 | + -1, | |
| 2671 | + -1, | |
| 2672 | + -1, | |
| 2673 | + -1, | |
| 2674 | + -1, | |
| 2675 | + -1, | |
| 2676 | + -1, | |
| 2677 | + -1, | |
| 2678 | + -1, | |
| 2679 | + -1, | |
| 2680 | + -1, | |
| 2681 | + -1, | |
| 2682 | + ], | |
| 2683 | + [ | |
| 2684 | + -1, | |
| 2685 | + -1, | |
| 2686 | + -1, | |
| 2687 | + -1, | |
| 2688 | + -1, | |
| 2689 | + -1, | |
| 2690 | + -1, | |
| 2691 | + -1, | |
| 2692 | + -1, | |
| 2693 | + -1, | |
| 2694 | + -1, | |
| 2695 | + -1, | |
| 2696 | + -1, | |
| 2697 | + -1, | |
| 2698 | + -1, | |
| 2699 | + -1, | |
| 2700 | + -1, | |
| 2701 | + -1, | |
| 2702 | + -1, | |
| 2703 | + -1, | |
| 2704 | + ], | |
| 2705 | + [ | |
| 2706 | + -1, | |
| 2707 | + -1, | |
| 2708 | + -1, | |
| 2709 | + -1, | |
| 2710 | + -1, | |
| 2711 | + -1, | |
| 2712 | + -1, | |
| 2713 | + -1, | |
| 2714 | + -1, | |
| 2715 | + -1, | |
| 2716 | + -1, | |
| 2717 | + -1, | |
| 2718 | + -1, | |
| 2719 | + -1, | |
| 2720 | + -1, | |
| 2721 | + -1, | |
| 2722 | + -1, | |
| 2723 | + -1, | |
| 2724 | + -1, | |
| 2725 | + -1, | |
| 2726 | + ], | |
| 2727 | + [ | |
| 2728 | + -1, | |
| 2729 | + -1, | |
| 2730 | + -1, | |
| 2731 | + -1, | |
| 2732 | + -1, | |
| 2733 | + -1, | |
| 2734 | + -1, | |
| 2735 | + -1, | |
| 2736 | + -1, | |
| 2737 | + -1, | |
| 2738 | + -1, | |
| 2739 | + -1, | |
| 2740 | + -1, | |
| 2741 | + -1, | |
| 2742 | + -1, | |
| 2743 | + -1, | |
| 2744 | + -1, | |
| 2745 | + -1, | |
| 2746 | + -1, | |
| 2747 | + -1, | |
| 2748 | + ], | |
| 2749 | + [ | |
| 2750 | + -1, | |
| 2751 | + -1, | |
| 2752 | + -1, | |
| 2753 | + -1, | |
| 2754 | + -1, | |
| 2755 | + -1, | |
| 2756 | + -1, | |
| 2757 | + -1, | |
| 2758 | + -1, | |
| 2759 | + -1, | |
| 2760 | + -1, | |
| 2761 | + -1, | |
| 2762 | + -1, | |
| 2763 | + -1, | |
| 2764 | + -1, | |
| 2765 | + -1, | |
| 2766 | + -1, | |
| 2767 | + -1, | |
| 2768 | + -1, | |
| 2769 | + -1, | |
| 2770 | + ], | |
| 2771 | + [ | |
| 2772 | + -1, | |
| 2773 | + -1, | |
| 2774 | + -1, | |
| 2775 | + -1, | |
| 2776 | + -1, | |
| 2777 | + -1, | |
| 2778 | + -1, | |
| 2779 | + -1, | |
| 2780 | + -1, | |
| 2781 | + -1, | |
| 2782 | + -1, | |
| 2783 | + -1, | |
| 2784 | + -1, | |
| 2785 | + -1, | |
| 2786 | + -1, | |
| 2787 | + -1, | |
| 2788 | + -1, | |
| 2789 | + -1, | |
| 2790 | + -1, | |
| 2791 | + -1, | |
| 2792 | + ], | |
| 2793 | + [ | |
| 2794 | + -1, | |
| 2795 | + -1, | |
| 2796 | + -1, | |
| 2797 | + -1, | |
| 2798 | + -1, | |
| 2799 | + -1, | |
| 2800 | + -1, | |
| 2801 | + -1, | |
| 2802 | + -1, | |
| 2803 | + -1, | |
| 2804 | + -1, | |
| 2805 | + -1, | |
| 2806 | + -1, | |
| 2807 | + -1, | |
| 2808 | + -1, | |
| 2809 | + -1, | |
| 2810 | + -1, | |
| 2811 | + -1, | |
| 2812 | + -1, | |
| 2813 | + -1, | |
| 2814 | + ], | |
| 2815 | + [ | |
| 2816 | + -1, | |
| 2817 | + -1, | |
| 2818 | + -1, | |
| 2819 | + -1, | |
| 2820 | + -1, | |
| 2821 | + -1, | |
| 2822 | + -1, | |
| 2823 | + -1, | |
| 2824 | + -1, | |
| 2825 | + -1, | |
| 2826 | + -1, | |
| 2827 | + -1, | |
| 2828 | + -1, | |
| 2829 | + -1, | |
| 2830 | + -1, | |
| 2831 | + -1, | |
| 2832 | + -1, | |
| 2833 | + -1, | |
| 2834 | + -1, | |
| 2835 | + -1, | |
| 2836 | + ], | |
| 2837 | + [ | |
| 2838 | + -1, | |
| 2839 | + -1, | |
| 2840 | + -1, | |
| 2841 | + -1, | |
| 2842 | + -1, | |
| 2843 | + -1, | |
| 2844 | + -1, | |
| 2845 | + -1, | |
| 2846 | + -1, | |
| 2847 | + -1, | |
| 2848 | + -1, | |
| 2849 | + -1, | |
| 2850 | + -1, | |
| 2851 | + -1, | |
| 2852 | + -1, | |
| 2853 | + -1, | |
| 2854 | + -1, | |
| 2855 | + -1, | |
| 2856 | + -1, | |
| 2857 | + -1, | |
| 2858 | + ], | |
| 2859 | + [ | |
| 2860 | + -1, | |
| 2861 | + -1, | |
| 2862 | + -1, | |
| 2863 | + -1, | |
| 2864 | + -1, | |
| 2865 | + -1, | |
| 2866 | + -1, | |
| 2867 | + -1, | |
| 2868 | + -1, | |
| 2869 | + -1, | |
| 2870 | + -1, | |
| 2871 | + -1, | |
| 2872 | + -1, | |
| 2873 | + -1, | |
| 2874 | + -1, | |
| 2875 | + -1, | |
| 2876 | + -1, | |
| 2877 | + -1, | |
| 2878 | + -1, | |
| 2879 | + -1, | |
| 2880 | + ], | |
| 2881 | + [ | |
| 2882 | + -1, | |
| 2883 | + -1, | |
| 2884 | + -1, | |
| 2885 | + -1, | |
| 2886 | + -1, | |
| 2887 | + -1, | |
| 2888 | + -1, | |
| 2889 | + -1, | |
| 2890 | + -1, | |
| 2891 | + -1, | |
| 2892 | + -1, | |
| 2893 | + -1, | |
| 2894 | + -1, | |
| 2895 | + -1, | |
| 2896 | + -1, | |
| 2897 | + -1, | |
| 2898 | + -1, | |
| 2899 | + -1, | |
| 2900 | + -1, | |
| 2901 | + -1, | |
| 2902 | + ], | |
| 2903 | + [ | |
| 2904 | + -1, | |
| 2905 | + -1, | |
| 2906 | + -1, | |
| 2907 | + -1, | |
| 2908 | + -1, | |
| 2909 | + -1, | |
| 2910 | + -1, | |
| 2911 | + -1, | |
| 2912 | + -1, | |
| 2913 | + -1, | |
| 2914 | + -1, | |
| 2915 | + -1, | |
| 2916 | + -1, | |
| 2917 | + -1, | |
| 2918 | + -1, | |
| 2919 | + -1, | |
| 2920 | + -1, | |
| 2921 | + -1, | |
| 2922 | + -1, | |
| 2923 | + -1, | |
| 2924 | + ], | |
| 2925 | + [ | |
| 2926 | + -1, | |
| 2927 | + -1, | |
| 2928 | + -1, | |
| 2929 | + -1, | |
| 2930 | + -1, | |
| 2931 | + -1, | |
| 2932 | + -1, | |
| 2933 | + -1, | |
| 2934 | + -1, | |
| 2935 | + -1, | |
| 2936 | + -1, | |
| 2937 | + -1, | |
| 2938 | + -1, | |
| 2939 | + -1, | |
| 2940 | + -1, | |
| 2941 | + -1, | |
| 2942 | + -1, | |
| 2943 | + -1, | |
| 2944 | + -1, | |
| 2945 | + -1, | |
| 2946 | + ], | |
| 2947 | + [ | |
| 2948 | + -1, | |
| 2949 | + -1, | |
| 2950 | + -1, | |
| 2951 | + -1, | |
| 2952 | + -1, | |
| 2953 | + -1, | |
| 2954 | + -1, | |
| 2955 | + -1, | |
| 2956 | + -1, | |
| 2957 | + -1, | |
| 2958 | + -1, | |
| 2959 | + -1, | |
| 2960 | + -1, | |
| 2961 | + -1, | |
| 2962 | + -1, | |
| 2963 | + -1, | |
| 2964 | + -1, | |
| 2965 | + -1, | |
| 2966 | + -1, | |
| 2967 | + -1, | |
| 2968 | + ], | |
| 2969 | + ], | |
| 2970 | + "B": [ | |
| 2971 | + [ | |
| 2972 | + -1, | |
| 2973 | + -1, | |
| 2974 | + -1, | |
| 2975 | + -1, | |
| 2976 | + -1, | |
| 2977 | + -1, | |
| 2978 | + -1, | |
| 2979 | + -1, | |
| 2980 | + -1, | |
| 2981 | + -1, | |
| 2982 | + -1, | |
| 2983 | + -1, | |
| 2984 | + -1, | |
| 2985 | + -1, | |
| 2986 | + -1, | |
| 2987 | + -1, | |
| 2988 | + -1, | |
| 2989 | + -1, | |
| 2990 | + -1, | |
| 2991 | + -1, | |
| 2992 | + ], | |
| 2993 | + [ | |
| 2994 | + -1, | |
| 2995 | + -1, | |
| 2996 | + -1, | |
| 2997 | + -1, | |
| 2998 | + -1, | |
| 2999 | + -1, | |
| Diff truncated — view the file for the rest. | ||
+19 −0 referee/environment_files/lp85/305b61c3/metadata.json added View file
| @@ -0,0 +1,19 @@ | ||
| 1 | +{ | |
| 2 | + "game_id": "lp85-305b61c3", | |
| 3 | + "title": "LP85", | |
| 4 | + "default_fps": 20, | |
| 5 | + "tags": [ | |
| 6 | + "click" | |
| 7 | + ], | |
| 8 | + "baseline_actions": [ | |
| 9 | + 17, | |
| 10 | + 38, | |
| 11 | + 31, | |
| 12 | + 16, | |
| 13 | + 41, | |
| 14 | + 60, | |
| 15 | + 26, | |
| 16 | + 159 | |
| 17 | + ], | |
| 18 | + "date_downloaded": "2026-10-21T17:11:14.832253+00:00" | |
| 19 | +} | |
+2060 −0 referee/environment_files/ls20/9607627b/ls20.py added View file
| @@ -0,0 +1,2060 @@ | ||
| 1 | +# MIT License | |
| 2 | +# | |
| 3 | +# Copyright (c) 2026 ARC Prize Foundation | |
| 4 | +# | |
| 5 | +# Permission is hereby granted, free of charge, to any person obtaining a copy | |
| 6 | +# of this software and associated documentation files (the "Software"), to deal | |
| 7 | +# in the Software without restriction, including without limitation the rights | |
| 8 | +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| 9 | +# copies of the Software, and to permit persons to whom the Software is | |
| 10 | +# furnished to do so, subject to the following conditions: | |
| 11 | +# | |
| 12 | +# The above copyright notice and this permission notice shall be included in all | |
| 13 | +# copies or substantial portions of the Software. | |
| 14 | +# | |
| 15 | +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| 16 | +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| 17 | +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| 18 | +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| 19 | +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| 20 | +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| 21 | +# SOFTWARE. | |
| 22 | + | |
| 23 | +import math | |
| 24 | +from typing import List, Optional, Set, Tuple | |
| 25 | + | |
| 26 | +import numpy as np | |
| 27 | +from arcengine import ( | |
| 28 | + ARCBaseGame, | |
| 29 | + BlockingMode, | |
| 30 | + Camera, | |
| 31 | + GameAction, | |
| 32 | + Level, | |
| 33 | + RenderableUserDisplay, | |
| 34 | + Sprite, | |
| 35 | +) | |
| 36 | + | |
| 37 | +"." | |
| 38 | +sprites = { | |
| 39 | + "ajdspzphhd": Sprite( | |
| 40 | + pixels=[ | |
| 41 | + [14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14], | |
| 42 | + ], | |
| 43 | + name="ajdspzphhd", | |
| 44 | + visible=False, | |
| 45 | + collidable=True, | |
| 46 | + tags=["xfmluydglp"], | |
| 47 | + ), | |
| 48 | + "eqatonpohu": Sprite( | |
| 49 | + pixels=[ | |
| 50 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 51 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 52 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 53 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 54 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 55 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 56 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 57 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 58 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 59 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 60 | + ], | |
| 61 | + name="eqatonpohu", | |
| 62 | + visible=True, | |
| 63 | + collidable=True, | |
| 64 | + tags=["eqatonpohu"], | |
| 65 | + layer=1, | |
| 66 | + ), | |
| 67 | + "fesygzfqui": Sprite( | |
| 68 | + pixels=[ | |
| 69 | + [4, 4, 4, 4, -2], | |
| 70 | + [4, 4, 4, 4, -2], | |
| 71 | + [4, 4, 4, 4, -2], | |
| 72 | + [4, 4, 4, 4, -2], | |
| 73 | + [4, 4, 4, 4, -2], | |
| 74 | + ], | |
| 75 | + name="fesygzfqui", | |
| 76 | + visible=True, | |
| 77 | + collidable=True, | |
| 78 | + tags=["ihdgageizm"], | |
| 79 | + layer=-5, | |
| 80 | + ), | |
| 81 | + "fywfjzkxlm": Sprite( | |
| 82 | + pixels=[ | |
| 83 | + [-1, 0, -1], | |
| 84 | + [-1, 0, -1], | |
| 85 | + [0, 0, 0], | |
| 86 | + ], | |
| 87 | + name="fywfjzkxlm", | |
| 88 | + visible=True, | |
| 89 | + collidable=True, | |
| 90 | + ), | |
| 91 | + "ghizzeqtoh": Sprite( | |
| 92 | + pixels=[ | |
| 93 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 94 | + [0, -1, -1, -1, -1, -1, -1, -1, -1, 0], | |
| 95 | + [0, -1, -1, -1, -1, -1, -1, -1, -1, 0], | |
| 96 | + [0, -1, -1, -1, -1, -1, -1, -1, -1, 0], | |
| 97 | + [0, -1, -1, -1, -1, -1, -1, -1, -1, 0], | |
| 98 | + [0, -1, -1, -1, -1, -1, -1, -1, -1, 0], | |
| 99 | + [0, -1, -1, -1, -1, -1, -1, -1, -1, 0], | |
| 100 | + [0, -1, -1, -1, -1, -1, -1, -1, -1, 0], | |
| 101 | + [0, -1, -1, -1, -1, -1, -1, -1, -1, 0], | |
| 102 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 103 | + ], | |
| 104 | + name="ghizzeqtoh", | |
| 105 | + visible=False, | |
| 106 | + collidable=True, | |
| 107 | + tags=["ghizzeqtoh"], | |
| 108 | + layer=5, | |
| 109 | + ), | |
| 110 | + "gngifvjddu": Sprite( | |
| 111 | + pixels=[ | |
| 112 | + [0, 0, -1], | |
| 113 | + [-1, 0, 0], | |
| 114 | + [0, -1, 0], | |
| 115 | + ], | |
| 116 | + name="gngifvjddu", | |
| 117 | + visible=True, | |
| 118 | + collidable=True, | |
| 119 | + ), | |
| 120 | + "grcpfuizfp": Sprite( | |
| 121 | + pixels=[ | |
| 122 | + [-1, 0, -1], | |
| 123 | + [0, 0, -1], | |
| 124 | + [-1, 0, 0], | |
| 125 | + ], | |
| 126 | + name="grcpfuizfp", | |
| 127 | + visible=True, | |
| 128 | + collidable=True, | |
| 129 | + layer=1, | |
| 130 | + ), | |
| 131 | + "hahdypcdru": Sprite( | |
| 132 | + pixels=[ | |
| 133 | + [14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14], | |
| 134 | + ], | |
| 135 | + name="hahdypcdru", | |
| 136 | + visible=False, | |
| 137 | + collidable=True, | |
| 138 | + tags=["xfmluydglp"], | |
| 139 | + ), | |
| 140 | + "hoswmpiqkw": Sprite( | |
| 141 | + pixels=[ | |
| 142 | + [0, 0, 0, 0, 0, 0, 0], | |
| 143 | + [0, -1, -1, -1, -1, -1, 0], | |
| 144 | + [0, -1, -1, -1, -1, -1, 0], | |
| 145 | + [0, -1, -1, -1, -1, -1, 0], | |
| 146 | + [0, -1, -1, -1, -1, -1, 0], | |
| 147 | + [0, -1, -1, -1, -1, -1, 0], | |
| 148 | + [0, 0, 0, 0, 0, 0, 0], | |
| 149 | + ], | |
| 150 | + name="hoswmpiqkw", | |
| 151 | + visible=False, | |
| 152 | + collidable=True, | |
| 153 | + tags=["hoswmpiqkw"], | |
| 154 | + layer=-1, | |
| 155 | + ), | |
| 156 | + "ihdgageizm": Sprite( | |
| 157 | + pixels=[ | |
| 158 | + [4, 4, 4, 4, 4], | |
| 159 | + [4, 4, 4, 4, 4], | |
| 160 | + [4, 4, 4, 4, 4], | |
| 161 | + [4, 4, 4, 4, 4], | |
| 162 | + [4, 4, 4, 4, 4], | |
| 163 | + ], | |
| 164 | + name="ihdgageizm", | |
| 165 | + visible=True, | |
| 166 | + collidable=True, | |
| 167 | + tags=["ihdgageizm"], | |
| 168 | + layer=-5, | |
| 169 | + ), | |
| 170 | + "irgjxweouz": Sprite( | |
| 171 | + pixels=[ | |
| 172 | + [14], | |
| 173 | + [14], | |
| 174 | + [14], | |
| 175 | + [14], | |
| 176 | + [14], | |
| 177 | + [14], | |
| 178 | + [14], | |
| 179 | + [14], | |
| 180 | + [14], | |
| 181 | + [14], | |
| 182 | + [14], | |
| 183 | + [14], | |
| 184 | + [14], | |
| 185 | + [14], | |
| 186 | + [14], | |
| 187 | + [14], | |
| 188 | + [14], | |
| 189 | + [14], | |
| 190 | + [14], | |
| 191 | + [14], | |
| 192 | + [14], | |
| 193 | + [14], | |
| 194 | + [14], | |
| 195 | + [14], | |
| 196 | + [14], | |
| 197 | + [14], | |
| 198 | + [14], | |
| 199 | + [14], | |
| 200 | + [14], | |
| 201 | + ], | |
| 202 | + name="irgjxweouz", | |
| 203 | + visible=False, | |
| 204 | + collidable=True, | |
| 205 | + tags=["xfmluydglp"], | |
| 206 | + ), | |
| 207 | + "kapcaakvb_b": Sprite( | |
| 208 | + pixels=[ | |
| 209 | + [1, 1, 1, 1, 1], | |
| 210 | + [-2, -2, -2, -2, -2], | |
| 211 | + [-2, -2, -2, -2, -2], | |
| 212 | + [-2, -2, -2, -2, -2], | |
| 213 | + [-2, -2, -2, -2, -2], | |
| 214 | + ], | |
| 215 | + name="kapcaakvb_b", | |
| 216 | + visible=True, | |
| 217 | + collidable=True, | |
| 218 | + tags=["gbvqrjtaqo"], | |
| 219 | + ), | |
| 220 | + "krdypjjivz": Sprite( | |
| 221 | + pixels=[ | |
| 222 | + [-2, -2, -2, -2, -2], | |
| 223 | + [4, 4, 4, 4, 4], | |
| 224 | + [4, 4, 4, 4, 4], | |
| 225 | + [4, 4, 4, 4, 4], | |
| 226 | + [4, 4, 4, 4, 4], | |
| 227 | + ], | |
| 228 | + name="krdypjjivz", | |
| 229 | + visible=True, | |
| 230 | + collidable=True, | |
| 231 | + tags=["ihdgageizm"], | |
| 232 | + layer=-5, | |
| 233 | + ), | |
| 234 | + "kvynsvxbpi": Sprite( | |
| 235 | + pixels=[ | |
| 236 | + [0, -1, -1], | |
| 237 | + [-1, 0, -1], | |
| 238 | + [-1, -1, 0], | |
| 239 | + ], | |
| 240 | + name="kvynsvxbpi", | |
| 241 | + visible=True, | |
| 242 | + collidable=True, | |
| 243 | + tags=["kvynsvxbpi"], | |
| 244 | + ), | |
| 245 | + "lujfinsby_t": Sprite( | |
| 246 | + pixels=[ | |
| 247 | + [-2, -2, -2, -2, -2], | |
| 248 | + [-2, -2, -2, -2, -2], | |
| 249 | + [-2, -2, -2, -2, -2], | |
| 250 | + [-2, -2, -2, -2, -2], | |
| 251 | + [1, 1, 1, 1, 1], | |
| 252 | + ], | |
| 253 | + name="lujfinsby_t", | |
| 254 | + visible=True, | |
| 255 | + collidable=True, | |
| 256 | + tags=["gbvqrjtaqo"], | |
| 257 | + ), | |
| 258 | + "mkfbgalsbe": Sprite( | |
| 259 | + pixels=[ | |
| 260 | + [0, -1, 0], | |
| 261 | + [0, -1, 0], | |
| 262 | + [0, 0, 0], | |
| 263 | + ], | |
| 264 | + name="mkfbgalsbe", | |
| 265 | + visible=True, | |
| 266 | + collidable=True, | |
| 267 | + ), | |
| 268 | + "mkjdaccuuf": Sprite( | |
| 269 | + pixels=[ | |
| 270 | + [-2, -2, -2, -2, -2], | |
| 271 | + [-2, 0, -2, -2, -2], | |
| 272 | + [-2, -2, 0, 0, -2], | |
| 273 | + [-2, -2, 0, -2, -2], | |
| 274 | + [-2, -2, -2, -2, -2], | |
| 275 | + ], | |
| 276 | + name="mkjdaccuuf", | |
| 277 | + visible=True, | |
| 278 | + collidable=False, | |
| 279 | + tags=["ttfwljgohq"], | |
| 280 | + layer=-1, | |
| 281 | + ), | |
| 282 | + "mxfhnkdzvf": Sprite( | |
| 283 | + pixels=[ | |
| 284 | + [4, 4, 4, 4, 4], | |
| 285 | + [4, 4, 4, 4, 4], | |
| 286 | + [4, 4, 4, 4, 4], | |
| 287 | + [4, 4, 4, 4, 4], | |
| 288 | + [-2, -2, -2, -2, -2], | |
| 289 | + ], | |
| 290 | + name="mxfhnkdzvf", | |
| 291 | + visible=True, | |
| 292 | + collidable=True, | |
| 293 | + tags=["ihdgageizm"], | |
| 294 | + layer=-5, | |
| 295 | + ), | |
| 296 | + "neltxxziap": Sprite( | |
| 297 | + pixels=[ | |
| 298 | + [14], | |
| 299 | + [14], | |
| 300 | + [14], | |
| 301 | + [14], | |
| 302 | + [14], | |
| 303 | + [14], | |
| 304 | + [14], | |
| 305 | + [14], | |
| 306 | + [14], | |
| 307 | + [14], | |
| 308 | + [14], | |
| 309 | + ], | |
| 310 | + name="neltxxziap", | |
| 311 | + visible=False, | |
| 312 | + collidable=True, | |
| 313 | + tags=["xfmluydglp"], | |
| 314 | + ), | |
| 315 | + "njpewhmtfd": Sprite( | |
| 316 | + pixels=[ | |
| 317 | + [5, 5, 5, 5, 5, 5, 5], | |
| 318 | + [5, -1, -1, -1, -1, -1, 5], | |
| 319 | + [5, -1, -1, -1, -1, -1, 5], | |
| 320 | + [5, -1, -1, -1, -1, -1, 5], | |
| 321 | + [5, -1, -1, -1, -1, -1, 5], | |
| 322 | + [5, -1, -1, -1, -1, -1, 5], | |
| 323 | + [5, 5, 5, 5, 5, 5, 5], | |
| 324 | + ], | |
| 325 | + name="njpewhmtfd", | |
| 326 | + visible=True, | |
| 327 | + collidable=True, | |
| 328 | + tags=["vjotnebuqo", "vfkkzdgxzx"], | |
| 329 | + layer=-3, | |
| 330 | + ), | |
| 331 | + "nnjhdcanjk": Sprite( | |
| 332 | + pixels=[ | |
| 333 | + [-1, 0, 0], | |
| 334 | + [0, -1, 0], | |
| 335 | + [-1, 0, -1], | |
| 336 | + ], | |
| 337 | + name="nnjhdcanjk", | |
| 338 | + visible=True, | |
| 339 | + collidable=True, | |
| 340 | + ), | |
| 341 | + "npxgalaybz": Sprite( | |
| 342 | + pixels=[ | |
| 343 | + [11, 11, 11], | |
| 344 | + [11, -1, 11], | |
| 345 | + [11, 11, 11], | |
| 346 | + ], | |
| 347 | + name="npxgalaybz", | |
| 348 | + visible=True, | |
| 349 | + collidable=False, | |
| 350 | + tags=["npxgalaybz"], | |
| 351 | + layer=-1, | |
| 352 | + ), | |
| 353 | + "nszegiawib": Sprite( | |
| 354 | + pixels=[ | |
| 355 | + [3, 3, -1, -1, -1, -1, -1, 3, 3], | |
| 356 | + [3, 3, 3, 3, 3, 3, 3, 3, 3], | |
| 357 | + [3, 3, 3, 3, 3, 3, 3, 3, 3], | |
| 358 | + [3, 3, 3, 3, 3, 3, 3, 3, 3], | |
| 359 | + [3, 3, 3, 3, 3, 3, 3, 3, 3], | |
| 360 | + [3, 3, 3, 3, 3, 3, 3, 3, 3], | |
| 361 | + [3, 3, 3, 3, 3, 3, 3, 3, 3], | |
| 362 | + [3, 3, 3, 3, 3, 3, 3, 3, 3], | |
| 363 | + [3, 3, 3, 3, 3, 3, 3, 3, 3], | |
| 364 | + ], | |
| 365 | + name="nszegiawib", | |
| 366 | + visible=True, | |
| 367 | + collidable=True, | |
| 368 | + layer=-4, | |
| 369 | + ), | |
| 370 | + "rhsxkxzdjz": Sprite( | |
| 371 | + pixels=[ | |
| 372 | + [-2, -2, -2, -2, -2], | |
| 373 | + [-2, -2, 0, -2, -2], | |
| 374 | + [-2, 1, 0, 0, -2], | |
| 375 | + [-2, -2, 1, -2, -2], | |
| 376 | + [-2, -2, -2, -2, -2], | |
| 377 | + ], | |
| 378 | + name="rhsxkxzdjz", | |
| 379 | + visible=True, | |
| 380 | + collidable=True, | |
| 381 | + tags=["rhsxkxzdjz"], | |
| 382 | + layer=-1, | |
| 383 | + ), | |
| 384 | + "rjlbuycveu": Sprite( | |
| 385 | + pixels=[ | |
| 386 | + [5, 5, 5, 5, 5], | |
| 387 | + [5, 5, 5, 5, 5], | |
| 388 | + [5, 5, 5, 5, 5], | |
| 389 | + [5, 5, 5, 5, 5], | |
| 390 | + [5, 5, 5, 5, 5], | |
| 391 | + ], | |
| 392 | + name="rjlbuycveu", | |
| 393 | + visible=True, | |
| 394 | + collidable=False, | |
| 395 | + tags=["rjlbuycveu"], | |
| 396 | + layer=-3, | |
| 397 | + ), | |
| 398 | + "sfqyzhzkij": Sprite( | |
| 399 | + pixels=[ | |
| 400 | + [12, 12, 12, 12, 12], | |
| 401 | + [12, 12, 12, 12, 12], | |
| 402 | + [9, 9, 9, 9, 9], | |
| 403 | + [9, 9, 9, 9, 9], | |
| 404 | + [9, 9, 9, 9, 9], | |
| 405 | + ], | |
| 406 | + name="sfqyzhzkij", | |
| 407 | + visible=True, | |
| 408 | + collidable=True, | |
| 409 | + tags=["sfqyzhzkij"], | |
| 410 | + ), | |
| 411 | + "soyhouuebz": Sprite( | |
| 412 | + pixels=[ | |
| 413 | + [-2, -2, -2, -2, -2], | |
| 414 | + [-2, 9, 14, 14, -2], | |
| 415 | + [-2, 9, 0, 8, -2], | |
| 416 | + [-2, 12, 12, 8, -2], | |
| 417 | + [-2, -2, -2, -2, -2], | |
| 418 | + ], | |
| 419 | + name="soyhouuebz", | |
| 420 | + visible=True, | |
| 421 | + collidable=False, | |
| 422 | + tags=["soyhouuebz"], | |
| 423 | + layer=-1, | |
| 424 | + ), | |
| 425 | + "sqpmiygfvh": Sprite( | |
| 426 | + pixels=[ | |
| 427 | + [11], | |
| 428 | + ], | |
| 429 | + name="sqpmiygfvh", | |
| 430 | + visible=True, | |
| 431 | + collidable=True, | |
| 432 | + layer=3, | |
| 433 | + ), | |
| 434 | + "tihiodtoj_l": Sprite( | |
| 435 | + pixels=[ | |
| 436 | + [-2, -2, -2, -2, 1], | |
| 437 | + [-2, -2, -2, -2, 1], | |
| 438 | + [-2, -2, -2, -2, 1], | |
| 439 | + [-2, -2, -2, -2, 1], | |
| 440 | + [-2, -2, -2, -2, 1], | |
| 441 | + ], | |
| 442 | + name="tihiodtoj_l", | |
| 443 | + visible=True, | |
| 444 | + collidable=True, | |
| 445 | + tags=["gbvqrjtaqo"], | |
| 446 | + ), | |
| 447 | + "ubspnhafvq": Sprite( | |
| 448 | + pixels=[ | |
| 449 | + [0, 0, 0], | |
| 450 | + [-1, -1, 0], | |
| 451 | + [0, -1, 0], | |
| 452 | + ], | |
| 453 | + name="ubspnhafvq", | |
| 454 | + visible=True, | |
| 455 | + collidable=False, | |
| 456 | + layer=-2, | |
| 457 | + ), | |
| 458 | + "ubyunwkbpx": Sprite( | |
| 459 | + pixels=[ | |
| 460 | + [-2, 4, 4, 4, 4], | |
| 461 | + [-2, 4, 4, 4, 4], | |
| 462 | + [-2, 4, 4, 4, 4], | |
| 463 | + [-2, 4, 4, 4, 4], | |
| 464 | + [-2, 4, 4, 4, 4], | |
| 465 | + ], | |
| 466 | + name="ubyunwkbpx", | |
| 467 | + visible=True, | |
| 468 | + collidable=True, | |
| 469 | + tags=["ihdgageizm"], | |
| 470 | + layer=-5, | |
| 471 | + ), | |
| 472 | + "vjotnebuqo": Sprite( | |
| 473 | + pixels=[ | |
| 474 | + [5, 5, 5, 5, 5, 5, 5], | |
| 475 | + [5, -1, -1, -1, -1, -1, 5], | |
| 476 | + [5, -1, -1, -1, -1, -1, 5], | |
| 477 | + [5, -1, -1, -1, -1, -1, 5], | |
| 478 | + [5, -1, -1, -1, -1, -1, 5], | |
| 479 | + [5, -1, -1, -1, -1, -1, 5], | |
| 480 | + [5, 5, 5, 5, 5, 5, 5], | |
| 481 | + ], | |
| 482 | + name="vjotnebuqo", | |
| 483 | + visible=True, | |
| 484 | + collidable=True, | |
| 485 | + tags=["vjotnebuqo"], | |
| 486 | + layer=-3, | |
| 487 | + ), | |
| 488 | + "wgmbtyhvbc": Sprite( | |
| 489 | + pixels=[ | |
| 490 | + [0, -1, 0], | |
| 491 | + [-1, 0, -1], | |
| 492 | + [0, -1, 0], | |
| 493 | + ], | |
| 494 | + name="wgmbtyhvbc", | |
| 495 | + visible=True, | |
| 496 | + collidable=True, | |
| 497 | + tags=["wgmbtyhvbc"], | |
| 498 | + layer=10, | |
| 499 | + ), | |
| 500 | + "xfmluydglp": Sprite( | |
| 501 | + pixels=[ | |
| 502 | + [14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14], | |
| 503 | + [14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 14], | |
| 504 | + [14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 14], | |
| 505 | + [14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 14], | |
| 506 | + [14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 14], | |
| 507 | + [14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 14], | |
| 508 | + [14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 14], | |
| 509 | + [14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 14], | |
| 510 | + [14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 14], | |
| 511 | + [14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 14], | |
| 512 | + [14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14], | |
| 513 | + ], | |
| 514 | + name="xfmluydglp", | |
| 515 | + visible=False, | |
| 516 | + collidable=True, | |
| 517 | + tags=["xfmluydglp"], | |
| 518 | + ), | |
| 519 | + "xvrpzkggig": Sprite( | |
| 520 | + pixels=[ | |
| 521 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 522 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 523 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 524 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 525 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 526 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 527 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 528 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 529 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 530 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 531 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 532 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 533 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 534 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 535 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 536 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 537 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 538 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 539 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 540 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 541 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 542 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 543 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 544 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 545 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 546 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 547 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 548 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 549 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 550 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 551 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 552 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 553 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 554 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 555 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 556 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 557 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 558 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 559 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 560 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 561 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 562 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 563 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 564 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 565 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 566 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 567 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 568 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 569 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 570 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 571 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 572 | + [5, 5, 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 573 | + [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 574 | + [4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 575 | + [4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 576 | + [4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 577 | + [4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 578 | + [4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 579 | + [4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 580 | + [4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], | |
| 581 | + [4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 582 | + [4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 583 | + [4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 584 | + [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 585 | + ], | |
| 586 | + name="xvrpzkggig", | |
| 587 | + visible=True, | |
| 588 | + collidable=True, | |
| 589 | + ), | |
| 590 | + "yjgargdic_r": Sprite( | |
| 591 | + pixels=[ | |
| 592 | + [1, -2, -2, -2, -2], | |
| 593 | + [1, -2, -2, -2, -2], | |
| 594 | + [1, -2, -2, -2, -2], | |
| 595 | + [1, -2, -2, -2, -2], | |
| 596 | + [1, -2, -2, -2, -2], | |
| 597 | + ], | |
| 598 | + name="yjgargdic_r", | |
| 599 | + visible=True, | |
| 600 | + collidable=True, | |
| 601 | + tags=["gbvqrjtaqo"], | |
| 602 | + ), | |
| 603 | +} | |
| 604 | +levels = [ | |
| 605 | + # Level 1 | |
| 606 | + Level( | |
| 607 | + sprites=[ | |
| 608 | + sprites["eqatonpohu"].clone().set_position(1, 53), | |
| 609 | + sprites["ghizzeqtoh"].clone().set_position(1, 53), | |
| 610 | + sprites["hoswmpiqkw"].clone().set_position(33, 9), | |
| 611 | + sprites["ihdgageizm"].clone().set_position(4, 0), | |
| 612 | + sprites["ihdgageizm"].clone().set_position(9, 0), | |
| 613 | + sprites["ihdgageizm"].clone().set_position(4, 5), | |
| 614 | + sprites["ihdgageizm"].clone().set_position(14, 0), | |
| 615 | + sprites["ihdgageizm"].clone().set_position(19, 0), | |
| 616 | + sprites["ihdgageizm"].clone().set_position(24, 0), | |
| 617 | + sprites["ihdgageizm"].clone().set_position(29, 0), | |
| 618 | + sprites["ihdgageizm"].clone().set_position(39, 0), | |
| 619 | + sprites["ihdgageizm"].clone().set_position(44, 0), | |
| 620 | + sprites["ihdgageizm"].clone().set_position(49, 0), | |
| 621 | + sprites["ihdgageizm"].clone().set_position(54, 0), | |
| 622 | + sprites["ihdgageizm"].clone().set_position(59, 0), | |
| 623 | + sprites["ihdgageizm"].clone().set_position(4, 10), | |
| 624 | + sprites["ihdgageizm"].clone().set_position(4, 15), | |
| 625 | + sprites["ihdgageizm"].clone().set_position(4, 20), | |
| 626 | + sprites["ihdgageizm"].clone().set_position(4, 25), | |
| 627 | + sprites["ihdgageizm"].clone().set_position(59, 15), | |
| 628 | + sprites["ihdgageizm"].clone().set_position(59, 20), | |
| 629 | + sprites["ihdgageizm"].clone().set_position(59, 25), | |
| 630 | + sprites["ihdgageizm"].clone().set_position(59, 30), | |
| 631 | + sprites["ihdgageizm"].clone().set_position(59, 20), | |
| 632 | + sprites["ihdgageizm"].clone().set_position(59, 25), | |
| 633 | + sprites["ihdgageizm"].clone().set_position(59, 30), | |
| 634 | + sprites["ihdgageizm"].clone().set_position(59, 35), | |
| 635 | + sprites["ihdgageizm"].clone().set_position(59, 40), | |
| 636 | + sprites["ihdgageizm"].clone().set_position(59, 45), | |
| 637 | + sprites["ihdgageizm"].clone().set_position(59, 35), | |
| 638 | + sprites["ihdgageizm"].clone().set_position(59, 40), | |
| 639 | + sprites["ihdgageizm"].clone().set_position(59, 45), | |
| 640 | + sprites["ihdgageizm"].clone().set_position(59, 50), | |
| 641 | + sprites["ihdgageizm"].clone().set_position(59, 55), | |
| 642 | + sprites["ihdgageizm"].clone().set_position(59, 50), | |
| 643 | + sprites["ihdgageizm"].clone().set_position(59, 55), | |
| 644 | + sprites["ihdgageizm"].clone().set_position(54, 55), | |
| 645 | + sprites["ihdgageizm"].clone().set_position(49, 55), | |
| 646 | + sprites["ihdgageizm"].clone().set_position(44, 55), | |
| 647 | + sprites["ihdgageizm"].clone().set_position(39, 55), | |
| 648 | + sprites["ihdgageizm"].clone().set_position(34, 55), | |
| 649 | + sprites["ihdgageizm"].clone().set_position(29, 55), | |
| 650 | + sprites["ihdgageizm"].clone().set_position(24, 55), | |
| 651 | + sprites["ihdgageizm"].clone().set_position(19, 55), | |
| 652 | + sprites["ihdgageizm"].clone().set_position(4, 40), | |
| 653 | + sprites["ihdgageizm"].clone().set_position(4, 45), | |
| 654 | + sprites["ihdgageizm"].clone().set_position(4, 50), | |
| 655 | + sprites["ihdgageizm"].clone().set_position(9, 50), | |
| 656 | + sprites["ihdgageizm"].clone().set_position(4, 55), | |
| 657 | + sprites["ihdgageizm"].clone().set_position(9, 55), | |
| 658 | + sprites["ihdgageizm"].clone().set_position(14, 55), | |
| 659 | + sprites["ihdgageizm"].clone().set_position(4, 45), | |
| 660 | + sprites["ihdgageizm"].clone().set_position(54, 25), | |
| 661 | + sprites["ihdgageizm"].clone().set_position(54, 20), | |
| 662 | + sprites["ihdgageizm"].clone().set_position(34, 0), | |
| 663 | + sprites["ihdgageizm"].clone().set_position(59, 10), | |
| 664 | + sprites["ihdgageizm"].clone().set_position(59, 5), | |
| 665 | + sprites["ihdgageizm"].clone().set_position(54, 15), | |
| 666 | + sprites["ihdgageizm"].clone().set_position(54, 10), | |
| 667 | + sprites["ihdgageizm"].clone().set_position(44, 5), | |
| 668 | + sprites["ihdgageizm"].clone().set_position(39, 5), | |
| 669 | + sprites["ihdgageizm"].clone().set_position(34, 5), | |
| 670 | + sprites["ihdgageizm"].clone().set_position(29, 5), | |
| 671 | + sprites["ihdgageizm"].clone().set_position(54, 50), | |
| 672 | + sprites["ihdgageizm"].clone().set_position(54, 45), | |
| 673 | + sprites["ihdgageizm"].clone().set_position(24, 5), | |
| 674 | + sprites["ihdgageizm"].clone().set_position(19, 5), | |
| 675 | + sprites["ihdgageizm"].clone().set_position(9, 35), | |
| 676 | + sprites["ihdgageizm"].clone().set_position(9, 45), | |
| 677 | + sprites["ihdgageizm"].clone().set_position(19, 50), | |
| 678 | + sprites["ihdgageizm"].clone().set_position(9, 40), | |
| 679 | + sprites["ihdgageizm"].clone().set_position(49, 5), | |
| 680 | + sprites["ihdgageizm"].clone().set_position(54, 5), | |
| 681 | + sprites["ihdgageizm"].clone().set_position(49, 50), | |
| 682 | + sprites["ihdgageizm"].clone().set_position(14, 50), | |
| 683 | + sprites["ihdgageizm"].clone().set_position(14, 5), | |
| 684 | + sprites["ihdgageizm"].clone().set_position(9, 5), | |
| 685 | + sprites["ihdgageizm"].clone().set_position(9, 30), | |
| 686 | + sprites["ihdgageizm"].clone().set_position(9, 25), | |
| 687 | + sprites["ihdgageizm"].clone().set_position(9, 20), | |
| 688 | + sprites["ihdgageizm"].clone().set_position(9, 15), | |
| 689 | + sprites["ihdgageizm"].clone().set_position(9, 10), | |
| 690 | + sprites["ihdgageizm"].clone().set_position(49, 10), | |
| 691 | + sprites["ihdgageizm"].clone().set_position(44, 20), | |
| 692 | + sprites["ihdgageizm"].clone().set_position(39, 10), | |
| 693 | + sprites["ihdgageizm"].clone().set_position(44, 10), | |
| 694 | + sprites["ihdgageizm"].clone().set_position(49, 15), | |
| 695 | + sprites["ihdgageizm"].clone().set_position(29, 10), | |
| 696 | + sprites["ihdgageizm"].clone().set_position(29, 15), | |
| 697 | + sprites["ihdgageizm"].clone().set_position(39, 15), | |
| 698 | + sprites["ihdgageizm"].clone().set_position(44, 15), | |
| 699 | + sprites["ihdgageizm"].clone().set_position(49, 20), | |
| 700 | + sprites["ihdgageizm"].clone().set_position(14, 15), | |
| 701 | + sprites["ihdgageizm"].clone().set_position(19, 15), | |
| 702 | + sprites["ihdgageizm"].clone().set_position(24, 15), | |
| 703 | + sprites["ihdgageizm"].clone().set_position(24, 10), | |
| 704 | + sprites["ihdgageizm"].clone().set_position(19, 10), | |
| 705 | + sprites["ihdgageizm"].clone().set_position(14, 10), | |
| 706 | + sprites["ihdgageizm"].clone().set_position(29, 20), | |
| 707 | + sprites["ihdgageizm"].clone().set_position(39, 20), | |
| 708 | + sprites["ihdgageizm"].clone().set_position(24, 20), | |
| 709 | + sprites["ihdgageizm"].clone().set_position(29, 40), | |
| 710 | + sprites["ihdgageizm"].clone().set_position(19, 20), | |
| 711 | + sprites["ihdgageizm"].clone().set_position(14, 20), | |
| 712 | + sprites["ihdgageizm"].clone().set_position(54, 30), | |
| 713 | + sprites["ihdgageizm"].clone().set_position(24, 40), | |
| 714 | + sprites["ihdgageizm"].clone().set_position(14, 45), | |
| 715 | + sprites["ihdgageizm"].clone().set_position(29, 35), | |
| 716 | + sprites["ihdgageizm"].clone().set_position(4, 30).color_remap(None, 4), | |
| 717 | + sprites["ihdgageizm"].clone().set_position(4, 35), | |
| 718 | + sprites["ihdgageizm"].clone().set_position(54, 35), | |
| 719 | + sprites["ihdgageizm"].clone().set_position(54, 40), | |
| 720 | + sprites["ihdgageizm"].clone().set_position(14, 40), | |
| 721 | + sprites["ihdgageizm"].clone().set_position(24, 50), | |
| 722 | + sprites["ihdgageizm"].clone().set_position(29, 50), | |
| 723 | + sprites["ihdgageizm"].clone().set_position(39, 50), | |
| 724 | + sprites["ihdgageizm"].clone().set_position(44, 50), | |
| 725 | + sprites["ihdgageizm"].clone().set_position(34, 50), | |
| 726 | + sprites["ihdgageizm"].clone().set_position(29, 30), | |
| 727 | + sprites["kvynsvxbpi"].clone().set_position(35, 11), | |
| 728 | + sprites["nszegiawib"].clone().set_position(32, 8).set_rotation(180), | |
| 729 | + sprites["rhsxkxzdjz"].clone().set_position(19, 30), | |
| 730 | + sprites["rjlbuycveu"].clone().set_position(34, 10), | |
| 731 | + sprites["sfqyzhzkij"].clone().set_position(34, 45), | |
| 732 | + sprites["vjotnebuqo"].clone().set_position(33, 9), | |
| 733 | + sprites["wgmbtyhvbc"].clone().set_position(3, 55).set_scale(2), | |
| 734 | + sprites["xvrpzkggig"].clone(), | |
| 735 | + ], | |
| 736 | + grid_size=(64, 64), | |
| 737 | + data={ | |
| 738 | + "StepCounter": 42, | |
| 739 | + "kvynsvxbpi": 5, | |
| 740 | + "GoalColor": 9, | |
| 741 | + "GoalRotation": 0, | |
| 742 | + "StartShape": 5, | |
| 743 | + "StartColor": 9, | |
| 744 | + "StartRotation": 270, | |
| 745 | + "Fog": False, | |
| 746 | + "StepsDecrement": 1, | |
| 747 | + }, | |
| 748 | + ), | |
| 749 | + # Level 2 | |
| 750 | + Level( | |
| 751 | + sprites=[ | |
| 752 | + sprites["eqatonpohu"].clone().set_position(1, 53), | |
| 753 | + sprites["ghizzeqtoh"].clone().set_position(1, 53), | |
| 754 | + sprites["hoswmpiqkw"].clone().set_position(13, 39), | |
| 755 | + sprites["ihdgageizm"].clone().set_position(4, 0), | |
| 756 | + sprites["ihdgageizm"].clone().set_position(9, 0), | |
| 757 | + sprites["ihdgageizm"].clone().set_position(4, 5), | |
| 758 | + sprites["ihdgageizm"].clone().set_position(14, 0), | |
| 759 | + sprites["ihdgageizm"].clone().set_position(19, 0), | |
| 760 | + sprites["ihdgageizm"].clone().set_position(24, 0), | |
| 761 | + sprites["ihdgageizm"].clone().set_position(29, 0), | |
| 762 | + sprites["ihdgageizm"].clone().set_position(39, 0), | |
| 763 | + sprites["ihdgageizm"].clone().set_position(44, 0), | |
| 764 | + sprites["ihdgageizm"].clone().set_position(49, 0), | |
| 765 | + sprites["ihdgageizm"].clone().set_position(54, 0), | |
| 766 | + sprites["ihdgageizm"].clone().set_position(59, 0), | |
| 767 | + sprites["ihdgageizm"].clone().set_position(4, 10), | |
| 768 | + sprites["ihdgageizm"].clone().set_position(4, 15), | |
| 769 | + sprites["ihdgageizm"].clone().set_position(4, 20), | |
| 770 | + sprites["ihdgageizm"].clone().set_position(4, 25), | |
| 771 | + sprites["ihdgageizm"].clone().set_position(4, 30), | |
| 772 | + sprites["ihdgageizm"].clone().set_position(4, 35), | |
| 773 | + sprites["ihdgageizm"].clone().set_position(59, 15), | |
| 774 | + sprites["ihdgageizm"].clone().set_position(59, 20), | |
| 775 | + sprites["ihdgageizm"].clone().set_position(59, 25), | |
| 776 | + sprites["ihdgageizm"].clone().set_position(59, 30), | |
| 777 | + sprites["ihdgageizm"].clone().set_position(59, 20), | |
| 778 | + sprites["ihdgageizm"].clone().set_position(59, 25), | |
| 779 | + sprites["ihdgageizm"].clone().set_position(59, 30), | |
| 780 | + sprites["ihdgageizm"].clone().set_position(59, 35), | |
| 781 | + sprites["ihdgageizm"].clone().set_position(59, 40), | |
| 782 | + sprites["ihdgageizm"].clone().set_position(59, 45), | |
| 783 | + sprites["ihdgageizm"].clone().set_position(59, 35), | |
| 784 | + sprites["ihdgageizm"].clone().set_position(59, 40), | |
| 785 | + sprites["ihdgageizm"].clone().set_position(59, 45), | |
| 786 | + sprites["ihdgageizm"].clone().set_position(59, 50), | |
| 787 | + sprites["ihdgageizm"].clone().set_position(59, 55), | |
| 788 | + sprites["ihdgageizm"].clone().set_position(59, 50), | |
| 789 | + sprites["ihdgageizm"].clone().set_position(59, 55), | |
| 790 | + sprites["ihdgageizm"].clone().set_position(54, 55), | |
| 791 | + sprites["ihdgageizm"].clone().set_position(49, 55), | |
| 792 | + sprites["ihdgageizm"].clone().set_position(44, 55), | |
| 793 | + sprites["ihdgageizm"].clone().set_position(39, 55), | |
| 794 | + sprites["ihdgageizm"].clone().set_position(34, 55), | |
| 795 | + sprites["ihdgageizm"].clone().set_position(29, 55), | |
| 796 | + sprites["ihdgageizm"].clone().set_position(24, 55), | |
| 797 | + sprites["ihdgageizm"].clone().set_position(19, 55), | |
| 798 | + sprites["ihdgageizm"].clone().set_position(4, 40), | |
| 799 | + sprites["ihdgageizm"].clone().set_position(4, 45), | |
| 800 | + sprites["ihdgageizm"].clone().set_position(4, 50), | |
| 801 | + sprites["ihdgageizm"].clone().set_position(9, 50), | |
| 802 | + sprites["ihdgageizm"].clone().set_position(4, 55), | |
| 803 | + sprites["ihdgageizm"].clone().set_position(9, 55), | |
| 804 | + sprites["ihdgageizm"].clone().set_position(14, 55), | |
| 805 | + sprites["ihdgageizm"].clone().set_position(4, 45), | |
| 806 | + sprites["ihdgageizm"].clone().set_position(54, 30), | |
| 807 | + sprites["ihdgageizm"].clone().set_position(34, 0), | |
| 808 | + sprites["ihdgageizm"].clone().set_position(59, 10), | |
| 809 | + sprites["ihdgageizm"].clone().set_position(59, 5), | |
| 810 | + sprites["ihdgageizm"].clone().set_position(54, 15), | |
| 811 | + sprites["ihdgageizm"].clone().set_position(54, 10), | |
| 812 | + sprites["ihdgageizm"].clone().set_position(9, 35), | |
| 813 | + sprites["ihdgageizm"].clone().set_position(9, 45), | |
| 814 | + sprites["ihdgageizm"].clone().set_position(19, 50), | |
| 815 | + sprites["ihdgageizm"].clone().set_position(9, 40), | |
| 816 | + sprites["ihdgageizm"].clone().set_position(54, 5), | |
| 817 | + sprites["ihdgageizm"].clone().set_position(14, 45), | |
| 818 | + sprites["ihdgageizm"].clone().set_position(14, 50), | |
| 819 | + sprites["ihdgageizm"].clone().set_position(9, 5), | |
| 820 | + sprites["ihdgageizm"].clone().set_position(9, 30), | |
| 821 | + sprites["ihdgageizm"].clone().set_position(9, 25), | |
| 822 | + sprites["ihdgageizm"].clone().set_position(19, 30), | |
| 823 | + sprites["ihdgageizm"].clone().set_position(24, 30), | |
| 824 | + sprites["ihdgageizm"].clone().set_position(19, 40), | |
| 825 | + sprites["ihdgageizm"].clone().set_position(19, 45), | |
| 826 | + sprites["ihdgageizm"].clone().set_position(19, 35), | |
| 827 | + sprites["ihdgageizm"].clone().set_position(39, 15), | |
| 828 | + sprites["ihdgageizm"].clone().set_position(39, 35), | |
| 829 | + sprites["ihdgageizm"].clone().set_position(44, 30), | |
| 830 | + sprites["ihdgageizm"].clone().set_position(34, 45), | |
| 831 | + sprites["ihdgageizm"].clone().set_position(14, 5), | |
| 832 | + sprites["ihdgageizm"].clone().set_position(39, 20), | |
| 833 | + sprites["ihdgageizm"].clone().set_position(44, 20), | |
| 834 | + sprites["ihdgageizm"].clone().set_position(24, 20), | |
| 835 | + sprites["ihdgageizm"].clone().set_position(44, 25), | |
| 836 | + sprites["ihdgageizm"].clone().set_position(39, 40), | |
| 837 | + sprites["ihdgageizm"].clone().set_position(39, 45), | |
| 838 | + sprites["ihdgageizm"].clone().set_position(24, 35), | |
| 839 | + sprites["ihdgageizm"].clone().set_position(24, 25), | |
| 840 | + sprites["ihdgageizm"].clone().set_position(24, 50), | |
| 841 | + sprites["ihdgageizm"].clone().set_position(19, 25), | |
| 842 | + sprites["ihdgageizm"].clone().set_position(24, 40), | |
| 843 | + sprites["ihdgageizm"].clone().set_position(24, 45), | |
| 844 | + sprites["ihdgageizm"].clone().set_position(29, 45), | |
| 845 | + sprites["ihdgageizm"].clone().set_position(29, 30), | |
| 846 | + sprites["ihdgageizm"].clone().set_position(29, 25), | |
| 847 | + sprites["ihdgageizm"].clone().set_position(24, 15), | |
| 848 | + sprites["ihdgageizm"].clone().set_position(44, 35), | |
| 849 | + sprites["ihdgageizm"].clone().set_position(54, 34), | |
| 850 | + sprites["ihdgageizm"].clone().set_position(29, 50), | |
| 851 | + sprites["ihdgageizm"].clone().set_position(34, 50), | |
| 852 | + sprites["kvynsvxbpi"].clone().set_position(15, 41), | |
| 853 | + sprites["npxgalaybz"].clone().set_position(15, 16), | |
| 854 | + sprites["npxgalaybz"].clone().set_position(40, 51), | |
| 855 | + sprites["nszegiawib"].clone().set_position(12, 38), | |
| 856 | + sprites["rhsxkxzdjz"].clone().set_position(49, 45), | |
| 857 | + sprites["rjlbuycveu"].clone().set_position(14, 40), | |
| 858 | + sprites["sfqyzhzkij"].clone().set_position(29, 40), | |
| 859 | + sprites["vjotnebuqo"].clone().set_position(13, 39), | |
| 860 | + sprites["wgmbtyhvbc"].clone().set_position(3, 55).set_scale(2), | |
| 861 | + sprites["xvrpzkggig"].clone(), | |
| 862 | + ], | |
| 863 | + grid_size=(64, 64), | |
| 864 | + data={ | |
| 865 | + "StepCounter": 42, | |
| 866 | + "kvynsvxbpi": 5, | |
| 867 | + "GoalColor": 9, | |
| 868 | + "GoalRotation": 270, | |
| 869 | + "StartShape": 5, | |
| 870 | + "StartColor": 9, | |
| 871 | + "StartRotation": 0, | |
| 872 | + "Fog": False, | |
| 873 | + }, | |
| 874 | + ), | |
| 875 | + # Level 3 | |
| 876 | + Level( | |
| 877 | + sprites=[ | |
| 878 | + sprites["eqatonpohu"].clone().set_position(1, 53), | |
| 879 | + sprites["fesygzfqui"].clone().set_position(4, 5), | |
| 880 | + sprites["ghizzeqtoh"].clone().set_position(1, 53), | |
| 881 | + sprites["hoswmpiqkw"].clone().set_position(53, 49), | |
| 882 | + sprites["ihdgageizm"].clone().set_position(4, 0), | |
| 883 | + sprites["ihdgageizm"].clone().set_position(9, 0), | |
| 884 | + sprites["ihdgageizm"].clone().set_position(14, 0), | |
| 885 | + sprites["ihdgageizm"].clone().set_position(19, 0), | |
| 886 | + sprites["ihdgageizm"].clone().set_position(24, 0), | |
| 887 | + sprites["ihdgageizm"].clone().set_position(29, 0), | |
| 888 | + sprites["ihdgageizm"].clone().set_position(39, 0), | |
| 889 | + sprites["ihdgageizm"].clone().set_position(44, 0), | |
| 890 | + sprites["ihdgageizm"].clone().set_position(49, 0), | |
| 891 | + sprites["ihdgageizm"].clone().set_position(59, 0), | |
| 892 | + sprites["ihdgageizm"].clone().set_position(4, 10), | |
| 893 | + sprites["ihdgageizm"].clone().set_position(4, 15), | |
| 894 | + sprites["ihdgageizm"].clone().set_position(4, 20), | |
| 895 | + sprites["ihdgageizm"].clone().set_position(4, 25), | |
| 896 | + sprites["ihdgageizm"].clone().set_position(4, 30), | |
| 897 | + sprites["ihdgageizm"].clone().set_position(4, 35), | |
| 898 | + sprites["ihdgageizm"].clone().set_position(59, 20), | |
| 899 | + sprites["ihdgageizm"].clone().set_position(59, 25), | |
| 900 | + sprites["ihdgageizm"].clone().set_position(59, 30), | |
| 901 | + sprites["ihdgageizm"].clone().set_position(59, 35), | |
| 902 | + sprites["ihdgageizm"].clone().set_position(59, 40), | |
| 903 | + sprites["ihdgageizm"].clone().set_position(59, 45), | |
| 904 | + sprites["ihdgageizm"].clone().set_position(59, 50), | |
| 905 | + sprites["ihdgageizm"].clone().set_position(59, 55), | |
| 906 | + sprites["ihdgageizm"].clone().set_position(49, 55), | |
| 907 | + sprites["ihdgageizm"].clone().set_position(44, 55), | |
| 908 | + sprites["ihdgageizm"].clone().set_position(39, 55), | |
| 909 | + sprites["ihdgageizm"].clone().set_position(34, 55), | |
| 910 | + sprites["ihdgageizm"].clone().set_position(29, 55), | |
| 911 | + sprites["ihdgageizm"].clone().set_position(24, 55), | |
| 912 | + sprites["ihdgageizm"].clone().set_position(19, 55), | |
| 913 | + sprites["ihdgageizm"].clone().set_position(4, 40), | |
| 914 | + sprites["ihdgageizm"].clone().set_position(4, 45), | |
| 915 | + sprites["ihdgageizm"].clone().set_position(4, 50), | |
| 916 | + sprites["ihdgageizm"].clone().set_position(9, 50), | |
| 917 | + sprites["ihdgageizm"].clone().set_position(4, 55), | |
| 918 | + sprites["ihdgageizm"].clone().set_position(9, 55), | |
| 919 | + sprites["ihdgageizm"].clone().set_position(14, 55), | |
| 920 | + sprites["ihdgageizm"].clone().set_position(4, 45), | |
| 921 | + sprites["ihdgageizm"].clone().set_position(34, 0), | |
| 922 | + sprites["ihdgageizm"].clone().set_position(59, 10), | |
| 923 | + sprites["ihdgageizm"].clone().set_position(59, 5), | |
| 924 | + sprites["ihdgageizm"].clone().set_position(39, 10), | |
| 925 | + sprites["ihdgageizm"].clone().set_position(14, 25), | |
| 926 | + sprites["ihdgageizm"].clone().set_position(19, 40), | |
| 927 | + sprites["ihdgageizm"].clone().set_position(19, 45), | |
| 928 | + sprites["ihdgageizm"].clone().set_position(19, 35), | |
| 929 | + sprites["ihdgageizm"].clone().set_position(49, 50), | |
| 930 | + sprites["ihdgageizm"].clone().set_position(39, 35), | |
| 931 | + sprites["ihdgageizm"].clone().set_position(14, 30), | |
| 932 | + sprites["ihdgageizm"].clone().set_position(49, 45), | |
| 933 | + sprites["ihdgageizm"].clone().set_position(49, 40), | |
| 934 | + sprites["ihdgageizm"].clone().set_position(14, 20), | |
| 935 | + sprites["ihdgageizm"].clone().set_position(14, 50), | |
| 936 | + sprites["ihdgageizm"].clone().set_position(39, 5), | |
| 937 | + sprites["ihdgageizm"].clone().set_position(44, 45), | |
| 938 | + sprites["ihdgageizm"].clone().set_position(19, 50), | |
| 939 | + sprites["ihdgageizm"].clone().set_position(44, 40), | |
| 940 | + sprites["ihdgageizm"].clone().set_position(39, 50), | |
| 941 | + sprites["ihdgageizm"].clone().set_position(44, 20), | |
| 942 | + sprites["ihdgageizm"].clone().set_position(49, 20), | |
| 943 | + sprites["ihdgageizm"].clone().set_position(39, 20), | |
| 944 | + sprites["ihdgageizm"].clone().set_position(19, 10), | |
| 945 | + sprites["ihdgageizm"].clone().set_position(14, 35), | |
| 946 | + sprites["ihdgageizm"].clone().set_position(39, 15), | |
| 947 | + sprites["ihdgageizm"].clone().set_position(34, 35), | |
| 948 | + sprites["ihdgageizm"].clone().set_position(14, 10), | |
| 949 | + sprites["ihdgageizm"].clone().set_position(14, 15), | |
| 950 | + sprites["ihdgageizm"].clone().set_position(49, 35), | |
| 951 | + sprites["ihdgageizm"].clone().set_position(24, 35), | |
| 952 | + sprites["ihdgageizm"].clone().set_position(34, 10), | |
| 953 | + sprites["ihdgageizm"].clone().set_position(24, 10), | |
| 954 | + sprites["ihdgageizm"].clone().set_position(59, 15), | |
| 955 | + sprites["ihdgageizm"].clone().set_position(54, 55), | |
| 956 | + sprites["ihdgageizm"].clone().set_position(44, 35), | |
| 957 | + sprites["ihdgageizm"].clone().set_position(39, 40), | |
| 958 | + sprites["ihdgageizm"].clone().set_position(39, 45), | |
| 959 | + sprites["ihdgageizm"].clone().set_position(44, 50), | |
| 960 | + sprites["kapcaakvb_b"].clone().set_position(54, 4), | |
| 961 | + sprites["kvynsvxbpi"].clone().set_position(55, 51), | |
| 962 | + sprites["mxfhnkdzvf"].clone().set_position(54, 0), | |
| 963 | + sprites["npxgalaybz"].clone().set_position(35, 16), | |
| 964 | + sprites["npxgalaybz"].clone().set_position(20, 31), | |
| 965 | + sprites["nszegiawib"].clone().set_position(52, 48), | |
| 966 | + sprites["rhsxkxzdjz"].clone().set_position(49, 10), | |
| 967 | + sprites["rjlbuycveu"].clone().set_position(54, 50), | |
| 968 | + sprites["sfqyzhzkij"].clone().set_position(9, 45), | |
| 969 | + sprites["soyhouuebz"].clone().set_position(29, 45), | |
| 970 | + sprites["vjotnebuqo"].clone().set_position(53, 49), | |
| 971 | + sprites["wgmbtyhvbc"].clone().set_position(3, 55).set_scale(2), | |
| 972 | + sprites["xvrpzkggig"].clone(), | |
| 973 | + sprites["yjgargdic_r"].clone().set_position(8, 5), | |
| 974 | + ], | |
| 975 | + grid_size=(64, 64), | |
| 976 | + data={ | |
| 977 | + "StepCounter": 42, | |
| 978 | + "kvynsvxbpi": 5, | |
| 979 | + "GoalColor": 9, | |
| 980 | + "GoalRotation": 180, | |
| 981 | + "StartShape": 5, | |
| 982 | + "StartColor": 12, | |
| 983 | + "StartRotation": 0, | |
| 984 | + "Fog": False, | |
| 985 | + }, | |
| 986 | + ), | |
| 987 | + # Level 4 | |
| 988 | + Level( | |
| 989 | + sprites=[ | |
| 990 | + sprites["eqatonpohu"].clone().set_position(1, 53), | |
| 991 | + sprites["fesygzfqui"].clone().set_position(29, 20), | |
| 992 | + sprites["fesygzfqui"].clone().set_position(4, 35), | |
| 993 | + sprites["ghizzeqtoh"].clone().set_position(1, 53), | |
| 994 | + sprites["hoswmpiqkw"].clone().set_position(8, 4), | |
| 995 | + sprites["ihdgageizm"].clone().set_position(4, 0), | |
| 996 | + sprites["ihdgageizm"].clone().set_position(9, 0), | |
| 997 | + sprites["ihdgageizm"].clone().set_position(4, 5), | |
| 998 | + sprites["ihdgageizm"].clone().set_position(14, 0), | |
| 999 | + sprites["ihdgageizm"].clone().set_position(19, 0), | |
| 1000 | + sprites["ihdgageizm"].clone().set_position(24, 0), | |
| 1001 | + sprites["ihdgageizm"].clone().set_position(29, 0), | |
| 1002 | + sprites["ihdgageizm"].clone().set_position(39, 0), | |
| 1003 | + sprites["ihdgageizm"].clone().set_position(44, 0), | |
| 1004 | + sprites["ihdgageizm"].clone().set_position(49, 0), | |
| 1005 | + sprites["ihdgageizm"].clone().set_position(54, 0), | |
| 1006 | + sprites["ihdgageizm"].clone().set_position(59, 0), | |
| 1007 | + sprites["ihdgageizm"].clone().set_position(4, 10), | |
| 1008 | + sprites["ihdgageizm"].clone().set_position(4, 15), | |
| 1009 | + sprites["ihdgageizm"].clone().set_position(4, 20), | |
| 1010 | + sprites["ihdgageizm"].clone().set_position(4, 25), | |
| 1011 | + sprites["ihdgageizm"].clone().set_position(4, 30), | |
| 1012 | + sprites["ihdgageizm"].clone().set_position(59, 15), | |
| 1013 | + sprites["ihdgageizm"].clone().set_position(59, 20), | |
| 1014 | + sprites["ihdgageizm"].clone().set_position(59, 25), | |
| 1015 | + sprites["ihdgageizm"].clone().set_position(59, 30), | |
| 1016 | + sprites["ihdgageizm"].clone().set_position(59, 20), | |
| 1017 | + sprites["ihdgageizm"].clone().set_position(59, 25), | |
| 1018 | + sprites["ihdgageizm"].clone().set_position(59, 30), | |
| 1019 | + sprites["ihdgageizm"].clone().set_position(59, 35), | |
| 1020 | + sprites["ihdgageizm"].clone().set_position(59, 40), | |
| 1021 | + sprites["ihdgageizm"].clone().set_position(59, 45), | |
| 1022 | + sprites["ihdgageizm"].clone().set_position(59, 35), | |
| 1023 | + sprites["ihdgageizm"].clone().set_position(59, 40), | |
| 1024 | + sprites["ihdgageizm"].clone().set_position(59, 45), | |
| 1025 | + sprites["ihdgageizm"].clone().set_position(59, 50), | |
| 1026 | + sprites["ihdgageizm"].clone().set_position(59, 55), | |
| 1027 | + sprites["ihdgageizm"].clone().set_position(59, 50), | |
| 1028 | + sprites["ihdgageizm"].clone().set_position(59, 55), | |
| 1029 | + sprites["ihdgageizm"].clone().set_position(54, 55), | |
| 1030 | + sprites["ihdgageizm"].clone().set_position(49, 55), | |
| 1031 | + sprites["ihdgageizm"].clone().set_position(44, 55), | |
| 1032 | + sprites["ihdgageizm"].clone().set_position(39, 55), | |
| 1033 | + sprites["ihdgageizm"].clone().set_position(34, 55), | |
| 1034 | + sprites["ihdgageizm"].clone().set_position(29, 55), | |
| 1035 | + sprites["ihdgageizm"].clone().set_position(24, 55), | |
| 1036 | + sprites["ihdgageizm"].clone().set_position(19, 55), | |
| 1037 | + sprites["ihdgageizm"].clone().set_position(4, 40), | |
| 1038 | + sprites["ihdgageizm"].clone().set_position(4, 45), | |
| 1039 | + sprites["ihdgageizm"].clone().set_position(4, 50), | |
| 1040 | + sprites["ihdgageizm"].clone().set_position(9, 50), | |
| 1041 | + sprites["ihdgageizm"].clone().set_position(4, 55), | |
| 1042 | + sprites["ihdgageizm"].clone().set_position(9, 55), | |
| 1043 | + sprites["ihdgageizm"].clone().set_position(14, 55), | |
| 1044 | + sprites["ihdgageizm"].clone().set_position(4, 45), | |
| 1045 | + sprites["ihdgageizm"].clone().set_position(59, 10), | |
| 1046 | + sprites["ihdgageizm"].clone().set_position(59, 5), | |
| 1047 | + sprites["ihdgageizm"].clone().set_position(14, 10), | |
| 1048 | + sprites["ihdgageizm"].clone().set_position(9, 10), | |
| 1049 | + sprites["ihdgageizm"].clone().set_position(24, 25), | |
| 1050 | + sprites["ihdgageizm"].clone().set_position(29, 30), | |
| 1051 | + sprites["ihdgageizm"].clone().set_position(19, 10), | |
| 1052 | + sprites["ihdgageizm"].clone().set_position(9, 20), | |
| 1053 | + sprites["ihdgageizm"].clone().set_position(29, 25), | |
| 1054 | + sprites["ihdgageizm"].clone().set_position(29, 35), | |
| 1055 | + sprites["ihdgageizm"].clone().set_position(34, 35), | |
| 1056 | + sprites["ihdgageizm"].clone().set_position(19, 50), | |
| 1057 | + sprites["ihdgageizm"].clone().set_position(39, 50), | |
| 1058 | + sprites["ihdgageizm"].clone().set_position(9, 15), | |
| 1059 | + sprites["ihdgageizm"].clone().set_position(49, 10), | |
| 1060 | + sprites["ihdgageizm"].clone().set_position(44, 10), | |
| 1061 | + sprites["ihdgageizm"].clone().set_position(39, 45), | |
| 1062 | + sprites["ihdgageizm"].clone().set_position(39, 50), | |
| 1063 | + sprites["ihdgageizm"].clone().set_position(44, 50), | |
| 1064 | + sprites["ihdgageizm"].clone().set_position(19, 25), | |
| 1065 | + sprites["ihdgageizm"].clone().set_position(39, 35), | |
| 1066 | + sprites["ihdgageizm"].clone().set_position(14, 50), | |
| 1067 | + sprites["ihdgageizm"].clone().set_position(9, 45), | |
| 1068 | + sprites["ihdgageizm"].clone().set_position(29, 5), | |
| 1069 | + sprites["ihdgageizm"].clone().set_position(14, 15), | |
| 1070 | + sprites["ihdgageizm"].clone().set_position(34, 0), | |
| 1071 | + sprites["ihdgageizm"].clone().set_position(29, 10), | |
| 1072 | + sprites["ihdgageizm"].clone().set_position(34, 5), | |
| 1073 | + sprites["ihdgageizm"].clone().set_position(54, 10), | |
| 1074 | + sprites["kapcaakvb_b"].clone().set_position(19, 34), | |
| 1075 | + sprites["kapcaakvb_b"].clone().set_position(44, 19), | |
| 1076 | + sprites["krdypjjivz"].clone().set_position(39, 30), | |
| 1077 | + sprites["kvynsvxbpi"].clone().set_position(10, 6), | |
| 1078 | + sprites["lujfinsby_t"].clone().set_position(39, 26), | |
| 1079 | + sprites["mkjdaccuuf"].clone().set_position(24, 30), | |
| 1080 | + sprites["mxfhnkdzvf"].clone().set_position(19, 30), | |
| 1081 | + sprites["mxfhnkdzvf"].clone().set_position(44, 15), | |
| 1082 | + sprites["npxgalaybz"].clone().set_position(35, 51), | |
| 1083 | + sprites["npxgalaybz"].clone().set_position(20, 16), | |
| 1084 | + sprites["nszegiawib"].clone().set_position(7, 3).set_rotation(90), | |
| 1085 | + sprites["rjlbuycveu"].clone().set_position(9, 5), | |
| 1086 | + sprites["sfqyzhzkij"].clone().set_position(54, 5), | |
| 1087 | + sprites["soyhouuebz"].clone().set_position(34, 30), | |
| 1088 | + sprites["tihiodtoj_l"].clone().set_position(45, 25), | |
| 1089 | + sprites["tihiodtoj_l"].clone().set_position(25, 40), | |
| 1090 | + sprites["tihiodtoj_l"].clone().set_position(45, 40), | |
| 1091 | + sprites["ubyunwkbpx"].clone().set_position(49, 25), | |
| 1092 | + sprites["ubyunwkbpx"].clone().set_position(29, 40), | |
| 1093 | + sprites["ubyunwkbpx"].clone().set_position(49, 40), | |
| 1094 | + sprites["vjotnebuqo"].clone().set_position(8, 4), | |
| 1095 | + sprites["wgmbtyhvbc"].clone().set_position(3, 55).set_scale(2), | |
| 1096 | + sprites["xvrpzkggig"].clone(), | |
| 1097 | + sprites["yjgargdic_r"].clone().set_position(33, 20), | |
| 1098 | + sprites["yjgargdic_r"].clone().set_position(8, 35), | |
| 1099 | + ], | |
| 1100 | + grid_size=(64, 64), | |
| 1101 | + data={ | |
| 1102 | + "StepCounter": 42, | |
| 1103 | + "kvynsvxbpi": 5, | |
| 1104 | + "GoalColor": 9, | |
| 1105 | + "GoalRotation": 0, | |
| 1106 | + "StartShape": 4, | |
| 1107 | + "StartColor": 14, | |
| 1108 | + "StartRotation": 0, | |
| 1109 | + "Fog": False, | |
| 1110 | + "StepsDecrement": 1, | |
| 1111 | + }, | |
| 1112 | + ), | |
| 1113 | + # Level 5 | |
| 1114 | + Level( | |
| 1115 | + sprites=[ | |
| 1116 | + sprites["ajdspzphhd"].clone().set_position(14, 35), | |
| 1117 | + sprites["eqatonpohu"].clone().set_position(1, 53), | |
| 1118 | + sprites["fesygzfqui"].clone().set_position(29, 20), | |
| 1119 | + sprites["fesygzfqui"].clone().set_position(39, 40), | |
| 1120 | + sprites["ghizzeqtoh"].clone().set_position(1, 53), | |
| 1121 | + sprites["hoswmpiqkw"].clone().set_position(53, 4), | |
| 1122 | + sprites["ihdgageizm"].clone().set_position(4, 0), | |
| 1123 | + sprites["ihdgageizm"].clone().set_position(9, 0), | |
| 1124 | + sprites["ihdgageizm"].clone().set_position(4, 5), | |
| 1125 | + sprites["ihdgageizm"].clone().set_position(19, 0), | |
| 1126 | + sprites["ihdgageizm"].clone().set_position(24, 0), | |
| 1127 | + sprites["ihdgageizm"].clone().set_position(29, 0), | |
| 1128 | + sprites["ihdgageizm"].clone().set_position(39, 0), | |
| 1129 | + sprites["ihdgageizm"].clone().set_position(44, 0), | |
| 1130 | + sprites["ihdgageizm"].clone().set_position(49, 0), | |
| 1131 | + sprites["ihdgageizm"].clone().set_position(54, 0), | |
| 1132 | + sprites["ihdgageizm"].clone().set_position(59, 0), | |
| 1133 | + sprites["ihdgageizm"].clone().set_position(4, 10), | |
| 1134 | + sprites["ihdgageizm"].clone().set_position(4, 15), | |
| 1135 | + sprites["ihdgageizm"].clone().set_position(4, 20), | |
| 1136 | + sprites["ihdgageizm"].clone().set_position(4, 25), | |
| 1137 | + sprites["ihdgageizm"].clone().set_position(4, 30), | |
| 1138 | + sprites["ihdgageizm"].clone().set_position(4, 35), | |
| 1139 | + sprites["ihdgageizm"].clone().set_position(59, 50), | |
| 1140 | + sprites["ihdgageizm"].clone().set_position(59, 55), | |
| 1141 | + sprites["ihdgageizm"].clone().set_position(39, 55), | |
| 1142 | + sprites["ihdgageizm"].clone().set_position(34, 55), | |
| 1143 | + sprites["ihdgageizm"].clone().set_position(29, 55), | |
| 1144 | + sprites["ihdgageizm"].clone().set_position(24, 55), | |
| 1145 | + sprites["ihdgageizm"].clone().set_position(19, 55), | |
| 1146 | + sprites["ihdgageizm"].clone().set_position(4, 40), | |
| 1147 | + sprites["ihdgageizm"].clone().set_position(4, 45), | |
| 1148 | + sprites["ihdgageizm"].clone().set_position(4, 50), | |
| 1149 | + sprites["ihdgageizm"].clone().set_position(9, 50), | |
| 1150 | + sprites["ihdgageizm"].clone().set_position(4, 55), | |
| 1151 | + sprites["ihdgageizm"].clone().set_position(9, 55), | |
| 1152 | + sprites["ihdgageizm"].clone().set_position(14, 55), | |
| 1153 | + sprites["ihdgageizm"].clone().set_position(4, 45), | |
| 1154 | + sprites["ihdgageizm"].clone().set_position(59, 5), | |
| 1155 | + sprites["ihdgageizm"].clone().set_position(49, 10), | |
| 1156 | + sprites["ihdgageizm"].clone().set_position(49, 5), | |
| 1157 | + sprites["ihdgageizm"].clone().set_position(29, 30), | |
| 1158 | + sprites["ihdgageizm"].clone().set_position(9, 20), | |
| 1159 | + sprites["ihdgageizm"].clone().set_position(24, 30), | |
| 1160 | + sprites["ihdgageizm"].clone().set_position(24, 20), | |
| 1161 | + sprites["ihdgageizm"].clone().set_position(34, 30), | |
| 1162 | + sprites["ihdgageizm"].clone().set_position(49, 45), | |
| 1163 | + sprites["ihdgageizm"].clone().set_position(49, 20), | |
| 1164 | + sprites["ihdgageizm"].clone().set_position(44, 55), | |
| 1165 | + sprites["ihdgageizm"].clone().set_position(49, 55), | |
| 1166 | + sprites["ihdgageizm"].clone().set_position(59, 10), | |
| 1167 | + sprites["ihdgageizm"].clone().set_position(59, 20), | |
| 1168 | + sprites["ihdgageizm"].clone().set_position(59, 25), | |
| 1169 | + sprites["ihdgageizm"].clone().set_position(59, 35), | |
| 1170 | + sprites["ihdgageizm"].clone().set_position(59, 40), | |
| 1171 | + sprites["ihdgageizm"].clone().set_position(59, 45), | |
| 1172 | + sprites["ihdgageizm"].clone().set_position(39, 45), | |
| 1173 | + sprites["ihdgageizm"].clone().set_position(44, 45), | |
| 1174 | + sprites["ihdgageizm"].clone().set_position(29, 35), | |
| 1175 | + sprites["ihdgageizm"].clone().set_position(9, 5), | |
| 1176 | + sprites["ihdgageizm"].clone().set_position(34, 45), | |
| 1177 | + sprites["ihdgageizm"].clone().set_position(29, 5), | |
| 1178 | + sprites["ihdgageizm"].clone().set_position(29, 10), | |
| 1179 | + sprites["ihdgageizm"].clone().set_position(14, 20), | |
| 1180 | + sprites["ihdgageizm"].clone().set_position(14, 0), | |
| 1181 | + sprites["ihdgageizm"].clone().set_position(19, 30), | |
| 1182 | + sprites["ihdgageizm"].clone().set_position(14, 30), | |
| 1183 | + sprites["ihdgageizm"].clone().set_position(9, 15), | |
| 1184 | + sprites["ihdgageizm"].clone().set_position(29, 45), | |
| 1185 | + sprites["ihdgageizm"].clone().set_position(14, 50), | |
| 1186 | + sprites["ihdgageizm"].clone().set_position(9, 45), | |
| 1187 | + sprites["ihdgageizm"].clone().set_position(49, 15), | |
| 1188 | + sprites["ihdgageizm"].clone().set_position(59, 15), | |
| 1189 | + sprites["ihdgageizm"].clone().set_position(44, 10), | |
| 1190 | + sprites["kapcaakvb_b"].clone().set_position(34, 4), | |
| 1191 | + sprites["kapcaakvb_b"].clone().set_position(49, 29), | |
| 1192 | + sprites["krdypjjivz"].clone().set_position(54, 55), | |
| 1193 | + sprites["krdypjjivz"].clone().set_position(39, 30), | |
| 1194 | + sprites["kvynsvxbpi"].clone().set_position(55, 6), | |
| 1195 | + sprites["lujfinsby_t"].clone().set_position(54, 51), | |
| 1196 | + sprites["lujfinsby_t"].clone().set_position(39, 26), | |
| 1197 | + sprites["mkjdaccuuf"].clone().set_position(19, 10), | |
| 1198 | + sprites["mxfhnkdzvf"].clone().set_position(34, 0), | |
| 1199 | + sprites["mxfhnkdzvf"].clone().set_position(49, 25), | |
| 1200 | + sprites["npxgalaybz"].clone().set_position(15, 46), | |
| 1201 | + sprites["npxgalaybz"].clone().set_position(45, 6), | |
| 1202 | + sprites["npxgalaybz"].clone().set_position(10, 11), | |
| 1203 | + sprites["nszegiawib"].clone().set_position(52, 3).set_rotation(180), | |
| 1204 | + sprites["rhsxkxzdjz"].clone().set_position(14, 35), | |
| 1205 | + sprites["rjlbuycveu"].clone().set_position(54, 5), | |
| 1206 | + sprites["sfqyzhzkij"].clone().set_position(49, 40), | |
| 1207 | + sprites["soyhouuebz"].clone().set_position(29, 25), | |
| 1208 | + sprites["tihiodtoj_l"].clone().set_position(55, 30), | |
| 1209 | + sprites["tihiodtoj_l"].clone().set_position(20, 25), | |
| 1210 | + sprites["ubyunwkbpx"].clone().set_position(59, 30), | |
| 1211 | + sprites["ubyunwkbpx"].clone().set_position(24, 25), | |
| 1212 | + sprites["vjotnebuqo"].clone().set_position(53, 4), | |
| 1213 | + sprites["wgmbtyhvbc"].clone().set_position(3, 55).set_scale(2), | |
| 1214 | + sprites["xvrpzkggig"].clone(), | |
| 1215 | + sprites["yjgargdic_r"].clone().set_position(33, 20), | |
| 1216 | + sprites["yjgargdic_r"].clone().set_position(43, 40), | |
| 1217 | + ], | |
| 1218 | + grid_size=(64, 64), | |
| 1219 | + data={ | |
| 1220 | + "StepCounter": 42, | |
| 1221 | + "kvynsvxbpi": 0, | |
| 1222 | + "GoalColor": 8, | |
| 1223 | + "GoalRotation": 180, | |
| 1224 | + "StartShape": 4, | |
| 1225 | + "StartColor": 12, | |
| 1226 | + "StartRotation": 0, | |
| 1227 | + "Fog": False, | |
| 1228 | + }, | |
| 1229 | + ), | |
| 1230 | + # Level 6 | |
| 1231 | + Level( | |
| 1232 | + sprites=[ | |
| 1233 | + sprites["eqatonpohu"].clone().set_position(1, 53), | |
| 1234 | + sprites["ghizzeqtoh"].clone().set_position(1, 53), | |
| 1235 | + sprites["hahdypcdru"].clone().set_position(14, 40), | |
| 1236 | + sprites["hahdypcdru"].clone().set_position(14, 10), | |
| 1237 | + sprites["hoswmpiqkw"].clone().set_position(53, 34), | |
| 1238 | + sprites["hoswmpiqkw"].clone().set_position(53, 49), | |
| 1239 | + sprites["ihdgageizm"].clone().set_position(4, 0), | |
| 1240 | + sprites["ihdgageizm"].clone().set_position(9, 0), | |
| 1241 | + sprites["ihdgageizm"].clone().set_position(4, 5), | |
| 1242 | + sprites["ihdgageizm"].clone().set_position(14, 0), | |
| 1243 | + sprites["ihdgageizm"].clone().set_position(19, 0), | |
| 1244 | + sprites["ihdgageizm"].clone().set_position(24, 0), | |
| 1245 | + sprites["ihdgageizm"].clone().set_position(29, 0), | |
| 1246 | + sprites["ihdgageizm"].clone().set_position(39, 0), | |
| 1247 | + sprites["ihdgageizm"].clone().set_position(59, 0), | |
| 1248 | + sprites["ihdgageizm"].clone().set_position(4, 10), | |
| 1249 | + sprites["ihdgageizm"].clone().set_position(4, 15), | |
| 1250 | + sprites["ihdgageizm"].clone().set_position(4, 20), | |
| 1251 | + sprites["ihdgageizm"].clone().set_position(4, 25), | |
| 1252 | + sprites["ihdgageizm"].clone().set_position(4, 30), | |
| 1253 | + sprites["ihdgageizm"].clone().set_position(4, 35), | |
| 1254 | + sprites["ihdgageizm"].clone().set_position(59, 25), | |
| 1255 | + sprites["ihdgageizm"].clone().set_position(59, 30), | |
| 1256 | + sprites["ihdgageizm"].clone().set_position(59, 35), | |
| 1257 | + sprites["ihdgageizm"].clone().set_position(59, 40), | |
| 1258 | + sprites["ihdgageizm"].clone().set_position(59, 45), | |
| 1259 | + sprites["ihdgageizm"].clone().set_position(59, 50), | |
| 1260 | + sprites["ihdgageizm"].clone().set_position(59, 55), | |
| 1261 | + sprites["ihdgageizm"].clone().set_position(49, 55), | |
| 1262 | + sprites["ihdgageizm"].clone().set_position(44, 55), | |
| 1263 | + sprites["ihdgageizm"].clone().set_position(39, 55), | |
| 1264 | + sprites["ihdgageizm"].clone().set_position(34, 55), | |
| 1265 | + sprites["ihdgageizm"].clone().set_position(29, 55), | |
| 1266 | + sprites["ihdgageizm"].clone().set_position(24, 55), | |
| 1267 | + sprites["ihdgageizm"].clone().set_position(19, 55), | |
| 1268 | + sprites["ihdgageizm"].clone().set_position(4, 40), | |
| 1269 | + sprites["ihdgageizm"].clone().set_position(4, 45), | |
| 1270 | + sprites["ihdgageizm"].clone().set_position(4, 50), | |
| 1271 | + sprites["ihdgageizm"].clone().set_position(9, 50), | |
| 1272 | + sprites["ihdgageizm"].clone().set_position(4, 55), | |
| 1273 | + sprites["ihdgageizm"].clone().set_position(9, 55), | |
| 1274 | + sprites["ihdgageizm"].clone().set_position(14, 55), | |
| 1275 | + sprites["ihdgageizm"].clone().set_position(4, 45), | |
| 1276 | + sprites["ihdgageizm"].clone().set_position(34, 0), | |
| 1277 | + sprites["ihdgageizm"].clone().set_position(59, 10), | |
| 1278 | + sprites["ihdgageizm"].clone().set_position(59, 5), | |
| 1279 | + sprites["ihdgageizm"].clone().set_position(29, 35), | |
| 1280 | + sprites["ihdgageizm"].clone().set_position(24, 35), | |
| 1281 | + sprites["ihdgageizm"].clone().set_position(34, 35), | |
| 1282 | + sprites["ihdgageizm"].clone().set_position(49, 35), | |
| 1283 | + sprites["ihdgageizm"].clone().set_position(49, 40), | |
| 1284 | + sprites["ihdgageizm"].clone().set_position(49, 45), | |
| 1285 | + sprites["ihdgageizm"].clone().set_position(49, 50), | |
| 1286 | + sprites["ihdgageizm"].clone().set_position(49, 30), | |
| 1287 | + sprites["ihdgageizm"].clone().set_position(44, 30), | |
| 1288 | + sprites["ihdgageizm"].clone().set_position(19, 15), | |
| 1289 | + sprites["ihdgageizm"].clone().set_position(14, 35), | |
| 1290 | + sprites["ihdgageizm"].clone().set_position(24, 15), | |
| 1291 | + sprites["ihdgageizm"].clone().set_position(34, 30), | |
| 1292 | + sprites["ihdgageizm"].clone().set_position(19, 35), | |
| 1293 | + sprites["ihdgageizm"].clone().set_position(29, 15), | |
| 1294 | + sprites["ihdgageizm"].clone().set_position(14, 30), | |
| 1295 | + sprites["ihdgageizm"].clone().set_position(34, 15), | |
| 1296 | + sprites["ihdgageizm"].clone().set_position(14, 15), | |
| 1297 | + sprites["ihdgageizm"].clone().set_position(34, 20), | |
| 1298 | + sprites["ihdgageizm"].clone().set_position(14, 20), | |
| 1299 | + sprites["ihdgageizm"].clone().set_position(54, 55), | |
| 1300 | + sprites["ihdgageizm"].clone().set_position(44, 0), | |
| 1301 | + sprites["ihdgageizm"].clone().set_position(54, 0), | |
| 1302 | + sprites["ihdgageizm"].clone().set_position(59, 15), | |
| 1303 | + sprites["ihdgageizm"].clone().set_position(44, 25), | |
| 1304 | + sprites["ihdgageizm"].clone().set_position(59, 20), | |
| 1305 | + sprites["ihdgageizm"].clone().set_position(44, 35), | |
| 1306 | + sprites["ihdgageizm"].clone().set_position(44, 50), | |
| 1307 | + sprites["ihdgageizm"].clone().set_position(39, 50), | |
| 1308 | + sprites["ihdgageizm"].clone().set_position(44, 45), | |
| 1309 | + sprites["ihdgageizm"].clone().set_position(44, 40), | |
| 1310 | + sprites["ihdgageizm"].clone().set_position(44, 5), | |
| 1311 | + sprites["ihdgageizm"].clone().set_position(44, 10), | |
| 1312 | + sprites["ihdgageizm"].clone().set_position(54, 15), | |
| 1313 | + sprites["kapcaakvb_b"].clone().set_position(49, 4), | |
| 1314 | + sprites["kvynsvxbpi"].clone().set_position(55, 51), | |
| 1315 | + sprites["kvynsvxbpi"].clone().set_position(55, 36), | |
| 1316 | + sprites["mkjdaccuuf"].clone().set_position(14, 10), | |
| 1317 | + sprites["mxfhnkdzvf"].clone().set_position(49, 0), | |
| 1318 | + sprites["njpewhmtfd"].clone().set_position(53, 34), | |
| 1319 | + sprites["npxgalaybz"].clone().set_position(40, 6), | |
| 1320 | + sprites["npxgalaybz"].clone().set_position(10, 46), | |
| 1321 | + sprites["npxgalaybz"].clone().set_position(10, 6), | |
| 1322 | + sprites["nszegiawib"].clone().set_position(52, 48), | |
| 1323 | + sprites["nszegiawib"].clone().set_position(52, 33), | |
| 1324 | + sprites["rhsxkxzdjz"].clone().set_position(34, 40), | |
| 1325 | + sprites["rjlbuycveu"].clone().set_position(54, 50), | |
| 1326 | + sprites["rjlbuycveu"].clone().set_position(54, 35), | |
| 1327 | + sprites["sfqyzhzkij"].clone().set_position(24, 50), | |
| 1328 | + sprites["soyhouuebz"].clone().set_position(24, 30), | |
| 1329 | + sprites["tihiodtoj_l"].clone().set_position(50, 20), | |
| 1330 | + sprites["ubyunwkbpx"].clone().set_position(54, 20), | |
| 1331 | + sprites["vjotnebuqo"].clone().set_position(53, 49), | |
| 1332 | + sprites["wgmbtyhvbc"].clone().set_position(3, 55).set_scale(2), | |
| 1333 | + sprites["xfmluydglp"].clone().set_position(19, 20), | |
| 1334 | + sprites["xvrpzkggig"].clone(), | |
| 1335 | + ], | |
| 1336 | + grid_size=(64, 64), | |
| 1337 | + data={ | |
| 1338 | + "StepCounter": 42, | |
| 1339 | + "kvynsvxbpi": [5, 0], | |
| 1340 | + "GoalColor": [9, 8], | |
| 1341 | + "GoalRotation": [90, 180], | |
| 1342 | + "StartShape": 0, | |
| 1343 | + "StartColor": 14, | |
| 1344 | + "StartRotation": 0, | |
| 1345 | + "Fog": False, | |
| 1346 | + "StepsDecrement": 1, | |
| 1347 | + }, | |
| 1348 | + ), | |
| 1349 | + # Level 7 | |
| 1350 | + Level( | |
| 1351 | + sprites=[ | |
| 1352 | + sprites["eqatonpohu"].clone().set_position(1, 53), | |
| 1353 | + sprites["ghizzeqtoh"].clone().set_position(1, 53), | |
| 1354 | + sprites["hoswmpiqkw"].clone().set_position(28, 49), | |
| 1355 | + sprites["ihdgageizm"].clone().set_position(4, 0), | |
| 1356 | + sprites["ihdgageizm"].clone().set_position(9, 0), | |
| 1357 | + sprites["ihdgageizm"].clone().set_position(4, 5), | |
| 1358 | + sprites["ihdgageizm"].clone().set_position(14, 0), | |
| 1359 | + sprites["ihdgageizm"].clone().set_position(19, 0), | |
| 1360 | + sprites["ihdgageizm"].clone().set_position(24, 0), | |
| 1361 | + sprites["ihdgageizm"].clone().set_position(29, 0), | |
| 1362 | + sprites["ihdgageizm"].clone().set_position(39, 0), | |
| 1363 | + sprites["ihdgageizm"].clone().set_position(44, 0), | |
| 1364 | + sprites["ihdgageizm"].clone().set_position(49, 0), | |
| 1365 | + sprites["ihdgageizm"].clone().set_position(54, 0), | |
| 1366 | + sprites["ihdgageizm"].clone().set_position(59, 0), | |
| 1367 | + sprites["ihdgageizm"].clone().set_position(4, 10), | |
| 1368 | + sprites["ihdgageizm"].clone().set_position(4, 15), | |
| 1369 | + sprites["ihdgageizm"].clone().set_position(4, 20), | |
| 1370 | + sprites["ihdgageizm"].clone().set_position(4, 25), | |
| 1371 | + sprites["ihdgageizm"].clone().set_position(4, 30), | |
| 1372 | + sprites["ihdgageizm"].clone().set_position(4, 35), | |
| 1373 | + sprites["ihdgageizm"].clone().set_position(59, 20), | |
| 1374 | + sprites["ihdgageizm"].clone().set_position(59, 30), | |
| 1375 | + sprites["ihdgageizm"].clone().set_position(59, 45), | |
| 1376 | + sprites["ihdgageizm"].clone().set_position(59, 50), | |
| 1377 | + sprites["ihdgageizm"].clone().set_position(59, 55), | |
| 1378 | + sprites["ihdgageizm"].clone().set_position(59, 55), | |
| 1379 | + sprites["ihdgageizm"].clone().set_position(54, 55), | |
| 1380 | + sprites["ihdgageizm"].clone().set_position(49, 55), | |
| 1381 | + sprites["ihdgageizm"].clone().set_position(44, 55), | |
| 1382 | + sprites["ihdgageizm"].clone().set_position(39, 55), | |
| 1383 | + sprites["ihdgageizm"].clone().set_position(34, 55), | |
| 1384 | + sprites["ihdgageizm"].clone().set_position(29, 55), | |
| 1385 | + sprites["ihdgageizm"].clone().set_position(24, 55), | |
| 1386 | + sprites["ihdgageizm"].clone().set_position(19, 55), | |
| 1387 | + sprites["ihdgageizm"].clone().set_position(4, 40), | |
| 1388 | + sprites["ihdgageizm"].clone().set_position(4, 45), | |
| 1389 | + sprites["ihdgageizm"].clone().set_position(4, 50), | |
| 1390 | + sprites["ihdgageizm"].clone().set_position(9, 50), | |
| 1391 | + sprites["ihdgageizm"].clone().set_position(4, 55), | |
| 1392 | + sprites["ihdgageizm"].clone().set_position(9, 55), | |
| 1393 | + sprites["ihdgageizm"].clone().set_position(14, 55), | |
| 1394 | + sprites["ihdgageizm"].clone().set_position(4, 45), | |
| 1395 | + sprites["ihdgageizm"].clone().set_position(34, 0), | |
| 1396 | + sprites["ihdgageizm"].clone().set_position(59, 10), | |
| 1397 | + sprites["ihdgageizm"].clone().set_position(59, 5), | |
| 1398 | + sprites["ihdgageizm"].clone().set_position(24, 40), | |
| 1399 | + sprites["ihdgageizm"].clone().set_position(44, 10), | |
| 1400 | + sprites["ihdgageizm"].clone().set_position(44, 5), | |
| 1401 | + sprites["ihdgageizm"].clone().set_position(44, 15), | |
| 1402 | + sprites["ihdgageizm"].clone().set_position(39, 45), | |
| 1403 | + sprites["ihdgageizm"].clone().set_position(24, 45), | |
| 1404 | + sprites["ihdgageizm"].clone().set_position(34, 45), | |
| 1405 | + sprites["ihdgageizm"].clone().set_position(24, 50), | |
| 1406 | + sprites["ihdgageizm"].clone().set_position(34, 50), | |
| 1407 | + sprites["ihdgageizm"].clone().set_position(44, 20), | |
| 1408 | + sprites["ihdgageizm"].clone().set_position(44, 25), | |
| 1409 | + sprites["ihdgageizm"].clone().set_position(19, 50), | |
| 1410 | + sprites["ihdgageizm"].clone().set_position(24, 35), | |
| 1411 | + sprites["ihdgageizm"].clone().set_position(39, 50), | |
| 1412 | + sprites["ihdgageizm"].clone().set_position(9, 45), | |
| 1413 | + sprites["ihdgageizm"].clone().set_position(14, 50), | |
| 1414 | + sprites["ihdgageizm"].clone().set_position(19, 45), | |
| 1415 | + sprites["ihdgageizm"].clone().set_position(29, 15), | |
| 1416 | + sprites["ihdgageizm"].clone().set_position(59, 15), | |
| 1417 | + sprites["ihdgageizm"].clone().set_position(59, 25), | |
| 1418 | + sprites["ihdgageizm"].clone().set_position(59, 35), | |
| 1419 | + sprites["ihdgageizm"].clone().set_position(59, 40), | |
| 1420 | + sprites["ihdgageizm"].clone().set_position(44, 45), | |
| 1421 | + sprites["ihdgageizm"].clone().set_position(24, 15), | |
| 1422 | + sprites["ihdgageizm"].clone().set_position(24, 20), | |
| 1423 | + sprites["ihdgageizm"].clone().set_position(19, 20), | |
| 1424 | + sprites["ihdgageizm"].clone().set_position(54, 45), | |
| 1425 | + sprites["ihdgageizm"].clone().set_position(34, 40), | |
| 1426 | + sprites["ihdgageizm"].clone().set_position(34, 5), | |
| 1427 | + sprites["ihdgageizm"].clone().set_position(24, 10), | |
| 1428 | + sprites["ihdgageizm"].clone().set_position(24, 30), | |
| 1429 | + sprites["ihdgageizm"].clone().set_position(19, 30), | |
| 1430 | + sprites["ihdgageizm"].clone().set_position(14, 20), | |
| 1431 | + sprites["ihdgageizm"].clone().set_position(14, 30), | |
| 1432 | + sprites["irgjxweouz"].clone().set_position(54, 5), | |
| 1433 | + sprites["kapcaakvb_b"].clone().set_position(39, 19), | |
| 1434 | + sprites["krdypjjivz"].clone().set_position(34, 35), | |
| 1435 | + sprites["kvynsvxbpi"].clone().set_position(30, 51), | |
| 1436 | + sprites["lujfinsby_t"].clone().set_position(34, 31), | |
| 1437 | + sprites["mkjdaccuuf"].clone().set_position(19, 40), | |
| 1438 | + sprites["mxfhnkdzvf"].clone().set_position(39, 15), | |
| 1439 | + sprites["npxgalaybz"].clone().set_position(30, 21), | |
| 1440 | + sprites["npxgalaybz"].clone().set_position(50, 6), | |
| 1441 | + sprites["npxgalaybz"].clone().set_position(15, 46), | |
| 1442 | + sprites["npxgalaybz"].clone().set_position(40, 6), | |
| 1443 | + sprites["npxgalaybz"].clone().set_position(55, 51), | |
| 1444 | + sprites["npxgalaybz"].clone().set_position(10, 6), | |
| 1445 | + sprites["nszegiawib"].clone().set_position(27, 48), | |
| 1446 | + sprites["rhsxkxzdjz"].clone().set_position(54, 10), | |
| 1447 | + sprites["rjlbuycveu"].clone().set_position(29, 50), | |
| 1448 | + sprites["sfqyzhzkij"].clone().set_position(19, 15), | |
| 1449 | + sprites["soyhouuebz"].clone().set_position(9, 40), | |
| 1450 | + sprites["tihiodtoj_l"].clone().set_position(40, 30), | |
| 1451 | + sprites["ubyunwkbpx"].clone().set_position(44, 30), | |
| 1452 | + sprites["vjotnebuqo"].clone().set_position(28, 49), | |
| 1453 | + sprites["wgmbtyhvbc"].clone().set_position(3, 55).set_scale(2), | |
| 1454 | + sprites["xvrpzkggig"].clone(), | |
| 1455 | + ], | |
| 1456 | + grid_size=(64, 64), | |
| 1457 | + data={ | |
| 1458 | + "StepCounter": 42, | |
| 1459 | + "kvynsvxbpi": 0, | |
| 1460 | + "GoalColor": 8, | |
| 1461 | + "GoalRotation": 180, | |
| 1462 | + "StartShape": 1, | |
| 1463 | + "StartColor": 12, | |
| 1464 | + "StartRotation": 0, | |
| 1465 | + "Fog": True, | |
| 1466 | + }, | |
| 1467 | + ), | |
| 1468 | +] | |
| 1469 | +BACKGROUND_COLOR = 3 | |
| 1470 | +PADDING_COLOR = 3 | |
| 1471 | +ubupgomgin = -1 | |
| 1472 | +epeqflmtfc = 0 | |
| 1473 | +dqifgqaxrg = 1 | |
| 1474 | +oazrnhzatr = 2 | |
| 1475 | +iisukudgvu = 3 | |
| 1476 | +kacnekcwsp = 4 | |
| 1477 | +avbdwkmqcy = 5 | |
| 1478 | +ijbilzmvdl = 6 | |
| 1479 | +yffnqoouus = 7 | |
| 1480 | +tqogkgimes = 8 | |
| 1481 | +jninpsotet = 9 | |
| 1482 | +vgcsccvckt = 10 | |
| 1483 | +dhxmtlewyv = 11 | |
| 1484 | +epqvqkpffo = 12 | |
| 1485 | +qqkmepheqb = 13 | |
| 1486 | +bejggpjowv = 14 | |
| 1487 | +eqvdisyxbr = 15 | |
| 1488 | +zoghkczvvt = 5 | |
| 1489 | +xvzyzqolqz = 5 | |
| 1490 | + | |
| 1491 | + | |
| 1492 | +class hbuhvkxlhc(RenderableUserDisplay): | |
| 1493 | + """.""" | |
| 1494 | + | |
| 1495 | + bfdcztirdu: List[Tuple[int, int]] | |
| 1496 | + | |
| 1497 | + def __init__(self, vjhajnbdzr: "Ls20", osgviligwp: int): | |
| 1498 | + self.vjhajnbdzr = vjhajnbdzr | |
| 1499 | + self.osgviligwp = osgviligwp | |
| 1500 | + self.current_steps = osgviligwp | |
| 1501 | + self.efipnixsvl = 1 | |
| 1502 | + | |
| 1503 | + def kbkdzqocik(self, kapizhweba: int) -> None: | |
| 1504 | + self.current_steps = max(0, min(kapizhweba, self.osgviligwp)) | |
| 1505 | + | |
| 1506 | + def vytykscvhe(self, efipnixsvl: int) -> None: | |
| 1507 | + self.efipnixsvl = efipnixsvl | |
| 1508 | + | |
| 1509 | + def mfyzdfvxsm(self) -> bool: | |
| 1510 | + if self.current_steps >= 0: | |
| 1511 | + self.current_steps -= self.efipnixsvl | |
| 1512 | + return self.current_steps >= 0 | |
| 1513 | + | |
| 1514 | + def nzukewekzr(self) -> None: | |
| 1515 | + self.current_steps = self.osgviligwp | |
| 1516 | + | |
| 1517 | + def render_interface(self, frame: np.ndarray) -> np.ndarray: | |
| 1518 | + if self.osgviligwp == 0 or self.vjhajnbdzr.ebfuxzbvn: | |
| 1519 | + return frame | |
| 1520 | + yydgfgfvvh = 1.5 | |
| 1521 | + if self.vjhajnbdzr.oeuabekjf: | |
| 1522 | + for i in range(64): | |
| 1523 | + for fbklvtfnjh in range(64): | |
| 1524 | + if ( | |
| 1525 | + math.dist( | |
| 1526 | + (i, fbklvtfnjh), | |
| 1527 | + ( | |
| 1528 | + self.vjhajnbdzr.gudziatsk.y + yydgfgfvvh, | |
| 1529 | + self.vjhajnbdzr.gudziatsk.x + yydgfgfvvh, | |
| 1530 | + ), | |
| 1531 | + ) | |
| 1532 | + > 20.0 | |
| 1533 | + ): | |
| 1534 | + frame[i, fbklvtfnjh] = avbdwkmqcy | |
| 1535 | + if self.vjhajnbdzr.htkmubhry and self.vjhajnbdzr.htkmubhry.is_visible: | |
| 1536 | + sprite = self.vjhajnbdzr.htkmubhry.render() | |
| 1537 | + wmdkkxqkw = 3 | |
| 1538 | + toxqhfsju = 55 | |
| 1539 | + for i in range(self.vjhajnbdzr.htkmubhry.height): | |
| 1540 | + for rejdvlfhdv in range(self.vjhajnbdzr.htkmubhry.width): | |
| 1541 | + if sprite[i][rejdvlfhdv] != -1: | |
| 1542 | + frame[toxqhfsju + i, wmdkkxqkw + rejdvlfhdv] = sprite[i][rejdvlfhdv] | |
| 1543 | + for i in range(self.osgviligwp): | |
| 1544 | + wmdkkxqkw = 13 + i | |
| 1545 | + toxqhfsju = 61 | |
| 1546 | + frame[toxqhfsju : toxqhfsju + 2, wmdkkxqkw] = dhxmtlewyv if self.osgviligwp - i - 1 < self.current_steps else iisukudgvu | |
| 1547 | + for bsyrmrqsrq in range(3): | |
| 1548 | + wmdkkxqkw = 56 + 3 * bsyrmrqsrq | |
| 1549 | + toxqhfsju = 61 | |
| 1550 | + for x in range(2): | |
| 1551 | + frame[toxqhfsju : toxqhfsju + 2, wmdkkxqkw + x] = tqogkgimes if self.vjhajnbdzr.aqygnziho > bsyrmrqsrq else iisukudgvu | |
| 1552 | + return frame | |
| 1553 | + | |
| 1554 | + | |
| 1555 | +class xajlyftlyn: | |
| 1556 | + def wgxrzqzazj(self) -> bool: | |
| 1557 | + return False | |
| 1558 | + | |
| 1559 | + | |
| 1560 | +class twkzhcfelv(xajlyftlyn): | |
| 1561 | + qeekhxkoad = 8 | |
| 1562 | + boafatmkhi = 6 | |
| 1563 | + | |
| 1564 | + def __init__(self, sprite: Sprite, fjzuynaokm: Set[Tuple[int, int]]) -> None: | |
| 1565 | + self.fjzuynaokm = fjzuynaokm | |
| 1566 | + self.sprite = sprite | |
| 1567 | + self.sprite.set_blocking(BlockingMode.BOUNDING_BOX) | |
| 1568 | + self.width = self.sprite.width | |
| 1569 | + self.height = self.sprite.height | |
| 1570 | + self.start_x = self.sprite.x | |
| 1571 | + self.start_y = self.sprite.y | |
| 1572 | + self.dx = 0 | |
| 1573 | + self.dy = 0 | |
| 1574 | + if sprite.name.endswith("t"): | |
| 1575 | + self.dy = -1 | |
| 1576 | + elif sprite.name.endswith("b"): | |
| 1577 | + self.dy = 1 | |
| 1578 | + elif sprite.name.endswith("r"): | |
| 1579 | + self.dx = 1 | |
| 1580 | + elif sprite.name.endswith("l"): | |
| 1581 | + self.dx = -1 | |
| 1582 | + self.target_x = self.sprite.x | |
| 1583 | + self.target_y = self.sprite.y | |
| 1584 | + self.is_pushing = False | |
| 1585 | + self.aqxtoxeino: Optional[Sprite] = None | |
| 1586 | + self._anim_elapsed = 0 | |
| 1587 | + self._anim_duration = 1 | |
| 1588 | + self._anim_from_x = float(self.sprite.x) | |
| 1589 | + self._anim_from_y = float(self.sprite.y) | |
| 1590 | + self._anim_to_x = float(self.sprite.x) | |
| 1591 | + self._anim_to_y = float(self.sprite.y) | |
| 1592 | + self._carry_x = 0.0 | |
| 1593 | + self._carry_y = 0.0 | |
| 1594 | + | |
| 1595 | + def ullzqnksoj(self, aqxtoxeino: Sprite) -> int: | |
| 1596 | + wall_cx, wall_cy = (self.sprite.x + 1 * self.dx, self.sprite.y + 1 * self.dy) | |
| 1597 | + xwjnqmqiaz = None | |
| 1598 | + for acdeadlbzx in range(1, 12): | |
| 1599 | + nskortmtde = wall_cx + self.dx * self.width * acdeadlbzx | |
| 1600 | + wsotwbexvh = wall_cy + self.dy * self.height * acdeadlbzx | |
| 1601 | + if (nskortmtde, wsotwbexvh) in self.fjzuynaokm: | |
| 1602 | + xwjnqmqiaz = acdeadlbzx | |
| 1603 | + break | |
| 1604 | + if xwjnqmqiaz is None: | |
| 1605 | + return 0 | |
| 1606 | + return max(0, xwjnqmqiaz - 1) | |
| 1607 | + | |
| 1608 | + def mfnyvivrar(self, dxegqdlzda: float) -> float: | |
| 1609 | + if dxegqdlzda < 0.5: | |
| 1610 | + return 4 * dxegqdlzda * dxegqdlzda * dxegqdlzda | |
| 1611 | + return 1 - (-2 * dxegqdlzda + 2) ** 3 / 2 | |
| 1612 | + | |
| 1613 | + def monctmxmpp(self, dutvzjyvok: int, xxnitqxuds: int, ilzothrych: int) -> None: | |
| 1614 | + self._anim_elapsed = 0 | |
| 1615 | + self._anim_duration = max(1, int(ilzothrych)) | |
| 1616 | + self._anim_from_x = float(self.sprite.x) | |
| 1617 | + self._anim_from_y = float(self.sprite.y) | |
| 1618 | + self._anim_to_x = float(dutvzjyvok) | |
| 1619 | + self._anim_to_y = float(xxnitqxuds) | |
| 1620 | + self._carry_x = 0.0 | |
| 1621 | + self._carry_y = 0.0 | |
| 1622 | + | |
| 1623 | + def qeoitwygzm(self, srkcilioyp: bool) -> bool: | |
| 1624 | + if self._anim_elapsed >= self._anim_duration: | |
| 1625 | + dx = int(round(self._anim_to_x - self.sprite.x)) | |
| 1626 | + dy = int(round(self._anim_to_y - self.sprite.y)) | |
| 1627 | + if dx or dy: | |
| 1628 | + self.sprite.move(dx, dy) | |
| 1629 | + if srkcilioyp and self.aqxtoxeino is not None: | |
| 1630 | + self.aqxtoxeino.move(dx, dy) | |
| 1631 | + return False | |
| 1632 | + self._anim_elapsed += 1 | |
| 1633 | + dxegqdlzda = self._anim_elapsed / self._anim_duration | |
| 1634 | + hpaysqkbgh = self.mfnyvivrar(dxegqdlzda) | |
| 1635 | + enzdcdjnzt = self._anim_from_x + (self._anim_to_x - self._anim_from_x) * hpaysqkbgh | |
| 1636 | + kyaecjvpph = self._anim_from_y + (self._anim_to_y - self._anim_from_y) * hpaysqkbgh | |
| 1637 | + kdsuujxuag = enzdcdjnzt - float(self.sprite.x) + self._carry_x | |
| 1638 | + sihdbliheu = kyaecjvpph - float(self.sprite.y) + self._carry_y | |
| 1639 | + vzkxmdfnba = int(kdsuujxuag) | |
| 1640 | + acjrijfisx = int(sihdbliheu) | |
| 1641 | + self._carry_x = kdsuujxuag - vzkxmdfnba | |
| 1642 | + self._carry_y = sihdbliheu - acjrijfisx | |
| 1643 | + if vzkxmdfnba or acjrijfisx: | |
| 1644 | + self.sprite.move(vzkxmdfnba, acjrijfisx) | |
| 1645 | + if srkcilioyp and self.aqxtoxeino is not None: | |
| 1646 | + self.aqxtoxeino.move(vzkxmdfnba, acjrijfisx) | |
| 1647 | + return True | |
| 1648 | + | |
| 1649 | + def prpxgfxlcm(self, aqxtoxeino: Sprite) -> bool: | |
| 1650 | + if not self.sprite.collides_with(aqxtoxeino): | |
| 1651 | + return False | |
| 1652 | + gguyvrkohc = self.ullzqnksoj(aqxtoxeino) | |
| 1653 | + if gguyvrkohc <= 0: | |
| 1654 | + return False | |
| 1655 | + self.aqxtoxeino = aqxtoxeino | |
| 1656 | + self.is_pushing = True | |
| 1657 | + self.target_x = self.start_x + self.dx * self.width * gguyvrkohc | |
| 1658 | + self.target_y = self.start_y + self.dy * self.height * gguyvrkohc | |
| 1659 | + self.monctmxmpp(self.target_x, self.target_y, self.qeekhxkoad) | |
| 1660 | + return True | |
| 1661 | + | |
| 1662 | + def wgxrzqzazj(self) -> bool: | |
| 1663 | + if self.is_pushing: | |
| 1664 | + if self.qeoitwygzm(srkcilioyp=True): | |
| 1665 | + return True | |
| 1666 | + self.target_x = self.start_x | |
| 1667 | + self.target_y = self.start_y | |
| 1668 | + self.is_pushing = False | |
| 1669 | + self.monctmxmpp(self.target_x, self.target_y, self.boafatmkhi) | |
| 1670 | + return True | |
| 1671 | + return self.qeoitwygzm(srkcilioyp=False) | |
| 1672 | + | |
| 1673 | + | |
| 1674 | +class dboxixicic: | |
| 1675 | + def __init__(self, oypxsalqjo: Sprite, sprite: Sprite, pawjyrnadt: int = 5) -> None: | |
| 1676 | + self.bfdcztirdu = oypxsalqjo | |
| 1677 | + self._sprite = sprite | |
| 1678 | + self._cell = pawjyrnadt | |
| 1679 | + self._start_x = sprite.x | |
| 1680 | + self._start_y = sprite.y | |
| 1681 | + self._dir = 0 | |
| 1682 | + self._undo_x: Optional[int] = None | |
| 1683 | + self._undo_y: Optional[int] = None | |
| 1684 | + self._undo_dir: Optional[int] = None | |
| 1685 | + | |
| 1686 | + def bkuguqrpvq(self) -> None: | |
| 1687 | + self._dir = 0 | |
| 1688 | + self._sprite.set_position(self._start_x, self._start_y) | |
| 1689 | + self._undo_x = None | |
| 1690 | + self._undo_y = None | |
| 1691 | + self._undo_dir = None | |
| 1692 | + | |
| 1693 | + def qrttfzbifu(self) -> None: | |
| 1694 | + self._dir = (self._dir + 2) % 4 | |
| 1695 | + | |
| 1696 | + def npdjlrkhsg(self) -> Tuple[int, int]: | |
| 1697 | + if not self.bfdcztirdu: | |
| 1698 | + return (0, 0) | |
| 1699 | + msmljuaejl = ( | |
| 1700 | + self._dir, | |
| 1701 | + (self._dir - 1) % 4, | |
| 1702 | + (self._dir + 1) % 4, | |
| 1703 | + (self._dir + 2) % 4, | |
| 1704 | + ) | |
| 1705 | + for acdeadlbzx in msmljuaejl: | |
| 1706 | + dx, dy = self.nakogfhyus(acdeadlbzx) | |
| 1707 | + rbaqncskoi = self._sprite.x + dx * self._cell | |
| 1708 | + uodlwwyprt = self._sprite.y + dy * self._cell | |
| 1709 | + if self.iiosonyanc(rbaqncskoi, uodlwwyprt): | |
| 1710 | + self._dir = acdeadlbzx | |
| 1711 | + return (dx, dy) | |
| 1712 | + return (0, 0) | |
| 1713 | + | |
| 1714 | + def step(self) -> bool: | |
| 1715 | + folqexnjmf = self._sprite.x | |
| 1716 | + yxlpsejtoh = self._sprite.y | |
| 1717 | + wsdeleuewc = self._dir | |
| 1718 | + dx, dy = self.npdjlrkhsg() | |
| 1719 | + if dx == 0 and dy == 0: | |
| 1720 | + self._undo_x = None | |
| 1721 | + self._undo_y = None | |
| 1722 | + self._undo_dir = None | |
| 1723 | + return False | |
| 1724 | + self._undo_x = folqexnjmf | |
| 1725 | + self._undo_y = yxlpsejtoh | |
| 1726 | + self._undo_dir = wsdeleuewc | |
| 1727 | + self._sprite.set_position(folqexnjmf + dx * self._cell, yxlpsejtoh + dy * self._cell) | |
| 1728 | + return True | |
| 1729 | + | |
| 1730 | + def fwtnsrvkrz(self) -> bool: | |
| 1731 | + if self._undo_x is None or self._undo_y is None or self._undo_dir is None: | |
| 1732 | + return False | |
| 1733 | + self._sprite.set_position(self._undo_x, self._undo_y) | |
| 1734 | + self._dir = self._undo_dir | |
| 1735 | + self._undo_x = None | |
| 1736 | + self._undo_y = None | |
| 1737 | + self._undo_dir = None | |
| 1738 | + return True | |
| 1739 | + | |
| 1740 | + def iiosonyanc(self, x: int, y: int) -> bool: | |
| 1741 | + if not self.bfdcztirdu: | |
| 1742 | + return False | |
| 1743 | + return self.vtfcqjvbeo(x, y) and self.uczkzlpcwg(x, y) >= 0 | |
| 1744 | + | |
| 1745 | + def vtfcqjvbeo(self, x: int, y: int) -> bool: | |
| 1746 | + return x >= self.bfdcztirdu.x and y >= self.bfdcztirdu.y and (x < self.bfdcztirdu.x + self.bfdcztirdu.width) and (y < self.bfdcztirdu.y + self.bfdcztirdu.height) | |
| 1747 | + | |
| 1748 | + def uczkzlpcwg(self, x: int, y: int) -> int: | |
| 1749 | + akcoyirktv = x - self.bfdcztirdu.x | |
| 1750 | + cgpwxobidt = y - self.bfdcztirdu.y | |
| 1751 | + if akcoyirktv < 0 or akcoyirktv >= self.bfdcztirdu.width or cgpwxobidt < 0 or (cgpwxobidt >= self.bfdcztirdu.height): | |
| 1752 | + return -1 | |
| 1753 | + return int(self.bfdcztirdu.pixels[cgpwxobidt, akcoyirktv]) | |
| 1754 | + | |
| 1755 | + def nakogfhyus(self, acdeadlbzx: int) -> Tuple[int, int]: | |
| 1756 | + if acdeadlbzx == 0: | |
| 1757 | + return (0, 1) | |
| 1758 | + if acdeadlbzx == 1: | |
| 1759 | + return (1, 0) | |
| 1760 | + if acdeadlbzx == 2: | |
| 1761 | + return (0, -1) | |
| 1762 | + return (-1, 0) | |
| 1763 | + | |
| 1764 | + | |
| 1765 | +class Ls20(ARCBaseGame): | |
| 1766 | + def __init__(self) -> None: | |
| 1767 | + shumwqpzsq = levels[0].get_data("StepCounter") if levels else 0 | |
| 1768 | + osgviligwp = shumwqpzsq if shumwqpzsq else 0 | |
| 1769 | + self._step_counter_ui = hbuhvkxlhc(self, osgviligwp) | |
| 1770 | + self.ijessuuig = [] | |
| 1771 | + self.tnkekoeuk = [epqvqkpffo, jninpsotet, bejggpjowv, tqogkgimes] | |
| 1772 | + self.dhksvilbb = [0, 90, 180, 270] | |
| 1773 | + self.ijessuuig.append(sprites["gngifvjddu"]) | |
| 1774 | + self.ijessuuig.append(sprites["fywfjzkxlm"]) | |
| 1775 | + self.ijessuuig.append(sprites["mkfbgalsbe"]) | |
| 1776 | + self.ijessuuig.append(sprites["nnjhdcanjk"]) | |
| 1777 | + self.ijessuuig.append(sprites["grcpfuizfp"]) | |
| 1778 | + self.ijessuuig.append(sprites["ubspnhafvq"]) | |
| 1779 | + self.oeuabekjf = False | |
| 1780 | + xngzmcbxu = Camera( | |
| 1781 | + width=16, | |
| 1782 | + height=16, | |
| 1783 | + background=BACKGROUND_COLOR, | |
| 1784 | + letter_box=PADDING_COLOR, | |
| 1785 | + interfaces=[self._step_counter_ui], | |
| 1786 | + ) | |
| 1787 | + super().__init__(game_id="ls20", levels=levels, camera=xngzmcbxu, available_actions=[1, 2, 3, 4]) | |
| 1788 | + self.wbcenorpju() | |
| 1789 | + | |
| 1790 | + def wbcenorpju(self) -> None: | |
| 1791 | + """.""" | |
| 1792 | + hgkhqetaxy = self.current_level.get_data("StepsDecrement") | |
| 1793 | + efipnixsvl = 2 if hgkhqetaxy is None else hgkhqetaxy | |
| 1794 | + self._step_counter_ui.vytykscvhe(efipnixsvl) | |
| 1795 | + rnaomksehd = self.current_level.get_data("StepCounter") | |
| 1796 | + if rnaomksehd: | |
| 1797 | + self._step_counter_ui.osgviligwp = rnaomksehd | |
| 1798 | + self._step_counter_ui.nzukewekzr() | |
| 1799 | + | |
| 1800 | + def on_set_level(self, level: Level) -> None: | |
| 1801 | + """.""" | |
| 1802 | + self._levels[self._current_level_index] = self._clean_levels[self._current_level_index].clone() | |
| 1803 | + self.gudziatsk = self.current_level.get_sprites_by_tag("sfqyzhzkij")[0] | |
| 1804 | + self.gudziatsk.set_blocking(BlockingMode.BOUNDING_BOX) | |
| 1805 | + self.gisrhqpee = self.gudziatsk.width | |
| 1806 | + self.tbwnoxqgc = self.gudziatsk.height | |
| 1807 | + self.htkmubhry = self.current_level.get_sprites_by_tag("wgmbtyhvbc")[0] | |
| 1808 | + self.htkmubhry_2 = self.current_level.get_sprites_by_tag("eqatonpohu")[0] | |
| 1809 | + self.tsynhckng = self.current_level.get_sprites_by_tag("ghizzeqtoh")[0] | |
| 1810 | + self.srgbthxut = self.current_level.get_sprites_by_tag("kvynsvxbpi") | |
| 1811 | + self.plrpelhym = self.current_level.get_sprites_by_tag("rjlbuycveu") | |
| 1812 | + self.lvrnuajbl = [False] * len(self.srgbthxut) | |
| 1813 | + self.fwckfzsyc = 0 | |
| 1814 | + self.hiaauhahz = 0 | |
| 1815 | + self.cklxociuu = 0 | |
| 1816 | + self.wbcenorpju() | |
| 1817 | + ezhluetmc = self.current_level.grid_size | |
| 1818 | + if ezhluetmc is not None: | |
| 1819 | + self.drtdqwdbc = ezhluetmc[0] | |
| 1820 | + self.qlgmdayuo = ezhluetmc[1] | |
| 1821 | + self.ehwheiwsk = [] | |
| 1822 | + self.yjdexjsoa = [] | |
| 1823 | + self.oeuabekjf = self.current_level.get_data("Fog") | |
| 1824 | + self.ldxlnycps = self.current_level.get_data("kvynsvxbpi") | |
| 1825 | + if isinstance(self.ldxlnycps, int): | |
| 1826 | + self.ldxlnycps = [self.ldxlnycps] | |
| 1827 | + ldgzgjdsrf = self.current_level.get_data("GoalRotation") | |
| 1828 | + if isinstance(ldgzgjdsrf, int): | |
| 1829 | + ldgzgjdsrf = [ldgzgjdsrf] | |
| 1830 | + lbgtuaplev = self.current_level.get_data("GoalColor") | |
| 1831 | + if isinstance(lbgtuaplev, int): | |
| 1832 | + lbgtuaplev = [lbgtuaplev] | |
| 1833 | + for dinyecvyq in range(len(self.plrpelhym)): | |
| 1834 | + self.ehwheiwsk.append(self.dhksvilbb.index(ldgzgjdsrf[dinyecvyq])) | |
| 1835 | + self.yjdexjsoa.append(self.tnkekoeuk.index(lbgtuaplev[dinyecvyq])) | |
| 1836 | + self.srgbthxut[dinyecvyq].pixels = self.ijessuuig[self.ldxlnycps[dinyecvyq]].pixels.copy() | |
| 1837 | + self.srgbthxut[dinyecvyq].color_remap(epeqflmtfc, self.tnkekoeuk[self.yjdexjsoa[dinyecvyq]]) | |
| 1838 | + self.srgbthxut[dinyecvyq].set_rotation(self.dhksvilbb[self.ehwheiwsk[dinyecvyq]]) | |
| 1839 | + self.qetwzqzzik() | |
| 1840 | + self.aqdxgoyvu = sprites["sqpmiygfvh"].clone() | |
| 1841 | + self.current_level.add_sprite(self.aqdxgoyvu) | |
| 1842 | + self.aqdxgoyvu.set_visible(False) | |
| 1843 | + self.aqygnziho = 3 | |
| 1844 | + self.ofoahudlo: List[Sprite] = [] | |
| 1845 | + self.byotxmvkt: List[Sprite] = [] | |
| 1846 | + self.alsxlhizr: List[Sprite] = [] | |
| 1847 | + self.ebfuxzbvn = 0 | |
| 1848 | + self.akoadfsur = 0 | |
| 1849 | + self.ltwrkifkx = self.gudziatsk.x | |
| 1850 | + self.zyoimjaei = self.gudziatsk.y | |
| 1851 | + self.wsoslqeku: List[dboxixicic] = [] | |
| 1852 | + for uedjpektbg in self.current_level.get_sprites_by_tag("xfmluydglp"): | |
| 1853 | + for ocajwvfus in ("ttfwljgohq", "soyhouuebz", "rhsxkxzdjz"): | |
| 1854 | + for hasivfwip in self.current_level.get_sprites_by_tag(ocajwvfus): | |
| 1855 | + if uedjpektbg.collides_with(hasivfwip, ignoreMode=True): | |
| 1856 | + self.wsoslqeku.append(dboxixicic(uedjpektbg, hasivfwip)) | |
| 1857 | + fjzuynaokm: Set[Tuple[int, int]] = set() | |
| 1858 | + for qoceexndvw in self.current_level.get_sprites_by_tag("ihdgageizm"): | |
| 1859 | + fjzuynaokm.add((qoceexndvw.x, qoceexndvw.y)) | |
| 1860 | + for grbudvkafa in self.current_level.get_sprites_by_tag("rjlbuycveu"): | |
| 1861 | + fjzuynaokm.add((grbudvkafa.x, grbudvkafa.y)) | |
| 1862 | + self.hasivfwip: List[twkzhcfelv] = [] | |
| 1863 | + for ojwauijaoq in self.current_level.get_sprites_by_tag("gbvqrjtaqo"): | |
| 1864 | + self.hasivfwip.append(twkzhcfelv(ojwauijaoq, fjzuynaokm)) | |
| 1865 | + self.euemavvxz: List[xajlyftlyn] = [] | |
| 1866 | + | |
| 1867 | + def mrznumynfe(self, zccgflmau: int, qoxqcbqfp: int, xzejejszi: int, eutrvdkbx: int) -> List[Sprite]: | |
| 1868 | + """.""" | |
| 1869 | + ehiovmywu = self.current_level._sprites | |
| 1870 | + return [xfemxgpuj for xfemxgpuj in ehiovmywu if xfemxgpuj.x >= zccgflmau and xfemxgpuj.x < zccgflmau + xzejejszi and (xfemxgpuj.y >= qoxqcbqfp) and (xfemxgpuj.y < qoxqcbqfp + eutrvdkbx)] | |
| 1871 | + | |
| 1872 | + def txnfzvzetn(self, juldcpkjse: int, ullicjtklz: int) -> Tuple[bool, bool]: | |
| 1873 | + ttiyzlpkgh = self.mrznumynfe(juldcpkjse, ullicjtklz, self.gisrhqpee, self.tbwnoxqgc) | |
| 1874 | + bwdzgjttjp = False | |
| 1875 | + yubyobdoss = False | |
| 1876 | + for mvcsnkcqz in ttiyzlpkgh: | |
| 1877 | + if mvcsnkcqz.tags is None: | |
| 1878 | + break | |
| 1879 | + elif "ihdgageizm" in mvcsnkcqz.tags: | |
| 1880 | + bwdzgjttjp = True | |
| 1881 | + break | |
| 1882 | + elif "rjlbuycveu" in mvcsnkcqz.tags: | |
| 1883 | + wyhfvzxukh = self.plrpelhym.index(mvcsnkcqz) | |
| 1884 | + if not self.bejndxqqzf(wyhfvzxukh): | |
| 1885 | + self.htkmubhry_2.color_remap(None, epeqflmtfc) | |
| 1886 | + self.akoadfsur = zoghkczvvt | |
| 1887 | + bwdzgjttjp = True | |
| 1888 | + elif "npxgalaybz" in mvcsnkcqz.tags: | |
| 1889 | + yubyobdoss = True | |
| 1890 | + self._step_counter_ui.kbkdzqocik(self._step_counter_ui.osgviligwp) | |
| 1891 | + self.ofoahudlo.append(mvcsnkcqz) | |
| 1892 | + self.current_level.remove_sprite(mvcsnkcqz) | |
| 1893 | + elif "ttfwljgohq" in mvcsnkcqz.tags: | |
| 1894 | + self.fwckfzsyc = (self.fwckfzsyc + 1) % len(self.ijessuuig) | |
| 1895 | + self.htkmubhry.pixels = self.ijessuuig[self.fwckfzsyc].pixels.copy() | |
| 1896 | + self.htkmubhry.color_remap(epeqflmtfc, self.tnkekoeuk[self.hiaauhahz]) | |
| 1897 | + if self.vqfjzzkhid(): | |
| 1898 | + self.akoadfsur = zoghkczvvt | |
| 1899 | + elif "soyhouuebz" in mvcsnkcqz.tags: | |
| 1900 | + lwphyolnjb = (self.hiaauhahz + 1) % len(self.tnkekoeuk) | |
| 1901 | + self.htkmubhry.color_remap(self.tnkekoeuk[self.hiaauhahz], self.tnkekoeuk[lwphyolnjb]) | |
| 1902 | + self.hiaauhahz = lwphyolnjb | |
| 1903 | + if self.vqfjzzkhid(): | |
| 1904 | + self.akoadfsur = zoghkczvvt | |
| 1905 | + elif "rhsxkxzdjz" in mvcsnkcqz.tags: | |
| 1906 | + self.cklxociuu = (self.cklxociuu + 1) % 4 | |
| 1907 | + self.htkmubhry.set_rotation(self.dhksvilbb[self.cklxociuu]) | |
| 1908 | + if self.vqfjzzkhid(): | |
| 1909 | + self.akoadfsur = zoghkczvvt | |
| 1910 | + return (bwdzgjttjp, yubyobdoss) | |
| 1911 | + | |
| 1912 | + def step(self) -> None: | |
| 1913 | + if self.euemavvxz: | |
| 1914 | + for i in range(len(self.euemavvxz) - 1, -1, -1): | |
| 1915 | + kgppvertad = self.euemavvxz[i] | |
| 1916 | + if not kgppvertad.wgxrzqzazj(): | |
| 1917 | + del self.euemavvxz[i] | |
| 1918 | + if not self.euemavvxz: | |
| 1919 | + self.txnfzvzetn(self.gudziatsk.x, self.gudziatsk.y) | |
| 1920 | + self.complete_action() | |
| 1921 | + return | |
| 1922 | + if self.ebfuxzbvn > 0: | |
| 1923 | + self.ebfuxzbvn -= 1 | |
| 1924 | + if self.ebfuxzbvn > 0: | |
| 1925 | + return | |
| 1926 | + self.aqdxgoyvu.set_visible(False) | |
| 1927 | + self.htkmubhry.set_visible(True) | |
| 1928 | + self.complete_action() | |
| 1929 | + return | |
| 1930 | + if self.akoadfsur > 0: | |
| 1931 | + self.akoadfsur -= 1 | |
| 1932 | + if self.akoadfsur > 0: | |
| 1933 | + return | |
| 1934 | + self.htkmubhry_2.color_remap(None, avbdwkmqcy) | |
| 1935 | + self.tsynhckng.set_visible(False) | |
| 1936 | + for pidqulszaw in self.current_level.get_sprites_by_tag("hoswmpiqkw"): | |
| 1937 | + pidqulszaw.set_visible(False) | |
| 1938 | + self.complete_action() | |
| 1939 | + return | |
| 1940 | + hnrvmfooc = 0 | |
| 1941 | + feyjbrwyb = 0 | |
| 1942 | + etvjlacrau = False | |
| 1943 | + if self.action.id == GameAction.ACTION1: | |
| 1944 | + feyjbrwyb = -1 | |
| 1945 | + etvjlacrau = True | |
| 1946 | + elif self.action.id == GameAction.ACTION2: | |
| 1947 | + feyjbrwyb = 1 | |
| 1948 | + etvjlacrau = True | |
| 1949 | + elif self.action.id == GameAction.ACTION3: | |
| 1950 | + hnrvmfooc = -1 | |
| 1951 | + etvjlacrau = True | |
| 1952 | + elif self.action.id == GameAction.ACTION4: | |
| 1953 | + hnrvmfooc = 1 | |
| 1954 | + etvjlacrau = True | |
| 1955 | + if not etvjlacrau: | |
| 1956 | + self.complete_action() | |
| 1957 | + return | |
| 1958 | + for arilbvrrme in self.wsoslqeku: | |
| 1959 | + arilbvrrme.step() | |
| 1960 | + juldcpkjse, ullicjtklz = ( | |
| 1961 | + self.gudziatsk.x + hnrvmfooc * self.gisrhqpee, | |
| 1962 | + self.gudziatsk.y + feyjbrwyb * self.tbwnoxqgc, | |
| 1963 | + ) | |
| 1964 | + bwdzgjttjp, yubyobdoss = self.txnfzvzetn(juldcpkjse, ullicjtklz) | |
| 1965 | + if not bwdzgjttjp: | |
| 1966 | + self.gudziatsk.set_position(juldcpkjse, ullicjtklz) | |
| 1967 | + else: | |
| 1968 | + for arilbvrrme in self.wsoslqeku: | |
| 1969 | + arilbvrrme.fwtnsrvkrz() | |
| 1970 | + if self.akoadfsur: | |
| 1971 | + return | |
| 1972 | + bkuguqrpvq = not yubyobdoss and (not self._step_counter_ui.mfyzdfvxsm()) | |
| 1973 | + if not bkuguqrpvq: | |
| 1974 | + for shdkimnqse in self.hasivfwip: | |
| 1975 | + if shdkimnqse.prpxgfxlcm(self.gudziatsk): | |
| 1976 | + self.euemavvxz.append(shdkimnqse) | |
| 1977 | + return | |
| 1978 | + if self.pbznecvnfr(): | |
| 1979 | + self.next_level() | |
| 1980 | + self.complete_action() | |
| 1981 | + return | |
| 1982 | + if bkuguqrpvq: | |
| 1983 | + self.aqygnziho -= 1 | |
| 1984 | + if self.aqygnziho == 0: | |
| 1985 | + self.lose() | |
| 1986 | + self.complete_action() | |
| 1987 | + return | |
| 1988 | + self.aqdxgoyvu.set_visible(True) | |
| 1989 | + self.aqdxgoyvu.set_scale(64) | |
| 1990 | + self.aqdxgoyvu.set_position(0, 0) | |
| 1991 | + self.htkmubhry.set_visible(False) | |
| 1992 | + self.ebfuxzbvn = xvzyzqolqz | |
| 1993 | + self.lvrnuajbl = [False] * len(self.plrpelhym) | |
| 1994 | + self.gudziatsk.set_position(self.ltwrkifkx, self.zyoimjaei) | |
| 1995 | + self.qetwzqzzik() | |
| 1996 | + for iybkldaxol in self.ofoahudlo: | |
| 1997 | + self.current_level.add_sprite(iybkldaxol) | |
| 1998 | + for spssohsnbq in self.byotxmvkt: | |
| 1999 | + self.current_level.add_sprite(spssohsnbq) | |
| 2000 | + for lztoedneuu in self.alsxlhizr: | |
| 2001 | + self.current_level.add_sprite(lztoedneuu) | |
| 2002 | + self.ofoahudlo = [] | |
| 2003 | + self.byotxmvkt = [] | |
| 2004 | + self.alsxlhizr = [] | |
| 2005 | + self._step_counter_ui.kbkdzqocik(self._step_counter_ui.osgviligwp) | |
| 2006 | + self.tsynhckng.set_visible(False) | |
| 2007 | + for pidqulszaw in self.current_level.get_sprites_by_tag("hoswmpiqkw"): | |
| 2008 | + pidqulszaw.set_visible(False) | |
| 2009 | + for opdsmckaqo in self.current_level.get_sprites_by_tag("vjotnebuqo"): | |
| 2010 | + opdsmckaqo.set_visible(True) | |
| 2011 | + for arilbvrrme in self.wsoslqeku: | |
| 2012 | + arilbvrrme.bkuguqrpvq() | |
| 2013 | + return | |
| 2014 | + self.complete_action() | |
| 2015 | + | |
| 2016 | + def qetwzqzzik(self) -> None: | |
| 2017 | + self.cklxociuu = self.dhksvilbb.index(self.current_level.get_data("StartRotation")) | |
| 2018 | + self.hiaauhahz = self.tnkekoeuk.index(self.current_level.get_data("StartColor")) | |
| 2019 | + self.fwckfzsyc = self.current_level.get_data("StartShape") | |
| 2020 | + self.htkmubhry.pixels = self.ijessuuig[self.fwckfzsyc].pixels.copy() | |
| 2021 | + self.htkmubhry.color_remap(epeqflmtfc, self.tnkekoeuk[self.hiaauhahz]) | |
| 2022 | + self.htkmubhry.set_rotation(self.dhksvilbb[self.cklxociuu]) | |
| 2023 | + | |
| 2024 | + def vqfjzzkhid(self) -> bool: | |
| 2025 | + if self.level_index > 0: | |
| 2026 | + return False | |
| 2027 | + uhftkonsvn = False | |
| 2028 | + for wyhfvzxukh, spssohsnbq in enumerate(self.plrpelhym): | |
| 2029 | + pidqulszaw = self.current_level.get_sprite_at(spssohsnbq.x - 1, spssohsnbq.y - 1, "hoswmpiqkw") | |
| 2030 | + if self.bejndxqqzf(wyhfvzxukh) and (not self.lvrnuajbl[wyhfvzxukh]): | |
| 2031 | + uhftkonsvn = True | |
| 2032 | + if pidqulszaw: | |
| 2033 | + pidqulszaw.set_visible(True) | |
| 2034 | + elif pidqulszaw: | |
| 2035 | + pidqulszaw.set_visible(False) | |
| 2036 | + self.tsynhckng.set_visible(uhftkonsvn) | |
| 2037 | + return uhftkonsvn | |
| 2038 | + | |
| 2039 | + def bejndxqqzf(self, wyhfvzxukh: int) -> bool: | |
| 2040 | + return self.fwckfzsyc == self.ldxlnycps[wyhfvzxukh] and self.hiaauhahz == self.yjdexjsoa[wyhfvzxukh] and (self.cklxociuu == self.ehwheiwsk[wyhfvzxukh]) | |
| 2041 | + | |
| 2042 | + def pbznecvnfr(self) -> bool: | |
| 2043 | + for i, spssohsnbq in enumerate(self.plrpelhym): | |
| 2044 | + if not self.lvrnuajbl[i] and self.gudziatsk.x == spssohsnbq.x and (self.gudziatsk.y == spssohsnbq.y) and self.bejndxqqzf(i): | |
| 2045 | + self.lvrnuajbl[i] = True | |
| 2046 | + self.byotxmvkt.append(self.plrpelhym[i]) | |
| 2047 | + self.alsxlhizr.append(self.srgbthxut[i]) | |
| 2048 | + self.current_level.remove_sprite(self.plrpelhym[i]) | |
| 2049 | + self.current_level.remove_sprite(self.srgbthxut[i]) | |
| 2050 | + opdsmckaqo = self.current_level.get_sprite_at(spssohsnbq.x - 1, spssohsnbq.y - 1, "vjotnebuqo") | |
| 2051 | + if opdsmckaqo and "vfkkzdgxzx" in opdsmckaqo.tags: | |
| 2052 | + opdsmckaqo.set_visible(False) | |
| 2053 | + pidqulszaw = self.current_level.get_sprite_at(spssohsnbq.x - 1, spssohsnbq.y - 1, "hoswmpiqkw") | |
| 2054 | + if pidqulszaw: | |
| 2055 | + pidqulszaw.set_visible(False) | |
| 2056 | + self.tsynhckng.set_visible(False) | |
| 2057 | + for i in range(len(self.lvrnuajbl)): | |
| 2058 | + if not self.lvrnuajbl[i]: | |
| 2059 | + return False | |
| 2060 | + return True | |
+18 −0 referee/environment_files/ls20/9607627b/metadata.json added View file
| @@ -0,0 +1,18 @@ | ||
| 1 | +{ | |
| 2 | + "game_id": "ls20-9607627b", | |
| 3 | + "title": "LS20", | |
| 4 | + "default_fps": 30, | |
| 5 | + "tags": [ | |
| 6 | + "keyboard" | |
| 7 | + ], | |
| 8 | + "baseline_actions": [ | |
| 9 | + 22, | |
| 10 | + 123, | |
| 11 | + 73, | |
| 12 | + 84, | |
| 13 | + 96, | |
| 14 | + 192, | |
| 15 | + 186 | |
| 16 | + ], | |
| 17 | + "date_downloaded": "2026-10-21T17:11:38.276032+00:00" | |
| 18 | +} | |
+17 −0 referee/environment_files/sp80/589a99af/metadata.json added View file
| @@ -0,0 +1,17 @@ | ||
| 1 | +{ | |
| 2 | + "game_id": "sp80-589a99af", | |
| 3 | + "title": "SP80", | |
| 4 | + "default_fps": 10, | |
| 5 | + "tags": [ | |
| 6 | + "keyboard_click" | |
| 7 | + ], | |
| 8 | + "baseline_actions": [ | |
| 9 | + 39, | |
| 10 | + 58, | |
| 11 | + 25, | |
| 12 | + 148, | |
| 13 | + 96, | |
| 14 | + 152 | |
| 15 | + ], | |
| 16 | + "date_downloaded": "2026-10-21T17:11:12.426613+00:00" | |
| 17 | +} | |
+868 −0 referee/environment_files/sp80/589a99af/sp80.py added View file
| @@ -0,0 +1,868 @@ | ||
| 1 | +# MIT License | |
| 2 | +# | |
| 3 | +# Copyright (c) 2026 ARC Prize Foundation | |
| 4 | +# | |
| 5 | +# Permission is hereby granted, free of charge, to any person obtaining a copy | |
| 6 | +# of this software and associated documentation files (the "Software"), to deal | |
| 7 | +# in the Software without restriction, including without limitation the rights | |
| 8 | +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| 9 | +# copies of the Software, and to permit persons to whom the Software is | |
| 10 | +# furnished to do so, subject to the following conditions: | |
| 11 | +# | |
| 12 | +# The above copyright notice and this permission notice shall be included in all | |
| 13 | +# copies or substantial portions of the Software. | |
| 14 | +# | |
| 15 | +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| 16 | +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| 17 | +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| 18 | +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| 19 | +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| 20 | +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| 21 | +# SOFTWARE. | |
| 22 | + | |
| 23 | +from typing import Any, Dict, List, Optional, Set, Tuple | |
| 24 | + | |
| 25 | +import numpy as np | |
| 26 | +from arcengine import ( | |
| 27 | + ActionInput, | |
| 28 | + ARCBaseGame, | |
| 29 | + Camera, | |
| 30 | + GameAction, | |
| 31 | + Level, | |
| 32 | + RenderableUserDisplay, | |
| 33 | + Sprite, | |
| 34 | +) | |
| 35 | + | |
| 36 | +sprites = { | |
| 37 | + "bodekplurlf16": Sprite( | |
| 38 | + pixels=[ | |
| 39 | + [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], | |
| 40 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 41 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 42 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 43 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 44 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 45 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 46 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 47 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 48 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 49 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 50 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 51 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 52 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 53 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 54 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 55 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 56 | + [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], | |
| 57 | + ], | |
| 58 | + name="bodekplurlf16", | |
| 59 | + visible=True, | |
| 60 | + collidable=True, | |
| 61 | + ), | |
| 62 | + "bodekplurlf20": Sprite( | |
| 63 | + pixels=[ | |
| 64 | + [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], | |
| 65 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 66 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 67 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 68 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 69 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 70 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 71 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 72 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 73 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 74 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 75 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 76 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 77 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 78 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 79 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 80 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 81 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 82 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 83 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 84 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 85 | + [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], | |
| 86 | + ], | |
| 87 | + name="bodekplurlf20", | |
| 88 | + visible=True, | |
| 89 | + collidable=True, | |
| 90 | + ), | |
| 91 | + "bodekplurlf32": Sprite( | |
| 92 | + pixels=[ | |
| 93 | + [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], | |
| 94 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 95 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 96 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 97 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 98 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 99 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 100 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 101 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 102 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 103 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 104 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 105 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 106 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 107 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 108 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 109 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 110 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 111 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 112 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 113 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 114 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 115 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 116 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 117 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 118 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 119 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 120 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 121 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 122 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 123 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 124 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 125 | + [1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1], | |
| 126 | + [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], | |
| 127 | + ], | |
| 128 | + name="bodekplurlf32", | |
| 129 | + visible=True, | |
| 130 | + collidable=True, | |
| 131 | + ), | |
| 132 | + "liolfvkveqg": Sprite( | |
| 133 | + pixels=[ | |
| 134 | + [6], | |
| 135 | + ], | |
| 136 | + name="liolfvkveqg", | |
| 137 | + visible=True, | |
| 138 | + collidable=True, | |
| 139 | + tags=["liolfvkveqg"], | |
| 140 | + ), | |
| 141 | + "plzwjbfyfli-3": Sprite( | |
| 142 | + pixels=[ | |
| 143 | + [8, 8, 8], | |
| 144 | + ], | |
| 145 | + name="plzwjbfyfli-3", | |
| 146 | + visible=True, | |
| 147 | + collidable=True, | |
| 148 | + tags=["plzwjbfyfli", "sys_click"], | |
| 149 | + ), | |
| 150 | + "plzwjbfyfli-4": Sprite( | |
| 151 | + pixels=[ | |
| 152 | + [8, 8, 8, 8], | |
| 153 | + ], | |
| 154 | + name="plzwjbfyfli-4", | |
| 155 | + visible=True, | |
| 156 | + collidable=True, | |
| 157 | + tags=["plzwjbfyfli", "sys_click"], | |
| 158 | + ), | |
| 159 | + "plzwjbfyfli-4h": Sprite( | |
| 160 | + pixels=[ | |
| 161 | + [8], | |
| 162 | + [8], | |
| 163 | + [8], | |
| 164 | + [8], | |
| 165 | + ], | |
| 166 | + name="plzwjbfyfli-4h", | |
| 167 | + visible=True, | |
| 168 | + collidable=True, | |
| 169 | + tags=["plzwjbfyfli", "sys_click"], | |
| 170 | + ), | |
| 171 | + "plzwjbfyfli-5": Sprite( | |
| 172 | + pixels=[ | |
| 173 | + [8, 8, 8, 8, 8], | |
| 174 | + ], | |
| 175 | + name="plzwjbfyfli-5", | |
| 176 | + visible=True, | |
| 177 | + collidable=True, | |
| 178 | + tags=["plzwjbfyfli", "sys_click"], | |
| 179 | + ), | |
| 180 | + "plzwjbfyfli-5-sowlljgtjvn": Sprite( | |
| 181 | + pixels=[ | |
| 182 | + [8, 8, 4, 8, 8], | |
| 183 | + ], | |
| 184 | + name="plzwjbfyfli-5-sowlljgtjvn", | |
| 185 | + visible=True, | |
| 186 | + collidable=True, | |
| 187 | + tags=["plzwjbfyfli", "sowlljgtjvn", "sys_click"], | |
| 188 | + ), | |
| 189 | + "plzwjbfyfli-6": Sprite( | |
| 190 | + pixels=[ | |
| 191 | + [8, 8, 8, 8, 8, 8], | |
| 192 | + ], | |
| 193 | + name="plzwjbfyfli-6", | |
| 194 | + visible=True, | |
| 195 | + collidable=True, | |
| 196 | + tags=["plzwjbfyfli", "sys_click"], | |
| 197 | + ), | |
| 198 | + "plzwjbfyfli-7": Sprite( | |
| 199 | + pixels=[ | |
| 200 | + [8, 8, 8, 8, 8, 8, 8], | |
| 201 | + ], | |
| 202 | + name="plzwjbfyfli-7", | |
| 203 | + visible=True, | |
| 204 | + collidable=True, | |
| 205 | + tags=["plzwjbfyfli"], | |
| 206 | + ), | |
| 207 | + "plzwjbfyfli-7-sowlljgtjvn": Sprite( | |
| 208 | + pixels=[ | |
| 209 | + [8, 8, 8, 4, 8, 8, 8], | |
| 210 | + ], | |
| 211 | + name="plzwjbfyfli-7-sowlljgtjvn", | |
| 212 | + visible=True, | |
| 213 | + collidable=True, | |
| 214 | + tags=["plzwjbfyfli", "sowlljgtjvn"], | |
| 215 | + ), | |
| 216 | + "plzwjbfyfli-8": Sprite( | |
| 217 | + pixels=[ | |
| 218 | + [8, 8, 8, 8, 8, 8, 8, 8], | |
| 219 | + ], | |
| 220 | + name="plzwjbfyfli-8", | |
| 221 | + visible=True, | |
| 222 | + collidable=True, | |
| 223 | + tags=["plzwjbfyfli", "sys_click"], | |
| 224 | + ), | |
| 225 | + "repwkzbkhxl": Sprite( | |
| 226 | + pixels=[ | |
| 227 | + [11, -1, 11], | |
| 228 | + [11, 11, 11], | |
| 229 | + ], | |
| 230 | + name="repwkzbkhxl", | |
| 231 | + visible=True, | |
| 232 | + collidable=True, | |
| 233 | + tags=["repwkzbkhxl"], | |
| 234 | + ), | |
| 235 | + "sowlljgtjvn": Sprite( | |
| 236 | + pixels=[ | |
| 237 | + [4], | |
| 238 | + ], | |
| 239 | + name="sowlljgtjvn", | |
| 240 | + visible=True, | |
| 241 | + collidable=True, | |
| 242 | + tags=["sowlljgtjvn"], | |
| 243 | + ), | |
| 244 | + "tuvkdkhdokr-lexuhyxqrsm": Sprite( | |
| 245 | + pixels=[ | |
| 246 | + [-1, 15], | |
| 247 | + [15, 15], | |
| 248 | + ], | |
| 249 | + name="tuvkdkhdokr-lexuhyxqrsm", | |
| 250 | + visible=True, | |
| 251 | + collidable=True, | |
| 252 | + tags=["tuvkdkhdokr", "sys_click"], | |
| 253 | + ), | |
| 254 | + "tuvkdkhdokr-riwynidseun": Sprite( | |
| 255 | + pixels=[ | |
| 256 | + [15, -1], | |
| 257 | + [15, 15], | |
| 258 | + ], | |
| 259 | + name="tuvkdkhdokr-riwynidseun", | |
| 260 | + visible=True, | |
| 261 | + collidable=True, | |
| 262 | + tags=["tuvkdkhdokr", "sys_click"], | |
| 263 | + ), | |
| 264 | + "waoewejnqzc": Sprite( | |
| 265 | + pixels=[ | |
| 266 | + [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], | |
| 267 | + ], | |
| 268 | + name="waoewejnqzc", | |
| 269 | + visible=True, | |
| 270 | + collidable=True, | |
| 271 | + tags=["waoewejnqzc"], | |
| 272 | + ), | |
| 273 | +} | |
| 274 | +levels = [ | |
| 275 | + # Level 1 | |
| 276 | + Level( | |
| 277 | + sprites=[ | |
| 278 | + sprites["bodekplurlf16"].clone().set_position(-1, -1), | |
| 279 | + sprites["liolfvkveqg"].clone().set_position(9, 1), | |
| 280 | + sprites["plzwjbfyfli-5"].clone().set_position(3, 4), | |
| 281 | + sprites["repwkzbkhxl"].clone().set_position(4, 13), | |
| 282 | + sprites["repwkzbkhxl"].clone().set_position(10, 13), | |
| 283 | + sprites["sowlljgtjvn"].clone().set_position(9, 0), | |
| 284 | + sprites["waoewejnqzc"].clone().set_position(0, 15), | |
| 285 | + ], | |
| 286 | + grid_size=(16, 16), | |
| 287 | + data={ | |
| 288 | + "steps": 30, | |
| 289 | + "dojfslwbg": 0, | |
| 290 | + }, | |
| 291 | + ), | |
| 292 | + # Level 2 | |
| 293 | + Level( | |
| 294 | + sprites=[ | |
| 295 | + sprites["bodekplurlf16"].clone().set_position(-1, -1), | |
| 296 | + sprites["liolfvkveqg"].clone().set_position(5, 1), | |
| 297 | + sprites["plzwjbfyfli-3"].clone().set_position(6, 9), | |
| 298 | + sprites["plzwjbfyfli-3"].clone().set_position(11, 11), | |
| 299 | + sprites["plzwjbfyfli-5"].clone().set_position(6, 6), | |
| 300 | + sprites["repwkzbkhxl"].clone().set_position(2, 13), | |
| 301 | + sprites["repwkzbkhxl"].clone().set_position(6, 13), | |
| 302 | + sprites["repwkzbkhxl"].clone().set_position(10, 13), | |
| 303 | + sprites["sowlljgtjvn"].clone().set_position(5, 0), | |
| 304 | + sprites["waoewejnqzc"].clone().set_position(0, 15), | |
| 305 | + ], | |
| 306 | + grid_size=(16, 16), | |
| 307 | + data={ | |
| 308 | + "steps": 45, | |
| 309 | + "dojfslwbg": 180, | |
| 310 | + }, | |
| 311 | + ), | |
| 312 | + # Level 3 | |
| 313 | + Level( | |
| 314 | + sprites=[ | |
| 315 | + sprites["bodekplurlf16"].clone().set_position(-1, -1), | |
| 316 | + sprites["liolfvkveqg"].clone().set_position(1, 1), | |
| 317 | + sprites["liolfvkveqg"].clone().set_position(14, 1), | |
| 318 | + sprites["liolfvkveqg"].clone().set_position(6, 1), | |
| 319 | + sprites["plzwjbfyfli-4"].clone().set_position(10, 10), | |
| 320 | + sprites["plzwjbfyfli-5"].clone().set_position(1, 8), | |
| 321 | + sprites["plzwjbfyfli-6"].clone().set_position(8, 7), | |
| 322 | + sprites["plzwjbfyfli-6"].clone().set_position(1, 5), | |
| 323 | + sprites["repwkzbkhxl"].clone().set_position(1, 13), | |
| 324 | + sprites["repwkzbkhxl"].clone().set_position(12, 13), | |
| 325 | + sprites["repwkzbkhxl"].clone().set_position(7, 13), | |
| 326 | + sprites["sowlljgtjvn"].clone().set_position(1, 0), | |
| 327 | + sprites["sowlljgtjvn"].clone().set_position(14, 0), | |
| 328 | + sprites["sowlljgtjvn"].clone().set_position(6, 0), | |
| 329 | + sprites["waoewejnqzc"].clone().set_position(0, 15), | |
| 330 | + ], | |
| 331 | + grid_size=(16, 16), | |
| 332 | + data={ | |
| 333 | + "steps": 100, | |
| 334 | + "dojfslwbg": 180, | |
| 335 | + }, | |
| 336 | + ), | |
| 337 | + # Level 4 | |
| 338 | + Level( | |
| 339 | + sprites=[ | |
| 340 | + sprites["bodekplurlf20"].clone().set_position(-1, -1), | |
| 341 | + sprites["liolfvkveqg"].clone().set_position(7, 1), | |
| 342 | + sprites["plzwjbfyfli-4"].clone().set_position(12, 13), | |
| 343 | + sprites["plzwjbfyfli-4"].clone().set_position(14, 10), | |
| 344 | + sprites["plzwjbfyfli-5"].clone().set_position(12, 5), | |
| 345 | + sprites["plzwjbfyfli-5"].clone().set_position(5, 5), | |
| 346 | + sprites["plzwjbfyfli-7-sowlljgtjvn"].clone().set_position(2, 9), | |
| 347 | + sprites["repwkzbkhxl"].clone().set_position(2, 17), | |
| 348 | + sprites["repwkzbkhxl"].clone().set_position(16, 17), | |
| 349 | + sprites["repwkzbkhxl"].clone().set_position(8, 17), | |
| 350 | + sprites["repwkzbkhxl"].clone().set_position(12, 17), | |
| 351 | + sprites["sowlljgtjvn"].clone().set_position(7, 0), | |
| 352 | + sprites["waoewejnqzc"].clone().set_position(0, 19), | |
| 353 | + ], | |
| 354 | + grid_size=(20, 20), | |
| 355 | + data={ | |
| 356 | + "steps": 120, | |
| 357 | + "dojfslwbg": 0, | |
| 358 | + }, | |
| 359 | + ), | |
| 360 | + # Level 5 | |
| 361 | + Level( | |
| 362 | + sprites=[ | |
| 363 | + sprites["bodekplurlf20"].clone().set_position(-1, -1), | |
| 364 | + sprites["liolfvkveqg"].clone().set_position(5, 1), | |
| 365 | + sprites["liolfvkveqg"].clone().set_position(13, 1), | |
| 366 | + sprites["plzwjbfyfli-3"].clone().set_position(11, 9), | |
| 367 | + sprites["plzwjbfyfli-4"].clone().set_position(7, 13), | |
| 368 | + sprites["plzwjbfyfli-5"].clone().set_position(2, 9), | |
| 369 | + sprites["repwkzbkhxl"].clone().set_position(17, 6).set_rotation(270), | |
| 370 | + sprites["repwkzbkhxl"].clone().set_position(2, 17), | |
| 371 | + sprites["repwkzbkhxl"].clone().set_position(6, 17), | |
| 372 | + sprites["repwkzbkhxl"].clone().set_position(12, 17), | |
| 373 | + sprites["sowlljgtjvn"].clone().set_position(5, 0), | |
| 374 | + sprites["sowlljgtjvn"].clone().set_position(13, 0), | |
| 375 | + sprites["tuvkdkhdokr-riwynidseun"].clone().set_position(8, 5), | |
| 376 | + sprites["waoewejnqzc"].clone().set_position(0, 19), | |
| 377 | + sprites["waoewejnqzc"].clone().set_position(19, 0).set_rotation(90), | |
| 378 | + sprites["waoewejnqzc"].clone().set_position(-1, 0).set_rotation(90), | |
| 379 | + ], | |
| 380 | + grid_size=(20, 20), | |
| 381 | + data={ | |
| 382 | + "steps": 100, | |
| 383 | + "dojfslwbg": 180, | |
| 384 | + }, | |
| 385 | + ), | |
| 386 | + # Level 6 | |
| 387 | + Level( | |
| 388 | + sprites=[ | |
| 389 | + sprites["bodekplurlf20"].clone().set_position(-1, -1), | |
| 390 | + sprites["liolfvkveqg"].clone().set_position(9, 1), | |
| 391 | + sprites["plzwjbfyfli-4h"].clone().set_position(14, 4), | |
| 392 | + sprites["plzwjbfyfli-5-sowlljgtjvn"].clone().set_position(7, 10), | |
| 393 | + sprites["repwkzbkhxl"].clone().set_position(17, 9).set_rotation(270), | |
| 394 | + sprites["repwkzbkhxl"].clone().set_position(8, 17), | |
| 395 | + sprites["repwkzbkhxl"].clone().set_position(1, 11).set_rotation(90), | |
| 396 | + sprites["repwkzbkhxl"].clone().set_position(1, 6).set_rotation(90), | |
| 397 | + sprites["sowlljgtjvn"].clone().set_position(9, 0), | |
| 398 | + sprites["tuvkdkhdokr-lexuhyxqrsm"].clone().set_position(9, 14), | |
| 399 | + sprites["tuvkdkhdokr-riwynidseun"].clone().set_position(9, 5), | |
| 400 | + sprites["waoewejnqzc"].clone().set_position(0, 19), | |
| 401 | + sprites["waoewejnqzc"].clone().set_position(19, 0).set_rotation(90), | |
| 402 | + sprites["waoewejnqzc"].clone().set_rotation(90), | |
| 403 | + ], | |
| 404 | + grid_size=(20, 20), | |
| 405 | + data={ | |
| 406 | + "steps": 120, | |
| 407 | + "dojfslwbg": 0, | |
| 408 | + }, | |
| 409 | + ), | |
| 410 | +] | |
| 411 | +BACKGROUND_COLOR = 12 | |
| 412 | +PADDING_COLOR = 1 | |
| 413 | + | |
| 414 | + | |
| 415 | +class sklgkadoxw(RenderableUserDisplay): | |
| 416 | + """.""" | |
| 417 | + | |
| 418 | + def __init__(self, vwbodnowge: int = 0): | |
| 419 | + self.vwbodnowge = vwbodnowge | |
| 420 | + self.current_steps = vwbodnowge | |
| 421 | + super().__init__() | |
| 422 | + | |
| 423 | + def fymfsbgqso(self, pfhpxrnpci: int) -> None: | |
| 424 | + self.current_steps = max(0, min(pfhpxrnpci, self.vwbodnowge)) | |
| 425 | + | |
| 426 | + def render_interface(self, frame: np.ndarray) -> np.ndarray: | |
| 427 | + if self.vwbodnowge == 0: | |
| 428 | + return frame | |
| 429 | + ouoessvdbk = self.current_steps / self.vwbodnowge | |
| 430 | + zzmgpljlhw = round(64 * ouoessvdbk) | |
| 431 | + for x in range(64): | |
| 432 | + if x < zzmgpljlhw: | |
| 433 | + frame[0, x] = 14 | |
| 434 | + else: | |
| 435 | + frame[0, x] = 0 | |
| 436 | + return frame | |
| 437 | + | |
| 438 | + | |
| 439 | +class ntashmkaxf(RenderableUserDisplay): | |
| 440 | + """.""" | |
| 441 | + | |
| 442 | + def __init__(self, dojfslwbg: int = 0): | |
| 443 | + self._k = dojfslwbg // 90 % 4 | |
| 444 | + | |
| 445 | + def set_rotation(self, dojfslwbg: int) -> None: | |
| 446 | + self._k = dojfslwbg // 90 % 4 | |
| 447 | + | |
| 448 | + def render_interface(self, frame: np.ndarray) -> np.ndarray: | |
| 449 | + if self._k == 0: | |
| 450 | + return frame | |
| 451 | + return np.rot90(frame, k=self._k).copy() | |
| 452 | + | |
| 453 | + | |
| 454 | +class Sp80(ARCBaseGame): | |
| 455 | + """.""" | |
| 456 | + | |
| 457 | + mfkgvxzkbj = { | |
| 458 | + 1: { | |
| 459 | + GameAction.ACTION1: GameAction.ACTION4, | |
| 460 | + GameAction.ACTION2: GameAction.ACTION3, | |
| 461 | + GameAction.ACTION3: GameAction.ACTION1, | |
| 462 | + GameAction.ACTION4: GameAction.ACTION2, | |
| 463 | + }, | |
| 464 | + 2: { | |
| 465 | + GameAction.ACTION1: GameAction.ACTION2, | |
| 466 | + GameAction.ACTION2: GameAction.ACTION1, | |
| 467 | + GameAction.ACTION3: GameAction.ACTION4, | |
| 468 | + GameAction.ACTION4: GameAction.ACTION3, | |
| 469 | + }, | |
| 470 | + 3: { | |
| 471 | + GameAction.ACTION1: GameAction.ACTION3, | |
| 472 | + GameAction.ACTION2: GameAction.ACTION4, | |
| 473 | + GameAction.ACTION3: GameAction.ACTION2, | |
| 474 | + GameAction.ACTION4: GameAction.ACTION1, | |
| 475 | + }, | |
| 476 | + } | |
| 477 | + othselxnik = { | |
| 478 | + 1: { | |
| 479 | + GameAction.ACTION1: GameAction.ACTION3, | |
| 480 | + GameAction.ACTION2: GameAction.ACTION4, | |
| 481 | + GameAction.ACTION3: GameAction.ACTION2, | |
| 482 | + GameAction.ACTION4: GameAction.ACTION1, | |
| 483 | + }, | |
| 484 | + 2: { | |
| 485 | + GameAction.ACTION1: GameAction.ACTION2, | |
| 486 | + GameAction.ACTION2: GameAction.ACTION1, | |
| 487 | + GameAction.ACTION3: GameAction.ACTION4, | |
| 488 | + GameAction.ACTION4: GameAction.ACTION3, | |
| 489 | + }, | |
| 490 | + 3: { | |
| 491 | + GameAction.ACTION1: GameAction.ACTION4, | |
| 492 | + GameAction.ACTION2: GameAction.ACTION3, | |
| 493 | + GameAction.ACTION3: GameAction.ACTION1, | |
| 494 | + GameAction.ACTION4: GameAction.ACTION2, | |
| 495 | + }, | |
| 496 | + } | |
| 497 | + dkvpswzsjg: str | |
| 498 | + vsoxmtrhqt: Optional[Sprite] | |
| 499 | + hmxltcipkc: List[Tuple[Sprite, int, int]] | |
| 500 | + xpcxocsmmq: List[Sprite] | |
| 501 | + kfdcqkodyy: bool | |
| 502 | + lybfalkrdl: bool | |
| 503 | + cevwbinfgl: Set[Sprite] | |
| 504 | + onoqwewztl: Set[Sprite] | |
| 505 | + trhynadhiz: int | |
| 506 | + lijmqzmgnw: sklgkadoxw | |
| 507 | + avangppqui: bool | |
| 508 | + | |
| 509 | + def __init__(self) -> None: | |
| 510 | + self.dkvpswzsjg = "change" | |
| 511 | + self.vsoxmtrhqt = None | |
| 512 | + self.hmxltcipkc = [] | |
| 513 | + self.xpcxocsmmq = [] | |
| 514 | + self.kfdcqkodyy = False | |
| 515 | + self.lybfalkrdl = False | |
| 516 | + self.cevwbinfgl = set() | |
| 517 | + self.onoqwewztl = set() | |
| 518 | + self.trhynadhiz = 0 | |
| 519 | + self.lijmqzmgnw = sklgkadoxw(vwbodnowge=0) | |
| 520 | + self.avangppqui = False | |
| 521 | + self.yqejjfwwh = False | |
| 522 | + self.zlhbnhpcq = 0 | |
| 523 | + self.lyremoheq = 0 | |
| 524 | + self.fahhoimkk = 0 | |
| 525 | + self.jinpztikz = ntashmkaxf(0) | |
| 526 | + zgzbkvrwm = Camera( | |
| 527 | + background=BACKGROUND_COLOR, | |
| 528 | + letter_box=PADDING_COLOR, | |
| 529 | + interfaces=[self.lijmqzmgnw, self.jinpztikz], | |
| 530 | + ) | |
| 531 | + super().__init__( | |
| 532 | + game_id="sp80", | |
| 533 | + levels=levels, | |
| 534 | + camera=zgzbkvrwm, | |
| 535 | + available_actions=[1, 2, 3, 4, 5, 6], | |
| 536 | + ) | |
| 537 | + | |
| 538 | + def on_set_level(self, level: Level) -> None: | |
| 539 | + self.dkvpswzsjg = "change" | |
| 540 | + self.vsoxmtrhqt = None | |
| 541 | + self.hmxltcipkc = [] | |
| 542 | + self.xpcxocsmmq = [] | |
| 543 | + self.kfdcqkodyy = False | |
| 544 | + self.lybfalkrdl = False | |
| 545 | + self.cevwbinfgl = set() | |
| 546 | + self.onoqwewztl = set() | |
| 547 | + self.avangppqui = False | |
| 548 | + self.yqejjfwwh = False | |
| 549 | + self.lyremoheq = 0 | |
| 550 | + for s in level.get_sprites_by_tag("plzwjbfyfli"): | |
| 551 | + s.pixels[(s.pixels >= 0) & (s.pixels != 4)] = 8 | |
| 552 | + for s in level.get_sprites(): | |
| 553 | + if s.name == "repwkzbkhxl": | |
| 554 | + s.pixels[s.pixels >= 0] = 11 | |
| 555 | + for s in level.get_sprites_by_tag("waoewejnqzc"): | |
| 556 | + s.pixels[s.pixels >= 0] = 1 | |
| 557 | + pfhpxrnpci = level.get_data("steps") or 50 | |
| 558 | + self.zlhbnhpcq = pfhpxrnpci | |
| 559 | + self.lijmqzmgnw.vwbodnowge = pfhpxrnpci | |
| 560 | + self.lijmqzmgnw.fymfsbgqso(pfhpxrnpci) | |
| 561 | + uhbgnthefe = self.gsvsxaspkc() | |
| 562 | + if uhbgnthefe: | |
| 563 | + self.mmzrajuxwp(uhbgnthefe) | |
| 564 | + dojfslwbg = level.get_data("dojfslwbg") or 0 | |
| 565 | + self.fahhoimkk = dojfslwbg // 90 % 4 | |
| 566 | + self.jinpztikz.set_rotation(dojfslwbg) | |
| 567 | + | |
| 568 | + def fbrwmvzsym(self) -> List[Sprite]: | |
| 569 | + return [s for s in self.current_level.get_sprites_by_tag("plzwjbfyfli")] + [s for s in self.current_level.get_sprites_by_tag("tuvkdkhdokr")] | |
| 570 | + | |
| 571 | + def qbsoyazkhk(self) -> List[Sprite]: | |
| 572 | + return [s for s in self.current_level.get_sprites_by_tag("liolfvkveqg")] | |
| 573 | + | |
| 574 | + def mxdlffpzkc(self) -> List[Sprite]: | |
| 575 | + return [s for s in self.current_level.get_sprites_by_tag("repwkzbkhxl")] | |
| 576 | + | |
| 577 | + def vgpoqzieha(self) -> List[Sprite]: | |
| 578 | + return [s for s in self.current_level.get_sprites_by_tag("waoewejnqzc")] | |
| 579 | + | |
| 580 | + def gsvsxaspkc(self) -> Optional[Sprite]: | |
| 581 | + bewcnjlccv = self.fbrwmvzsym() | |
| 582 | + if not bewcnjlccv: | |
| 583 | + return None | |
| 584 | + return min(bewcnjlccv, key=lambda vcnqlwquvy: vcnqlwquvy.x**2 + vcnqlwquvy.y**2) | |
| 585 | + | |
| 586 | + def husluhmboo(self, hualjkqrro: Sprite, x: int, y: int) -> bool: | |
| 587 | + """.""" | |
| 588 | + ozlpegmuiw = hualjkqrro.width | |
| 589 | + thjmlectxc = hualjkqrro.height | |
| 590 | + if y < 3: | |
| 591 | + return False | |
| 592 | + for ifavaamret in self.mxdlffpzkc(): | |
| 593 | + rx, ry = (ifavaamret.x, ifavaamret.y) | |
| 594 | + fykwwtgsjv = ifavaamret.width | |
| 595 | + zgqksrdiou = ifavaamret.height | |
| 596 | + if x < rx + fykwwtgsjv + 1 and x + ozlpegmuiw > rx - 1 and (y < ry + zgqksrdiou + 1) and (y + thjmlectxc > ry - 1): | |
| 597 | + return False | |
| 598 | + return True | |
| 599 | + | |
| 600 | + def oioatzlrlu(self, ukutpdlsfq: Sprite, tkwwsinjpi: Sprite) -> bool: | |
| 601 | + ax1, ay1, ax2, ay2 = ( | |
| 602 | + ukutpdlsfq.x, | |
| 603 | + ukutpdlsfq.y, | |
| 604 | + ukutpdlsfq.x + ukutpdlsfq.width, | |
| 605 | + ukutpdlsfq.y + ukutpdlsfq.height, | |
| 606 | + ) | |
| 607 | + bx1, by1, bx2, by2 = ( | |
| 608 | + tkwwsinjpi.x, | |
| 609 | + tkwwsinjpi.y, | |
| 610 | + tkwwsinjpi.x + tkwwsinjpi.width, | |
| 611 | + tkwwsinjpi.y + tkwwsinjpi.height, | |
| 612 | + ) | |
| 613 | + return ax1 < bx2 and ax2 > bx1 and (ay1 < by2) and (ay2 > by1) | |
| 614 | + | |
| 615 | + def mmzrajuxwp(self, hualjkqrro: Sprite) -> None: | |
| 616 | + if self.vsoxmtrhqt is not None: | |
| 617 | + self.ntuflwihof() | |
| 618 | + self.vsoxmtrhqt = hualjkqrro | |
| 619 | + if hualjkqrro is not None: | |
| 620 | + hualjkqrro.pixels[(hualjkqrro.pixels >= 0) & (hualjkqrro.pixels != 4)] = 9 | |
| 621 | + hualjkqrro.set_layer(1) | |
| 622 | + self.avangppqui = True | |
| 623 | + | |
| 624 | + def ntuflwihof(self) -> None: | |
| 625 | + if self.vsoxmtrhqt is not None: | |
| 626 | + nogozwphuv = 15 if "tuvkdkhdokr" in self.vsoxmtrhqt.tags else 8 | |
| 627 | + self.vsoxmtrhqt.pixels[(self.vsoxmtrhqt.pixels >= 0) & (self.vsoxmtrhqt.pixels != 4)] = nogozwphuv | |
| 628 | + self.vsoxmtrhqt.set_layer(0) | |
| 629 | + self.vsoxmtrhqt = None | |
| 630 | + | |
| 631 | + def vdwhttyyfq(self) -> None: | |
| 632 | + self.dkvpswzsjg = "spill" | |
| 633 | + self.ntuflwihof() | |
| 634 | + self.hmxltcipkc = [(lpaiwmascx, 0, 1) for lpaiwmascx in self.qbsoyazkhk()] | |
| 635 | + self.xpcxocsmmq = [] | |
| 636 | + self.kfdcqkodyy = False | |
| 637 | + self.lybfalkrdl = False | |
| 638 | + self.cevwbinfgl = set() | |
| 639 | + self.onoqwewztl = set() | |
| 640 | + for lwigswghhd in self.current_level.get_sprites_by_tag("sowlljgtjvn"): | |
| 641 | + px, py = (lwigswghhd.x, lwigswghhd.y) | |
| 642 | + cuftbajfn = lwigswghhd.pixels | |
| 643 | + for y in range(cuftbajfn.shape[0]): | |
| 644 | + for x in range(cuftbajfn.shape[1]): | |
| 645 | + if int(cuftbajfn[y, x]) == 4: | |
| 646 | + qxatjlxbsr, mdktzafzgr = (px + x, py + y) | |
| 647 | + lxmalbxucn = self.current_level.get_sprite_at(qxatjlxbsr, mdktzafzgr + 1) | |
| 648 | + ingqkycxdt = lxmalbxucn and "liolfvkveqg" in getattr(lxmalbxucn, "tags", []) | |
| 649 | + if not ingqkycxdt and self.current_level.get_sprite_at(qxatjlxbsr, mdktzafzgr + 1) is None: | |
| 650 | + yfwryonwmf = sprites["liolfvkveqg"].clone().set_position(qxatjlxbsr, mdktzafzgr + 1) | |
| 651 | + self.current_level.add_sprite(yfwryonwmf) | |
| 652 | + self.hmxltcipkc.append((yfwryonwmf, 0, 1)) | |
| 653 | + self.xpcxocsmmq.append(yfwryonwmf) | |
| 654 | + | |
| 655 | + def lpqbikobah(self) -> None: | |
| 656 | + for s in self.xpcxocsmmq: | |
| 657 | + self.current_level.remove_sprite(s) | |
| 658 | + self.xpcxocsmmq = [] | |
| 659 | + for s in self.mxdlffpzkc(): | |
| 660 | + s.pixels[s.pixels >= 0] = 11 | |
| 661 | + for s in self.vgpoqzieha(): | |
| 662 | + s.pixels[s.pixels >= 0] = 1 | |
| 663 | + self.cevwbinfgl = set() | |
| 664 | + self.onoqwewztl = set() | |
| 665 | + self.dkvpswzsjg = "change" | |
| 666 | + self.kfdcqkodyy = False | |
| 667 | + self.lybfalkrdl = False | |
| 668 | + self.hmxltcipkc = [] | |
| 669 | + self.lyremoheq += 1 | |
| 670 | + uhbgnthefe = self.gsvsxaspkc() | |
| 671 | + if uhbgnthefe: | |
| 672 | + self.mmzrajuxwp(uhbgnthefe) | |
| 673 | + | |
| 674 | + def step(self) -> None: | |
| 675 | + action_id, action_data = self.krehtwyvlu() | |
| 676 | + if self.dkvpswzsjg == "change": | |
| 677 | + if action_id != GameAction.RESET: | |
| 678 | + self.ytqycovhld(1) | |
| 679 | + if action_id == GameAction.ACTION6: | |
| 680 | + tkqedciqx = action_data.get("x", 0) | |
| 681 | + dqkivrvrc = action_data.get("y", 0) | |
| 682 | + zvlpmllzzi = self.camera.display_to_grid(tkqedciqx, dqkivrvrc) | |
| 683 | + if zvlpmllzzi: | |
| 684 | + qxatjlxbsr, mdktzafzgr = zvlpmllzzi | |
| 685 | + cbfkqeecgo: Optional[Sprite] = None | |
| 686 | + for vcnqlwquvy in self.fbrwmvzsym(): | |
| 687 | + if vcnqlwquvy.x <= qxatjlxbsr < vcnqlwquvy.x + vcnqlwquvy.width and vcnqlwquvy.y <= mdktzafzgr < vcnqlwquvy.y + vcnqlwquvy.height: | |
| 688 | + cbfkqeecgo = vcnqlwquvy | |
| 689 | + break | |
| 690 | + if cbfkqeecgo: | |
| 691 | + self.mmzrajuxwp(cbfkqeecgo) | |
| 692 | + self.yqejjfwwh = True | |
| 693 | + self.complete_action() | |
| 694 | + return | |
| 695 | + if self.vsoxmtrhqt is not None: | |
| 696 | + zmgbkzxvf, wcrkcuoyr = (0, 0) | |
| 697 | + if action_id == GameAction.ACTION1: | |
| 698 | + wcrkcuoyr = -1 | |
| 699 | + elif action_id == GameAction.ACTION2: | |
| 700 | + wcrkcuoyr = 1 | |
| 701 | + elif action_id == GameAction.ACTION3: | |
| 702 | + zmgbkzxvf = -1 | |
| 703 | + elif action_id == GameAction.ACTION4: | |
| 704 | + zmgbkzxvf = 1 | |
| 705 | + if zmgbkzxvf != 0 or wcrkcuoyr != 0: | |
| 706 | + ssgevmwqov = self.vsoxmtrhqt.x + zmgbkzxvf | |
| 707 | + jppwwnrrfn = self.vsoxmtrhqt.y + wcrkcuoyr | |
| 708 | + if self.husluhmboo(self.vsoxmtrhqt, ssgevmwqov, jppwwnrrfn): | |
| 709 | + collisions = self.try_move_sprite(self.vsoxmtrhqt, zmgbkzxvf, wcrkcuoyr) | |
| 710 | + if len(collisions) > 0 and all(["plzwjbfyfli" in c.tags or "tuvkdkhdokr" in c.tags for c in collisions]): | |
| 711 | + self.vsoxmtrhqt.move(zmgbkzxvf, wcrkcuoyr) | |
| 712 | + self.yqejjfwwh = False | |
| 713 | + self.complete_action() | |
| 714 | + self.avangppqui = False | |
| 715 | + return | |
| 716 | + if action_id == GameAction.ACTION5: | |
| 717 | + if self.lyremoheq >= 4: | |
| 718 | + self.lose() | |
| 719 | + self.complete_action() | |
| 720 | + return | |
| 721 | + self.vdwhttyyfq() | |
| 722 | + self.avangppqui = False | |
| 723 | + self.yqejjfwwh = False | |
| 724 | + return | |
| 725 | + self.complete_action() | |
| 726 | + return | |
| 727 | + elif self.dkvpswzsjg == "spill": | |
| 728 | + if self.lybfalkrdl: | |
| 729 | + nldokazwta = self.mxdlffpzkc() | |
| 730 | + zmkiirynyo = all((r in self.cevwbinfgl for r in nldokazwta)) | |
| 731 | + if self.kfdcqkodyy or not zmkiirynyo: | |
| 732 | + if self.trhynadhiz < 6: | |
| 733 | + for qyutcrxkne in self.onoqwewztl: | |
| 734 | + qyutcrxkne.pixels[qyutcrxkne.pixels >= 0] = 14 if self.trhynadhiz % 2 == 1 else 1 | |
| 735 | + if self.trhynadhiz < 5: | |
| 736 | + for ifavaamret in self.mxdlffpzkc(): | |
| 737 | + if ifavaamret not in self.cevwbinfgl: | |
| 738 | + ifavaamret.pixels[ifavaamret.pixels >= 0] = 0 if self.trhynadhiz % 2 == 0 else 11 | |
| 739 | + self.trhynadhiz += 1 | |
| 740 | + else: | |
| 741 | + self.lpqbikobah() | |
| 742 | + if self.zlhbnhpcq <= 0: | |
| 743 | + self.lose() | |
| 744 | + self.complete_action() | |
| 745 | + else: | |
| 746 | + self.complete_action() | |
| 747 | + self.next_level() | |
| 748 | + return | |
| 749 | + hhrqsxbmic: List[Tuple[Sprite, int, int]] = [] | |
| 750 | + for lpaiwmascx, zmgbkzxvf, wcrkcuoyr in self.hmxltcipkc: | |
| 751 | + tayzpnizn, lxrpmtrmq = (lpaiwmascx.x, lpaiwmascx.y) | |
| 752 | + obzjtntha, unvkukvdu = (-1, 1) if wcrkcuoyr != 0 else (0, 0) | |
| 753 | + vwwcczstp, kghcadhlp = (-1, 1) if wcrkcuoyr == 0 else (0, 0) | |
| 754 | + qkwtogjpyx = [(obzjtntha, vwwcczstp), (unvkukvdu, kghcadhlp)] | |
| 755 | + lxmalbxucn = self.current_level.get_sprite_at(tayzpnizn + zmgbkzxvf, lxrpmtrmq + wcrkcuoyr) | |
| 756 | + if lxmalbxucn is None: | |
| 757 | + yfwryonwmf = sprites["liolfvkveqg"].clone().set_position(tayzpnizn + zmgbkzxvf, lxrpmtrmq + wcrkcuoyr) | |
| 758 | + self.current_level.add_sprite(yfwryonwmf) | |
| 759 | + hhrqsxbmic.append((yfwryonwmf, zmgbkzxvf, wcrkcuoyr)) | |
| 760 | + self.xpcxocsmmq.append(yfwryonwmf) | |
| 761 | + continue | |
| 762 | + if "liolfvkveqg" in lxmalbxucn.tags: | |
| 763 | + hhrqsxbmic.append((lxmalbxucn, zmgbkzxvf, wcrkcuoyr)) | |
| 764 | + if "plzwjbfyfli" in lxmalbxucn.tags: | |
| 765 | + for oizjapxnvj, zrgzlvcvcr in qkwtogjpyx: | |
| 766 | + if self.current_level.get_sprite_at(tayzpnizn + oizjapxnvj, lxrpmtrmq + zrgzlvcvcr) is None: | |
| 767 | + yfwryonwmf = sprites["liolfvkveqg"].clone().set_position(tayzpnizn + oizjapxnvj, lxrpmtrmq + zrgzlvcvcr) | |
| 768 | + self.current_level.add_sprite(yfwryonwmf) | |
| 769 | + hhrqsxbmic.append((yfwryonwmf, zmgbkzxvf, wcrkcuoyr)) | |
| 770 | + self.xpcxocsmmq.append(yfwryonwmf) | |
| 771 | + continue | |
| 772 | + if "repwkzbkhxl" in lxmalbxucn.tags: | |
| 773 | + owyqnbmyij = self.current_level.get_sprite_at(tayzpnizn + obzjtntha, lxrpmtrmq + vwwcczstp) | |
| 774 | + faksfmaezd = self.current_level.get_sprite_at(tayzpnizn + unvkukvdu, lxrpmtrmq + kghcadhlp) | |
| 775 | + if owyqnbmyij is lxmalbxucn and faksfmaezd is lxmalbxucn: | |
| 776 | + lxmalbxucn.pixels[lxmalbxucn.pixels >= 0] = 13 | |
| 777 | + self.cevwbinfgl.add(lxmalbxucn) | |
| 778 | + continue | |
| 779 | + else: | |
| 780 | + for oizjapxnvj, zrgzlvcvcr in qkwtogjpyx: | |
| 781 | + if self.current_level.get_sprite_at(tayzpnizn + oizjapxnvj, lxrpmtrmq + zrgzlvcvcr) is None: | |
| 782 | + yfwryonwmf = sprites["liolfvkveqg"].clone().set_position(tayzpnizn + oizjapxnvj, lxrpmtrmq + zrgzlvcvcr) | |
| 783 | + self.current_level.add_sprite(yfwryonwmf) | |
| 784 | + hhrqsxbmic.append((yfwryonwmf, zmgbkzxvf, wcrkcuoyr)) | |
| 785 | + self.xpcxocsmmq.append(yfwryonwmf) | |
| 786 | + continue | |
| 787 | + if "tuvkdkhdokr" in lxmalbxucn.tags: | |
| 788 | + owyqnbmyij = self.current_level.get_sprite_at(tayzpnizn + obzjtntha, lxrpmtrmq + vwwcczstp) | |
| 789 | + faksfmaezd = self.current_level.get_sprite_at(tayzpnizn + unvkukvdu, lxrpmtrmq + kghcadhlp) | |
| 790 | + if owyqnbmyij is lxmalbxucn and faksfmaezd is None: | |
| 791 | + nizmgdznmn = wcrkcuoyr | |
| 792 | + yevagjsmfn = -zmgbkzxvf | |
| 793 | + yfwryonwmf = sprites["liolfvkveqg"].clone().set_position(tayzpnizn + nizmgdznmn, lxrpmtrmq + yevagjsmfn) | |
| 794 | + self.current_level.add_sprite(yfwryonwmf) | |
| 795 | + hhrqsxbmic.append((yfwryonwmf, nizmgdznmn, yevagjsmfn)) | |
| 796 | + self.xpcxocsmmq.append(yfwryonwmf) | |
| 797 | + if faksfmaezd is lxmalbxucn and owyqnbmyij is None: | |
| 798 | + nizmgdznmn = -wcrkcuoyr | |
| 799 | + yevagjsmfn = zmgbkzxvf | |
| 800 | + yfwryonwmf = sprites["liolfvkveqg"].clone().set_position(tayzpnizn + nizmgdznmn, lxrpmtrmq + yevagjsmfn) | |
| 801 | + self.current_level.add_sprite(yfwryonwmf) | |
| 802 | + hhrqsxbmic.append((yfwryonwmf, nizmgdznmn, yevagjsmfn)) | |
| 803 | + self.xpcxocsmmq.append(yfwryonwmf) | |
| 804 | + else: | |
| 805 | + for oizjapxnvj, zrgzlvcvcr in qkwtogjpyx: | |
| 806 | + if self.current_level.get_sprite_at(tayzpnizn + oizjapxnvj, lxrpmtrmq + zrgzlvcvcr) is None: | |
| 807 | + yfwryonwmf = sprites["liolfvkveqg"].clone().set_position(tayzpnizn + oizjapxnvj, lxrpmtrmq + zrgzlvcvcr) | |
| 808 | + self.current_level.add_sprite(yfwryonwmf) | |
| 809 | + hhrqsxbmic.append((yfwryonwmf, zmgbkzxvf, wcrkcuoyr)) | |
| 810 | + self.xpcxocsmmq.append(yfwryonwmf) | |
| 811 | + continue | |
| 812 | + if "waoewejnqzc" in lxmalbxucn.tags: | |
| 813 | + lxmalbxucn.pixels[lxmalbxucn.pixels >= 0] = 14 | |
| 814 | + self.onoqwewztl.add(lxmalbxucn) | |
| 815 | + self.kfdcqkodyy = True | |
| 816 | + continue | |
| 817 | + self.hmxltcipkc = hhrqsxbmic | |
| 818 | + if not self.hmxltcipkc: | |
| 819 | + self.lybfalkrdl = True | |
| 820 | + self.trhynadhiz = 0 | |
| 821 | + return | |
| 822 | + | |
| 823 | + def ojydygjkdb(self, hyutemwrji: int, shkslvxwqs: int) -> Tuple[int, int]: | |
| 824 | + """.""" | |
| 825 | + k = self.fahhoimkk | |
| 826 | + if k == 0: | |
| 827 | + return (hyutemwrji, shkslvxwqs) | |
| 828 | + if k == 1: | |
| 829 | + return (63 - shkslvxwqs, hyutemwrji) | |
| 830 | + if k == 2: | |
| 831 | + return (63 - hyutemwrji, 63 - shkslvxwqs) | |
| 832 | + return (shkslvxwqs, 63 - hyutemwrji) | |
| 833 | + | |
| 834 | + def rqlmciubuz(self, qxatjlxbsr: int, mdktzafzgr: int) -> Tuple[int, int]: | |
| 835 | + """.""" | |
| 836 | + k = self.fahhoimkk | |
| 837 | + if k == 0: | |
| 838 | + return (qxatjlxbsr, mdktzafzgr) | |
| 839 | + if k == 1: | |
| 840 | + return (mdktzafzgr, 63 - qxatjlxbsr) | |
| 841 | + if k == 2: | |
| 842 | + return (63 - qxatjlxbsr, 63 - mdktzafzgr) | |
| 843 | + return (63 - mdktzafzgr, qxatjlxbsr) | |
| 844 | + | |
| 845 | + def krehtwyvlu(self) -> Tuple[GameAction, Dict[str, Any]]: | |
| 846 | + """.""" | |
| 847 | + k = self.fahhoimkk | |
| 848 | + hwpdaniibf = self.action.id | |
| 849 | + data = self.action.data | |
| 850 | + if k == 0: | |
| 851 | + return (hwpdaniibf, data) | |
| 852 | + if hwpdaniibf in self.mfkgvxzkbj.get(k, {}): | |
| 853 | + return (self.mfkgvxzkbj[k][hwpdaniibf], data) | |
| 854 | + if hwpdaniibf == GameAction.ACTION6: | |
| 855 | + hyutemwrji = data.get("x", 0) | |
| 856 | + shkslvxwqs = data.get("y", 0) | |
| 857 | + qxatjlxbsr, mdktzafzgr = self.ojydygjkdb(hyutemwrji, shkslvxwqs) | |
| 858 | + return (hwpdaniibf, {"x": qxatjlxbsr, "y": mdktzafzgr}) | |
| 859 | + return (hwpdaniibf, data) | |
| 860 | + | |
| 861 | + def ytqycovhld(self, uarpgqegqg: int) -> None: | |
| 862 | + """.""" | |
| 863 | + self.zlhbnhpcq = max(0, self.zlhbnhpcq - uarpgqegqg) | |
| 864 | + self.lijmqzmgnw.fymfsbgqso(self.zlhbnhpcq) | |
| 865 | + if self.zlhbnhpcq <= 0: | |
| 866 | + self.lose() | |
| 867 | + self.complete_action() | |
| 868 | + return | |
+18 −0 referee/environment_files/vc33/5430563c/metadata.json added View file
| @@ -0,0 +1,18 @@ | ||
| 1 | +{ | |
| 2 | + "game_id": "vc33-5430563c", | |
| 3 | + "title": "VC33", | |
| 4 | + "default_fps": 20, | |
| 5 | + "tags": [ | |
| 6 | + "click" | |
| 7 | + ], | |
| 8 | + "baseline_actions": [ | |
| 9 | + 7, | |
| 10 | + 18, | |
| 11 | + 44, | |
| 12 | + 61, | |
| 13 | + 131, | |
| 14 | + 34, | |
| 15 | + 152 | |
| 16 | + ], | |
| 17 | + "date_downloaded": "2026-10-21T17:11:59.072364+00:00" | |
| 18 | +} | |
+2124 −0 referee/environment_files/vc33/5430563c/vc33.py added View file
| @@ -0,0 +1,2124 @@ | ||
| 1 | +# MIT License | |
| 2 | +# | |
| 3 | +# Copyright (c) 2026 ARC Prize Foundation | |
| 4 | +# | |
| 5 | +# Permission is hereby granted, free of charge, to any person obtaining a copy | |
| 6 | +# of this software and associated documentation files (the "Software"), to deal | |
| 7 | +# in the Software without restriction, including without limitation the rights | |
| 8 | +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| 9 | +# copies of the Software, and to permit persons to whom the Software is | |
| 10 | +# furnished to do so, subject to the following conditions: | |
| 11 | +# | |
| 12 | +# The above copyright notice and this permission notice shall be included in all | |
| 13 | +# copies or substantial portions of the Software. | |
| 14 | +# | |
| 15 | +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| 16 | +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| 17 | +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| 18 | +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| 19 | +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| 20 | +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| 21 | +# SOFTWARE. | |
| 22 | + | |
| 23 | +import numpy as np | |
| 24 | +from arcengine import ( | |
| 25 | + ARCBaseGame, | |
| 26 | + Camera, | |
| 27 | + GameAction, | |
| 28 | + Level, | |
| 29 | + RenderableUserDisplay, | |
| 30 | + Sprite, | |
| 31 | +) | |
| 32 | + | |
| 33 | +sprites = { | |
| 34 | + "0000ufilpvvllo": Sprite( | |
| 35 | + pixels=[ | |
| 36 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 37 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 38 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 39 | + ], | |
| 40 | + name="0000ufilpvvllo", | |
| 41 | + visible=True, | |
| 42 | + collidable=True, | |
| 43 | + tags=["0001symqacyexa"], | |
| 44 | + ), | |
| 45 | + "0002eemauzpzws": Sprite( | |
| 46 | + pixels=[ | |
| 47 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 48 | + [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], | |
| 49 | + ], | |
| 50 | + name="0002eemauzpzws", | |
| 51 | + visible=True, | |
| 52 | + collidable=True, | |
| 53 | + tags=["0001symqacyexa"], | |
| 54 | + ), | |
| 55 | + "0003qvhiakludh": Sprite( | |
| 56 | + pixels=[ | |
| 57 | + [1, 1, 1], | |
| 58 | + [1, 1, 1], | |
| 59 | + [1, 1, 1], | |
| 60 | + [1, 1, 1], | |
| 61 | + [1, 1, 1], | |
| 62 | + [1, 1, 1], | |
| 63 | + [1, 1, 1], | |
| 64 | + [1, 1, 1], | |
| 65 | + [1, 1, 1], | |
| 66 | + [1, 1, 1], | |
| 67 | + [1, 1, 1], | |
| 68 | + [1, 1, 1], | |
| 69 | + ], | |
| 70 | + name="0003qvhiakludh", | |
| 71 | + visible=True, | |
| 72 | + collidable=True, | |
| 73 | + tags=["0004sttgkofqwb", "sys_click"], | |
| 74 | + layer=3, | |
| 75 | + ), | |
| 76 | + "0005nxriaixjyr": Sprite( | |
| 77 | + pixels=[ | |
| 78 | + [1, 1], | |
| 79 | + [1, 1], | |
| 80 | + [1, 1], | |
| 81 | + [1, 1], | |
| 82 | + [1, 1], | |
| 83 | + [1, 1], | |
| 84 | + [1, 1], | |
| 85 | + [1, 1], | |
| 86 | + ], | |
| 87 | + name="0005nxriaixjyr", | |
| 88 | + visible=True, | |
| 89 | + collidable=True, | |
| 90 | + tags=["0004sttgkofqwb", "sys_click"], | |
| 91 | + layer=3, | |
| 92 | + ), | |
| 93 | + "0006mfbmvylbss": Sprite( | |
| 94 | + pixels=[ | |
| 95 | + [-2, -1, -1, -1, -1, -1, -2], | |
| 96 | + [-2, -1, -1, -1, -1, -1, -2], | |
| 97 | + [0, -1, -1, -1, -1, -1, 0], | |
| 98 | + [0, -1, -1, -1, -1, -1, 0], | |
| 99 | + [0, -1, -1, -1, -1, -1, 0], | |
| 100 | + [0, -1, -1, -1, -1, -1, 0], | |
| 101 | + [0, -1, -1, -1, -1, -1, 0], | |
| 102 | + [0, -1, -1, -1, -1, -1, 0], | |
| 103 | + [0, -1, -1, -1, -1, -1, 0], | |
| 104 | + [0, -1, -1, -1, -1, -1, 0], | |
| 105 | + [-2, -1, -1, -1, -1, -1, -2], | |
| 106 | + [-2, -1, -1, -1, -1, -1, -2], | |
| 107 | + ], | |
| 108 | + name="0006mfbmvylbss", | |
| 109 | + visible=True, | |
| 110 | + collidable=True, | |
| 111 | + tags=["0007gyluczquhi"], | |
| 112 | + ), | |
| 113 | + "0008rybtprnbie": Sprite( | |
| 114 | + pixels=[ | |
| 115 | + [-2, -1, -1, -1, -1, -2], | |
| 116 | + [0, -1, -1, -1, -1, 0], | |
| 117 | + [0, -1, -1, -1, -1, 0], | |
| 118 | + [0, -1, -1, -1, -1, 0], | |
| 119 | + [0, -1, -1, -1, -1, 0], | |
| 120 | + [0, -1, -1, -1, -1, 0], | |
| 121 | + [0, -1, -1, -1, -1, 0], | |
| 122 | + [-2, -1, -1, -1, -1, -2], | |
| 123 | + ], | |
| 124 | + name="0008rybtprnbie", | |
| 125 | + visible=True, | |
| 126 | + collidable=True, | |
| 127 | + tags=["0007gyluczquhi"], | |
| 128 | + ), | |
| 129 | + "0009vwghyhtilb": Sprite( | |
| 130 | + pixels=[ | |
| 131 | + [-2, -2], | |
| 132 | + [-2, -2], | |
| 133 | + [11, 11], | |
| 134 | + ], | |
| 135 | + name="0009vwghyhtilb", | |
| 136 | + visible=True, | |
| 137 | + collidable=True, | |
| 138 | + tags=["0010gnulkywfpz"], | |
| 139 | + layer=2, | |
| 140 | + ), | |
| 141 | + "0011egrqhpaniv": Sprite( | |
| 142 | + pixels=[ | |
| 143 | + [-2, -2], | |
| 144 | + [-2, -2], | |
| 145 | + [14, 14], | |
| 146 | + ], | |
| 147 | + name="0011egrqhpaniv", | |
| 148 | + visible=True, | |
| 149 | + collidable=True, | |
| 150 | + tags=["0010gnulkywfpz"], | |
| 151 | + layer=1, | |
| 152 | + ), | |
| 153 | + "0012efovcqtrsv": Sprite( | |
| 154 | + pixels=[ | |
| 155 | + [-2, -2], | |
| 156 | + [-2, -2], | |
| 157 | + [15, 15], | |
| 158 | + ], | |
| 159 | + name="0012efovcqtrsv", | |
| 160 | + visible=True, | |
| 161 | + collidable=True, | |
| 162 | + tags=["0010gnulkywfpz"], | |
| 163 | + layer=1, | |
| 164 | + ), | |
| 165 | + "0013nlpqaanefy": Sprite( | |
| 166 | + pixels=[ | |
| 167 | + [-2, -2, -2], | |
| 168 | + [-2, -2, -2], | |
| 169 | + [-2, -2, -2], | |
| 170 | + [-2, -2, -2], | |
| 171 | + [11, 11, 11], | |
| 172 | + [11, 11, 11], | |
| 173 | + ], | |
| 174 | + name="0013nlpqaanefy", | |
| 175 | + visible=True, | |
| 176 | + collidable=True, | |
| 177 | + tags=["0010gnulkywfpz"], | |
| 178 | + layer=1, | |
| 179 | + ), | |
| 180 | + "0014fnratutanf": Sprite( | |
| 181 | + pixels=[ | |
| 182 | + [-2, -2, -2], | |
| 183 | + [-2, -2, -2], | |
| 184 | + [-2, -2, -2], | |
| 185 | + [-2, -2, -2], | |
| 186 | + [14, 14, 14], | |
| 187 | + [14, 14, 14], | |
| 188 | + ], | |
| 189 | + name="0014fnratutanf", | |
| 190 | + visible=True, | |
| 191 | + collidable=True, | |
| 192 | + tags=["0010gnulkywfpz"], | |
| 193 | + layer=1, | |
| 194 | + ), | |
| 195 | + "0015cltmlkogkc": Sprite( | |
| 196 | + pixels=[ | |
| 197 | + [-1, 4, -1], | |
| 198 | + [4, 4, 4], | |
| 199 | + [11, 11, 11], | |
| 200 | + ], | |
| 201 | + name="0015cltmlkogkc", | |
| 202 | + visible=True, | |
| 203 | + collidable=True, | |
| 204 | + tags=["0016uciqlhjlom"], | |
| 205 | + layer=1, | |
| 206 | + ), | |
| 207 | + "0017pmjcrnwxxj": Sprite( | |
| 208 | + pixels=[ | |
| 209 | + [-1, 4, -1], | |
| 210 | + [4, 4, 4], | |
| 211 | + [14, 14, 14], | |
| 212 | + ], | |
| 213 | + name="0017pmjcrnwxxj", | |
| 214 | + visible=True, | |
| 215 | + collidable=True, | |
| 216 | + tags=["0016uciqlhjlom"], | |
| 217 | + ), | |
| 218 | + "0018rxmsqpnhhx": Sprite( | |
| 219 | + pixels=[ | |
| 220 | + [-1, 4, -1], | |
| 221 | + [4, 4, 4], | |
| 222 | + [15, 15, 15], | |
| 223 | + ], | |
| 224 | + name="0018rxmsqpnhhx", | |
| 225 | + visible=True, | |
| 226 | + collidable=True, | |
| 227 | + tags=["0016uciqlhjlom"], | |
| 228 | + ), | |
| 229 | + "0019yzthbwsumy": Sprite( | |
| 230 | + pixels=[ | |
| 231 | + [-1, -1, 4, 4, -1, -1], | |
| 232 | + [-1, -1, 4, 4, -1, -1], | |
| 233 | + [4, 4, 4, 4, 4, 4], | |
| 234 | + [4, 4, 4, 4, 4, 4], | |
| 235 | + [11, 11, 11, 11, 11, 11], | |
| 236 | + [11, 11, 11, 11, 11, 11], | |
| 237 | + ], | |
| 238 | + name="0019yzthbwsumy", | |
| 239 | + visible=True, | |
| 240 | + collidable=True, | |
| 241 | + tags=["0016uciqlhjlom"], | |
| 242 | + layer=1, | |
| 243 | + ), | |
| 244 | + "0020supxvsgicv": Sprite( | |
| 245 | + pixels=[ | |
| 246 | + [-1, -1, 4, 4, -1, -1], | |
| 247 | + [-1, -1, 4, 4, -1, -1], | |
| 248 | + [4, 4, 4, 4, 4, 4], | |
| 249 | + [4, 4, 4, 4, 4, 4], | |
| 250 | + [14, 14, 14, 14, 14, 14], | |
| 251 | + [14, 14, 14, 14, 14, 14], | |
| 252 | + ], | |
| 253 | + name="0020supxvsgicv", | |
| 254 | + visible=True, | |
| 255 | + collidable=True, | |
| 256 | + tags=["0016uciqlhjlom"], | |
| 257 | + layer=1, | |
| 258 | + ), | |
| 259 | + "0021ayhektiwsl": Sprite( | |
| 260 | + pixels=[ | |
| 261 | + [9, 9], | |
| 262 | + [9, 9], | |
| 263 | + ], | |
| 264 | + name="0021ayhektiwsl", | |
| 265 | + visible=True, | |
| 266 | + collidable=True, | |
| 267 | + tags=["0022jvmlspyigc", "sys_click"], | |
| 268 | + layer=1, | |
| 269 | + ), | |
| 270 | + "0023zpxhabfwya": Sprite( | |
| 271 | + pixels=[ | |
| 272 | + [9, 9, 9], | |
| 273 | + [9, 9, 9], | |
| 274 | + [9, 9, 9], | |
| 275 | + ], | |
| 276 | + name="0023zpxhabfwya", | |
| 277 | + visible=True, | |
| 278 | + collidable=True, | |
| 279 | + tags=["0022jvmlspyigc", "sys_click"], | |
| 280 | + layer=1, | |
| 281 | + ), | |
| 282 | + "0024oklzljpbjf": Sprite( | |
| 283 | + pixels=[ | |
| 284 | + [5, 5], | |
| 285 | + [5, 5], | |
| 286 | + [5, 5], | |
| 287 | + [5, 5], | |
| 288 | + [5, 5], | |
| 289 | + [5, 5], | |
| 290 | + [5, 5], | |
| 291 | + [5, 5], | |
| 292 | + [5, 5], | |
| 293 | + [5, 5], | |
| 294 | + [5, 5], | |
| 295 | + [5, 5], | |
| 296 | + [5, 5], | |
| 297 | + [5, 5], | |
| 298 | + [5, 5], | |
| 299 | + [5, 5], | |
| 300 | + [5, 5], | |
| 301 | + [5, 5], | |
| 302 | + [5, 5], | |
| 303 | + [5, 5], | |
| 304 | + [5, 5], | |
| 305 | + [5, 5], | |
| 306 | + ], | |
| 307 | + name="0024oklzljpbjf", | |
| 308 | + visible=True, | |
| 309 | + collidable=True, | |
| 310 | + tags=["0025yfyiswdvoh"], | |
| 311 | + layer=1, | |
| 312 | + ), | |
| 313 | + "0026mrilttcabm": Sprite( | |
| 314 | + pixels=[ | |
| 315 | + [5, 5], | |
| 316 | + [5, 5], | |
| 317 | + [5, 5], | |
| 318 | + [5, 5], | |
| 319 | + [5, 5], | |
| 320 | + [5, 5], | |
| 321 | + [5, 5], | |
| 322 | + [5, 5], | |
| 323 | + [5, 5], | |
| 324 | + [5, 5], | |
| 325 | + [5, 5], | |
| 326 | + [5, 5], | |
| 327 | + [5, 5], | |
| 328 | + [5, 5], | |
| 329 | + [5, 5], | |
| 330 | + [5, 5], | |
| 331 | + [5, 5], | |
| 332 | + [5, 5], | |
| 333 | + [5, 5], | |
| 334 | + [5, 5], | |
| 335 | + [5, 5], | |
| 336 | + [5, 5], | |
| 337 | + [5, 5], | |
| 338 | + [5, 5], | |
| 339 | + [5, 5], | |
| 340 | + [5, 5], | |
| 341 | + [5, 5], | |
| 342 | + [5, 5], | |
| 343 | + ], | |
| 344 | + name="0026mrilttcabm", | |
| 345 | + visible=True, | |
| 346 | + collidable=True, | |
| 347 | + tags=["0025yfyiswdvoh"], | |
| 348 | + ), | |
| 349 | + "0027sdwqirupzd": Sprite( | |
| 350 | + pixels=[ | |
| 351 | + [5, 5], | |
| 352 | + [5, 5], | |
| 353 | + [5, 5], | |
| 354 | + [5, 5], | |
| 355 | + [5, 5], | |
| 356 | + [5, 5], | |
| 357 | + [5, 5], | |
| 358 | + [5, 5], | |
| 359 | + [5, 5], | |
| 360 | + [5, 5], | |
| 361 | + [5, 5], | |
| 362 | + [5, 5], | |
| 363 | + [5, 5], | |
| 364 | + [5, 5], | |
| 365 | + [5, 5], | |
| 366 | + [5, 5], | |
| 367 | + [5, 5], | |
| 368 | + [5, 5], | |
| 369 | + [5, 5], | |
| 370 | + [5, 5], | |
| 371 | + [5, 5], | |
| 372 | + [5, 5], | |
| 373 | + ], | |
| 374 | + name="0027sdwqirupzd", | |
| 375 | + visible=True, | |
| 376 | + collidable=True, | |
| 377 | + tags=["0025yfyiswdvoh"], | |
| 378 | + ), | |
| 379 | + "0028yrxfnwssrz": Sprite( | |
| 380 | + pixels=[ | |
| 381 | + [5, 5], | |
| 382 | + [5, 5], | |
| 383 | + [5, 5], | |
| 384 | + [5, 5], | |
| 385 | + [5, 5], | |
| 386 | + [5, 5], | |
| 387 | + ], | |
| 388 | + name="0028yrxfnwssrz", | |
| 389 | + visible=True, | |
| 390 | + collidable=True, | |
| 391 | + tags=["0025yfyiswdvoh"], | |
| 392 | + ), | |
| 393 | + "0029hisqstrfef": Sprite( | |
| 394 | + pixels=[ | |
| 395 | + [5, 5], | |
| 396 | + [5, 5], | |
| 397 | + [5, 5], | |
| 398 | + [5, 5], | |
| 399 | + [5, 5], | |
| 400 | + [5, 5], | |
| 401 | + [5, 5], | |
| 402 | + [5, 5], | |
| 403 | + [5, 5], | |
| 404 | + [5, 5], | |
| 405 | + [5, 5], | |
| 406 | + [5, 5], | |
| 407 | + [5, 5], | |
| 408 | + [5, 5], | |
| 409 | + [5, 5], | |
| 410 | + [5, 5], | |
| 411 | + [5, 5], | |
| 412 | + [5, 5], | |
| 413 | + [5, 5], | |
| 414 | + [5, 5], | |
| 415 | + [5, 5], | |
| 416 | + [5, 5], | |
| 417 | + [5, 5], | |
| 418 | + [5, 5], | |
| 419 | + [5, 5], | |
| 420 | + [5, 5], | |
| 421 | + [5, 5], | |
| 422 | + [5, 5], | |
| 423 | + ], | |
| 424 | + name="0029hisqstrfef", | |
| 425 | + visible=True, | |
| 426 | + collidable=True, | |
| 427 | + tags=["0025yfyiswdvoh"], | |
| 428 | + ), | |
| 429 | + "0030tpzxnyfdvh": Sprite( | |
| 430 | + pixels=[ | |
| 431 | + [5, 5, 5], | |
| 432 | + [5, 5, 5], | |
| 433 | + [5, 5, 5], | |
| 434 | + [5, 5, 5], | |
| 435 | + [5, 5, 5], | |
| 436 | + [5, 5, 5], | |
| 437 | + [5, 5, 5], | |
| 438 | + [5, 5, 5], | |
| 439 | + [5, 5, 5], | |
| 440 | + [5, 5, 5], | |
| 441 | + [5, 5, 5], | |
| 442 | + [5, 5, 5], | |
| 443 | + [-1, -1, -1], | |
| 444 | + [-1, -1, -1], | |
| 445 | + [-1, -1, -1], | |
| 446 | + [-1, -1, -1], | |
| 447 | + [-1, -1, -1], | |
| 448 | + [-1, -1, -1], | |
| 449 | + [-1, -1, -1], | |
| 450 | + [-1, -1, -1], | |
| 451 | + [-1, -1, -1], | |
| 452 | + [-1, -1, -1], | |
| 453 | + [-1, -1, -1], | |
| 454 | + [-1, -1, -1], | |
| 455 | + [5, 5, 5], | |
| 456 | + [5, 5, 5], | |
| 457 | + [5, 5, 5], | |
| 458 | + [5, 5, 5], | |
| 459 | + [5, 5, 5], | |
| 460 | + [5, 5, 5], | |
| 461 | + [5, 5, 5], | |
| 462 | + [5, 5, 5], | |
| 463 | + [5, 5, 5], | |
| 464 | + ], | |
| 465 | + name="0030tpzxnyfdvh", | |
| 466 | + visible=True, | |
| 467 | + collidable=True, | |
| 468 | + tags=["0025yfyiswdvoh"], | |
| 469 | + ), | |
| 470 | + "0031pjczzavayi": Sprite( | |
| 471 | + pixels=[ | |
| 472 | + [5, 5, 5], | |
| 473 | + [5, 5, 5], | |
| 474 | + [5, 5, 5], | |
| 475 | + [5, 5, 5], | |
| 476 | + [5, 5, 5], | |
| 477 | + [5, 5, 5], | |
| 478 | + [5, 5, 5], | |
| 479 | + [5, 5, 5], | |
| 480 | + [5, 5, 5], | |
| 481 | + [5, 5, 5], | |
| 482 | + [5, 5, 5], | |
| 483 | + [5, 5, 5], | |
| 484 | + [-1, -1, -1], | |
| 485 | + [-1, -1, -1], | |
| 486 | + [-1, -1, -1], | |
| 487 | + [-1, -1, -1], | |
| 488 | + [-1, -1, -1], | |
| 489 | + [-1, -1, -1], | |
| 490 | + [-1, -1, -1], | |
| 491 | + [-1, -1, -1], | |
| 492 | + [-1, -1, -1], | |
| 493 | + [-1, -1, -1], | |
| 494 | + [-1, -1, -1], | |
| 495 | + [-1, -1, -1], | |
| 496 | + [5, 5, 5], | |
| 497 | + [5, 5, 5], | |
| 498 | + [5, 5, 5], | |
| 499 | + [5, 5, 5], | |
| 500 | + [5, 5, 5], | |
| 501 | + [5, 5, 5], | |
| 502 | + [5, 5, 5], | |
| 503 | + [5, 5, 5], | |
| 504 | + [5, 5, 5], | |
| 505 | + [5, 5, 5], | |
| 506 | + [5, 5, 5], | |
| 507 | + [5, 5, 5], | |
| 508 | + [5, 5, 5], | |
| 509 | + [5, 5, 5], | |
| 510 | + [5, 5, 5], | |
| 511 | + [5, 5, 5], | |
| 512 | + [5, 5, 5], | |
| 513 | + [5, 5, 5], | |
| 514 | + ], | |
| 515 | + name="0031pjczzavayi", | |
| 516 | + visible=True, | |
| 517 | + collidable=True, | |
| 518 | + tags=["0025yfyiswdvoh"], | |
| 519 | + ), | |
| 520 | + "0032xvysrppdmd": Sprite( | |
| 521 | + pixels=[ | |
| 522 | + [5, 5, 5], | |
| 523 | + [5, 5, 5], | |
| 524 | + [5, 5, 5], | |
| 525 | + [5, 5, 5], | |
| 526 | + [5, 5, 5], | |
| 527 | + [5, 5, 5], | |
| 528 | + [5, 5, 5], | |
| 529 | + [5, 5, 5], | |
| 530 | + [5, 5, 5], | |
| 531 | + [5, 5, 5], | |
| 532 | + [5, 5, 5], | |
| 533 | + [5, 5, 5], | |
| 534 | + [5, 5, 5], | |
| 535 | + [5, 5, 5], | |
| 536 | + [5, 5, 5], | |
| 537 | + [-1, -1, -1], | |
| 538 | + [-1, -1, -1], | |
| 539 | + [-1, -1, -1], | |
| 540 | + [-1, -1, -1], | |
| 541 | + [-1, -1, -1], | |
| 542 | + [-1, -1, -1], | |
| 543 | + [-1, -1, -1], | |
| 544 | + [-1, -1, -1], | |
| 545 | + [-1, -1, -1], | |
| 546 | + [-1, -1, -1], | |
| 547 | + [-1, -1, -1], | |
| 548 | + [-1, -1, -1], | |
| 549 | + [5, 5, 5], | |
| 550 | + [5, 5, 5], | |
| 551 | + [5, 5, 5], | |
| 552 | + [5, 5, 5], | |
| 553 | + [5, 5, 5], | |
| 554 | + [5, 5, 5], | |
| 555 | + [5, 5, 5], | |
| 556 | + [5, 5, 5], | |
| 557 | + [5, 5, 5], | |
| 558 | + [5, 5, 5], | |
| 559 | + [5, 5, 5], | |
| 560 | + [5, 5, 5], | |
| 561 | + [5, 5, 5], | |
| 562 | + [5, 5, 5], | |
| 563 | + [5, 5, 5], | |
| 564 | + [5, 5, 5], | |
| 565 | + [5, 5, 5], | |
| 566 | + [5, 5, 5], | |
| 567 | + [5, 5, 5], | |
| 568 | + [5, 5, 5], | |
| 569 | + [5, 5, 5], | |
| 570 | + [5, 5, 5], | |
| 571 | + [5, 5, 5], | |
| 572 | + [5, 5, 5], | |
| 573 | + [5, 5, 5], | |
| 574 | + [5, 5, 5], | |
| 575 | + [5, 5, 5], | |
| 576 | + ], | |
| 577 | + name="0032xvysrppdmd", | |
| 578 | + visible=True, | |
| 579 | + collidable=True, | |
| 580 | + tags=["0025yfyiswdvoh"], | |
| 581 | + ), | |
| 582 | + "0033jkunkpsthb": Sprite( | |
| 583 | + pixels=[ | |
| 584 | + [5, 5, 5], | |
| 585 | + [5, 5, 5], | |
| 586 | + [5, 5, 5], | |
| 587 | + [5, 5, 5], | |
| 588 | + [5, 5, 5], | |
| 589 | + [5, 5, 5], | |
| 590 | + [5, 5, 5], | |
| 591 | + [5, 5, 5], | |
| 592 | + [5, 5, 5], | |
| 593 | + [5, 5, 5], | |
| 594 | + [5, 5, 5], | |
| 595 | + [5, 5, 5], | |
| 596 | + [5, 5, 5], | |
| 597 | + [5, 5, 5], | |
| 598 | + [5, 5, 5], | |
| 599 | + [-1, -1, -1], | |
| 600 | + [-1, -1, -1], | |
| 601 | + [-1, -1, -1], | |
| 602 | + [-1, -1, -1], | |
| 603 | + [-1, -1, -1], | |
| 604 | + [-1, -1, -1], | |
| 605 | + [-1, -1, -1], | |
| 606 | + [-1, -1, -1], | |
| 607 | + [-1, -1, -1], | |
| 608 | + [-1, -1, -1], | |
| 609 | + [-1, -1, -1], | |
| 610 | + [-1, -1, -1], | |
| 611 | + [5, 5, 5], | |
| 612 | + [5, 5, 5], | |
| 613 | + [5, 5, 5], | |
| 614 | + [5, 5, 5], | |
| 615 | + [5, 5, 5], | |
| 616 | + [5, 5, 5], | |
| 617 | + [5, 5, 5], | |
| 618 | + [5, 5, 5], | |
| 619 | + [5, 5, 5], | |
| 620 | + [5, 5, 5], | |
| 621 | + [5, 5, 5], | |
| 622 | + [5, 5, 5], | |
| 623 | + ], | |
| 624 | + name="0033jkunkpsthb", | |
| 625 | + visible=True, | |
| 626 | + collidable=True, | |
| 627 | + tags=["0025yfyiswdvoh"], | |
| 628 | + ), | |
| 629 | + "0034gljhkoittz": Sprite( | |
| 630 | + pixels=[ | |
| 631 | + [5, 5, 5], | |
| 632 | + [5, 5, 5], | |
| 633 | + [5, 5, 5], | |
| 634 | + [5, 5, 5], | |
| 635 | + [5, 5, 5], | |
| 636 | + [5, 5, 5], | |
| 637 | + [5, 5, 5], | |
| 638 | + [5, 5, 5], | |
| 639 | + [5, 5, 5], | |
| 640 | + [5, 5, 5], | |
| 641 | + [5, 5, 5], | |
| 642 | + [5, 5, 5], | |
| 643 | + [-1, -1, -1], | |
| 644 | + [-1, -1, -1], | |
| 645 | + [-1, -1, -1], | |
| 646 | + [-1, -1, -1], | |
| 647 | + [-1, -1, -1], | |
| 648 | + [-1, -1, -1], | |
| 649 | + [-1, -1, -1], | |
| 650 | + [-1, -1, -1], | |
| 651 | + [-1, -1, -1], | |
| 652 | + [-1, -1, -1], | |
| 653 | + [-1, -1, -1], | |
| 654 | + [-1, -1, -1], | |
| 655 | + [5, 5, 5], | |
| 656 | + [5, 5, 5], | |
| 657 | + [5, 5, 5], | |
| 658 | + [5, 5, 5], | |
| 659 | + [5, 5, 5], | |
| 660 | + [5, 5, 5], | |
| 661 | + [5, 5, 5], | |
| 662 | + [5, 5, 5], | |
| 663 | + [5, 5, 5], | |
| 664 | + [5, 5, 5], | |
| 665 | + [5, 5, 5], | |
| 666 | + [5, 5, 5], | |
| 667 | + [5, 5, 5], | |
| 668 | + [5, 5, 5], | |
| 669 | + [5, 5, 5], | |
| 670 | + [5, 5, 5], | |
| 671 | + [5, 5, 5], | |
| 672 | + [5, 5, 5], | |
| 673 | + [5, 5, 5], | |
| 674 | + [5, 5, 5], | |
| 675 | + [5, 5, 5], | |
| 676 | + [5, 5, 5], | |
| 677 | + [5, 5, 5], | |
| 678 | + [5, 5, 5], | |
| 679 | + ], | |
| 680 | + name="0034gljhkoittz", | |
| 681 | + visible=True, | |
| 682 | + collidable=True, | |
| 683 | + tags=["0025yfyiswdvoh"], | |
| 684 | + ), | |
| 685 | + "0035mojyqpmkca": Sprite( | |
| 686 | + pixels=[ | |
| 687 | + [5, 5, 5], | |
| 688 | + [5, 5, 5], | |
| 689 | + [5, 5, 5], | |
| 690 | + [5, 5, 5], | |
| 691 | + [5, 5, 5], | |
| 692 | + [5, 5, 5], | |
| 693 | + [5, 5, 5], | |
| 694 | + [5, 5, 5], | |
| 695 | + [5, 5, 5], | |
| 696 | + [5, 5, 5], | |
| 697 | + [5, 5, 5], | |
| 698 | + [5, 5, 5], | |
| 699 | + [-1, -1, -1], | |
| 700 | + [-1, -1, -1], | |
| 701 | + [-1, -1, -1], | |
| 702 | + [-1, -1, -1], | |
| 703 | + [-1, -1, -1], | |
| 704 | + [-1, -1, -1], | |
| 705 | + [-1, -1, -1], | |
| 706 | + [-1, -1, -1], | |
| 707 | + [-1, -1, -1], | |
| 708 | + [-1, -1, -1], | |
| 709 | + [-1, -1, -1], | |
| 710 | + [-1, -1, -1], | |
| 711 | + [5, 5, 5], | |
| 712 | + [5, 5, 5], | |
| 713 | + [5, 5, 5], | |
| 714 | + [5, 5, 5], | |
| 715 | + [5, 5, 5], | |
| 716 | + [5, 5, 5], | |
| 717 | + [5, 5, 5], | |
| 718 | + [5, 5, 5], | |
| 719 | + [5, 5, 5], | |
| 720 | + [5, 5, 5], | |
| 721 | + [5, 5, 5], | |
| 722 | + [5, 5, 5], | |
| 723 | + [-1, -1, -1], | |
| 724 | + [-1, -1, -1], | |
| 725 | + [-1, -1, -1], | |
| 726 | + [-1, -1, -1], | |
| 727 | + [-1, -1, -1], | |
| 728 | + [-1, -1, -1], | |
| 729 | + [-1, -1, -1], | |
| 730 | + [-1, -1, -1], | |
| 731 | + [-1, -1, -1], | |
| 732 | + [-1, -1, -1], | |
| 733 | + [-1, -1, -1], | |
| 734 | + [-1, -1, -1], | |
| 735 | + [5, 5, 5], | |
| 736 | + [5, 5, 5], | |
| 737 | + [5, 5, 5], | |
| 738 | + [5, 5, 5], | |
| 739 | + [5, 5, 5], | |
| 740 | + [5, 5, 5], | |
| 741 | + ], | |
| 742 | + name="0035mojyqpmkca", | |
| 743 | + visible=True, | |
| 744 | + collidable=True, | |
| 745 | + tags=["0025yfyiswdvoh"], | |
| 746 | + ), | |
| 747 | + "0036rjrqlosxim": Sprite( | |
| 748 | + pixels=[ | |
| 749 | + [5, 5], | |
| 750 | + [5, 5], | |
| 751 | + [5, 5], | |
| 752 | + [5, 5], | |
| 753 | + [5, 5], | |
| 754 | + [5, 5], | |
| 755 | + [5, 5], | |
| 756 | + [5, 5], | |
| 757 | + [5, 5], | |
| 758 | + [5, 5], | |
| 759 | + [-1, -1], | |
| 760 | + [-1, -1], | |
| 761 | + [-1, -1], | |
| 762 | + [-1, -1], | |
| 763 | + [-1, -1], | |
| 764 | + [-1, -1], | |
| 765 | + [-1, -1], | |
| 766 | + [-1, -1], | |
| 767 | + [5, 5], | |
| 768 | + [5, 5], | |
| 769 | + [5, 5], | |
| 770 | + [5, 5], | |
| 771 | + [5, 5], | |
| 772 | + [5, 5], | |
| 773 | + [5, 5], | |
| 774 | + [5, 5], | |
| 775 | + [5, 5], | |
| 776 | + [5, 5], | |
| 777 | + [5, 5], | |
| 778 | + [5, 5], | |
| 779 | + [5, 5], | |
| 780 | + [5, 5], | |
| 781 | + [5, 5], | |
| 782 | + [5, 5], | |
| 783 | + [5, 5], | |
| 784 | + [5, 5], | |
| 785 | + [5, 5], | |
| 786 | + [5, 5], | |
| 787 | + [5, 5], | |
| 788 | + [5, 5], | |
| 789 | + [5, 5], | |
| 790 | + [5, 5], | |
| 791 | + [5, 5], | |
| 792 | + [5, 5], | |
| 793 | + [5, 5], | |
| 794 | + [5, 5], | |
| 795 | + [5, 5], | |
| 796 | + [5, 5], | |
| 797 | + ], | |
| 798 | + name="0036rjrqlosxim", | |
| 799 | + visible=True, | |
| 800 | + collidable=True, | |
| 801 | + tags=["0025yfyiswdvoh"], | |
| 802 | + ), | |
| 803 | + "0037zhvthfywaf": Sprite( | |
| 804 | + pixels=[ | |
| 805 | + [5, 5], | |
| 806 | + [5, 5], | |
| 807 | + [5, 5], | |
| 808 | + [5, 5], | |
| 809 | + [5, 5], | |
| 810 | + [5, 5], | |
| 811 | + [5, 5], | |
| 812 | + [5, 5], | |
| 813 | + [5, 5], | |
| 814 | + [5, 5], | |
| 815 | + [5, 5], | |
| 816 | + [5, 5], | |
| 817 | + [5, 5], | |
| 818 | + [5, 5], | |
| 819 | + [5, 5], | |
| 820 | + [5, 5], | |
| 821 | + [5, 5], | |
| 822 | + [5, 5], | |
| 823 | + [5, 5], | |
| 824 | + [5, 5], | |
| 825 | + [5, 5], | |
| 826 | + [5, 5], | |
| 827 | + ], | |
| 828 | + name="0037zhvthfywaf", | |
| 829 | + visible=True, | |
| 830 | + collidable=True, | |
| 831 | + tags=["0025yfyiswdvoh"], | |
| 832 | + ), | |
| 833 | + "0038kxomlaqnmm": Sprite( | |
| 834 | + pixels=[ | |
| 835 | + [5, 5], | |
| 836 | + [5, 5], | |
| 837 | + [5, 5], | |
| 838 | + [5, 5], | |
| 839 | + [5, 5], | |
| 840 | + [5, 5], | |
| 841 | + [5, 5], | |
| 842 | + [5, 5], | |
| 843 | + [5, 5], | |
| 844 | + [5, 5], | |
| 845 | + [5, 5], | |
| 846 | + [5, 5], | |
| 847 | + [5, 5], | |
| 848 | + [5, 5], | |
| 849 | + [5, 5], | |
| 850 | + [5, 5], | |
| 851 | + [5, 5], | |
| 852 | + [5, 5], | |
| 853 | + [5, 5], | |
| 854 | + [5, 5], | |
| 855 | + ], | |
| 856 | + name="0038kxomlaqnmm", | |
| 857 | + visible=True, | |
| 858 | + collidable=True, | |
| 859 | + tags=["0025yfyiswdvoh"], | |
| 860 | + ), | |
| 861 | + "0039vrggqczkeg": Sprite( | |
| 862 | + pixels=[ | |
| 863 | + [5, 5, 5], | |
| 864 | + [5, 5, 5], | |
| 865 | + [5, 5, 5], | |
| 866 | + [5, 5, 5], | |
| 867 | + [5, 5, 5], | |
| 868 | + [5, 5, 5], | |
| 869 | + [5, 5, 5], | |
| 870 | + [5, 5, 5], | |
| 871 | + [5, 5, 5], | |
| 872 | + [5, 5, 5], | |
| 873 | + [5, 5, 5], | |
| 874 | + [5, 5, 5], | |
| 875 | + [5, 5, 5], | |
| 876 | + [5, 5, 5], | |
| 877 | + [5, 5, 5], | |
| 878 | + [5, 5, 5], | |
| 879 | + [5, 5, 5], | |
| 880 | + [5, 5, 5], | |
| 881 | + [5, 5, 5], | |
| 882 | + [5, 5, 5], | |
| 883 | + [5, 5, 5], | |
| 884 | + [5, 5, 5], | |
| 885 | + [5, 5, 5], | |
| 886 | + [5, 5, 5], | |
| 887 | + [5, 5, 5], | |
| 888 | + [5, 5, 5], | |
| 889 | + [5, 5, 5], | |
| 890 | + [5, 5, 5], | |
| 891 | + [5, 5, 5], | |
| 892 | + [5, 5, 5], | |
| 893 | + [5, 5, 5], | |
| 894 | + [5, 5, 5], | |
| 895 | + [5, 5, 5], | |
| 896 | + [5, 5, 5], | |
| 897 | + [5, 5, 5], | |
| 898 | + [5, 5, 5], | |
| 899 | + [5, 5, 5], | |
| 900 | + [5, 5, 5], | |
| 901 | + [5, 5, 5], | |
| 902 | + ], | |
| 903 | + name="0039vrggqczkeg", | |
| 904 | + visible=True, | |
| 905 | + collidable=True, | |
| 906 | + tags=["0025yfyiswdvoh"], | |
| 907 | + ), | |
| 908 | + "0040sfsyhdwzpa": Sprite( | |
| 909 | + pixels=[ | |
| 910 | + [5, 5], | |
| 911 | + [5, 5], | |
| 912 | + [5, 5], | |
| 913 | + [5, 5], | |
| 914 | + [5, 5], | |
| 915 | + [5, 5], | |
| 916 | + [5, 5], | |
| 917 | + [5, 5], | |
| 918 | + [5, 5], | |
| 919 | + [5, 5], | |
| 920 | + [-1, -1], | |
| 921 | + [-1, -1], | |
| 922 | + [-1, -1], | |
| 923 | + [-1, -1], | |
| 924 | + [-1, -1], | |
| 925 | + [-1, -1], | |
| 926 | + [-1, -1], | |
| 927 | + [-1, -1], | |
| 928 | + [5, 5], | |
| 929 | + [5, 5], | |
| 930 | + [5, 5], | |
| 931 | + [5, 5], | |
| 932 | + [5, 5], | |
| 933 | + [5, 5], | |
| 934 | + [5, 5], | |
| 935 | + [5, 5], | |
| 936 | + [5, 5], | |
| 937 | + [5, 5], | |
| 938 | + [5, 5], | |
| 939 | + [5, 5], | |
| 940 | + [5, 5], | |
| 941 | + [5, 5], | |
| 942 | + [-1, -1], | |
| 943 | + [-1, -1], | |
| 944 | + [-1, -1], | |
| 945 | + [-1, -1], | |
| 946 | + [-1, -1], | |
| 947 | + [-1, -1], | |
| 948 | + [-1, -1], | |
| 949 | + [-1, -1], | |
| 950 | + [5, 5], | |
| 951 | + [5, 5], | |
| 952 | + [5, 5], | |
| 953 | + [5, 5], | |
| 954 | + [5, 5], | |
| 955 | + [5, 5], | |
| 956 | + [5, 5], | |
| 957 | + [5, 5], | |
| 958 | + ], | |
| 959 | + name="0040sfsyhdwzpa", | |
| 960 | + visible=True, | |
| 961 | + collidable=True, | |
| 962 | + tags=["0025yfyiswdvoh"], | |
| 963 | + ), | |
| 964 | + "0041wufoxqricu": Sprite( | |
| 965 | + pixels=[ | |
| 966 | + [5, 5, 5], | |
| 967 | + [5, 5, 5], | |
| 968 | + [5, 5, 5], | |
| 969 | + [5, 5, 5], | |
| 970 | + [5, 5, 5], | |
| 971 | + [5, 5, 5], | |
| 972 | + [5, 5, 5], | |
| 973 | + [5, 5, 5], | |
| 974 | + [5, 5, 5], | |
| 975 | + [5, 5, 5], | |
| 976 | + [5, 5, 5], | |
| 977 | + [5, 5, 5], | |
| 978 | + [5, 5, 5], | |
| 979 | + [5, 5, 5], | |
| 980 | + [5, 5, 5], | |
| 981 | + [5, 5, 5], | |
| 982 | + [5, 5, 5], | |
| 983 | + [5, 5, 5], | |
| 984 | + [5, 5, 5], | |
| 985 | + [5, 5, 5], | |
| 986 | + [5, 5, 5], | |
| 987 | + [5, 5, 5], | |
| 988 | + [5, 5, 5], | |
| 989 | + [5, 5, 5], | |
| 990 | + [5, 5, 5], | |
| 991 | + [5, 5, 5], | |
| 992 | + [5, 5, 5], | |
| 993 | + [5, 5, 5], | |
| 994 | + [5, 5, 5], | |
| 995 | + [5, 5, 5], | |
| 996 | + ], | |
| 997 | + name="0041wufoxqricu", | |
| 998 | + visible=True, | |
| 999 | + collidable=True, | |
| 1000 | + tags=["0025yfyiswdvoh"], | |
| 1001 | + ), | |
| 1002 | + "0042ueboolxadn": Sprite( | |
| 1003 | + pixels=[ | |
| 1004 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1005 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1006 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1007 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1008 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1009 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1010 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1011 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1012 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1013 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1014 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1015 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1016 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1017 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1018 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1019 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1020 | + ], | |
| 1021 | + name="0042ueboolxadn", | |
| 1022 | + visible=True, | |
| 1023 | + collidable=True, | |
| 1024 | + tags=["0043nzrtobajqi"], | |
| 1025 | + ), | |
| 1026 | + "0044auurrayaab": Sprite( | |
| 1027 | + pixels=[ | |
| 1028 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1029 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1030 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1031 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1032 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1033 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1034 | + ], | |
| 1035 | + name="0044auurrayaab", | |
| 1036 | + visible=True, | |
| 1037 | + collidable=True, | |
| 1038 | + tags=["0043nzrtobajqi"], | |
| 1039 | + ), | |
| 1040 | + "0045wzhlvcxnxi": Sprite( | |
| 1041 | + pixels=[ | |
| 1042 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1043 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1044 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1045 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1046 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1047 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1048 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1049 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1050 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1051 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1052 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1053 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1054 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1055 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1056 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1057 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1058 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1059 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1060 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1061 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1062 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1063 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1064 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1065 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1066 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1067 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1068 | + ], | |
| 1069 | + name="0045wzhlvcxnxi", | |
| 1070 | + visible=True, | |
| 1071 | + collidable=True, | |
| 1072 | + tags=["0043nzrtobajqi"], | |
| 1073 | + ), | |
| 1074 | + "0046qitpxixzbw": Sprite( | |
| 1075 | + pixels=[ | |
| 1076 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1077 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1078 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1079 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1080 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1081 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1082 | + ], | |
| 1083 | + name="0046qitpxixzbw", | |
| 1084 | + visible=True, | |
| 1085 | + collidable=True, | |
| 1086 | + tags=["0043nzrtobajqi"], | |
| 1087 | + ), | |
| 1088 | + "0047nozrwoeeue": Sprite( | |
| 1089 | + pixels=[ | |
| 1090 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1091 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1092 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1093 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1094 | + ], | |
| 1095 | + name="0047nozrwoeeue", | |
| 1096 | + visible=True, | |
| 1097 | + collidable=True, | |
| 1098 | + tags=["0043nzrtobajqi"], | |
| 1099 | + ), | |
| 1100 | + "0048uprazwxldi": Sprite( | |
| 1101 | + pixels=[ | |
| 1102 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1103 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1104 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1105 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1106 | + ], | |
| 1107 | + name="0048uprazwxldi", | |
| 1108 | + visible=True, | |
| 1109 | + collidable=True, | |
| 1110 | + tags=["0043nzrtobajqi"], | |
| 1111 | + ), | |
| 1112 | + "0049gizsqrldri": Sprite( | |
| 1113 | + pixels=[ | |
| 1114 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1115 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1116 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1117 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1118 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1119 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1120 | + ], | |
| 1121 | + name="0049gizsqrldri", | |
| 1122 | + visible=True, | |
| 1123 | + collidable=True, | |
| 1124 | + tags=["0043nzrtobajqi"], | |
| 1125 | + ), | |
| 1126 | + "0050xlivmfsgrg": Sprite( | |
| 1127 | + pixels=[ | |
| 1128 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1129 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1130 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1131 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1132 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1133 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1134 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1135 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1136 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1137 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1138 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1139 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1140 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1141 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1142 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1143 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1144 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1145 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1146 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1147 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1148 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1149 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1150 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1151 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1152 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1153 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1154 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1155 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1156 | + ], | |
| 1157 | + name="0050xlivmfsgrg", | |
| 1158 | + visible=True, | |
| 1159 | + collidable=True, | |
| 1160 | + tags=["0043nzrtobajqi"], | |
| 1161 | + ), | |
| 1162 | + "0051cbovinmogo": Sprite( | |
| 1163 | + pixels=[ | |
| 1164 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1165 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1166 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1167 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1168 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1169 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1170 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1171 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1172 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1173 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1174 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1175 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1176 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1177 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1178 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1179 | + ], | |
| 1180 | + name="0051cbovinmogo", | |
| 1181 | + visible=True, | |
| 1182 | + collidable=True, | |
| 1183 | + tags=["0043nzrtobajqi"], | |
| 1184 | + ), | |
| 1185 | + "0052jlqpbhssxz": Sprite( | |
| 1186 | + pixels=[ | |
| 1187 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1188 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1189 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1190 | + ], | |
| 1191 | + name="0052jlqpbhssxz", | |
| 1192 | + visible=True, | |
| 1193 | + collidable=True, | |
| 1194 | + tags=["0043nzrtobajqi"], | |
| 1195 | + ), | |
| 1196 | + "0053hvedzitgvm": Sprite( | |
| 1197 | + pixels=[ | |
| 1198 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1199 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1200 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1201 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1202 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1203 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1204 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1205 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1206 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1207 | + ], | |
| 1208 | + name="0053hvedzitgvm", | |
| 1209 | + visible=True, | |
| 1210 | + collidable=True, | |
| 1211 | + tags=["0043nzrtobajqi"], | |
| 1212 | + ), | |
| 1213 | + "0054vgoahtzchm": Sprite( | |
| 1214 | + pixels=[ | |
| 1215 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1216 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1217 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1218 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1219 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1220 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1221 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1222 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1223 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1224 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1225 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1226 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1227 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1228 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1229 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1230 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1231 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1232 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1233 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1234 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1235 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1236 | + ], | |
| 1237 | + name="0054vgoahtzchm", | |
| 1238 | + visible=True, | |
| 1239 | + collidable=True, | |
| 1240 | + tags=["0043nzrtobajqi"], | |
| 1241 | + ), | |
| 1242 | + "0055zkynfqcbvf": Sprite( | |
| 1243 | + pixels=[ | |
| 1244 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1245 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1246 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1247 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1248 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1249 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1250 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1251 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1252 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1253 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1254 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1255 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1256 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1257 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1258 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1259 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1260 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1261 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1262 | + ], | |
| 1263 | + name="0055zkynfqcbvf", | |
| 1264 | + visible=True, | |
| 1265 | + collidable=True, | |
| 1266 | + tags=["0043nzrtobajqi"], | |
| 1267 | + ), | |
| 1268 | + "0056gvcomjuyya": Sprite( | |
| 1269 | + pixels=[ | |
| 1270 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1271 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1272 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1273 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1274 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1275 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1276 | + ], | |
| 1277 | + name="0056gvcomjuyya", | |
| 1278 | + visible=True, | |
| 1279 | + collidable=True, | |
| 1280 | + tags=["0043nzrtobajqi"], | |
| 1281 | + ), | |
| 1282 | + "0057jqxvzzgzuz": Sprite( | |
| 1283 | + pixels=[ | |
| 1284 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1285 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1286 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1287 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1288 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1289 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1290 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1291 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1292 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1293 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1294 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1295 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1296 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1297 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1298 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1299 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1300 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1301 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1302 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1303 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1304 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1305 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1306 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1307 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1308 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1309 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1310 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1311 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1312 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1313 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1314 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1315 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1316 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1317 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1318 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1319 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1320 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1321 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1322 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1323 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1324 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1325 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1326 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1327 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1328 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1329 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1330 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1331 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1332 | + ], | |
| 1333 | + name="0057jqxvzzgzuz", | |
| 1334 | + visible=True, | |
| 1335 | + collidable=True, | |
| 1336 | + tags=["0043nzrtobajqi"], | |
| 1337 | + ), | |
| 1338 | + "0058isdkrjwbjw": Sprite( | |
| 1339 | + pixels=[ | |
| 1340 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1341 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1342 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1343 | + ], | |
| 1344 | + name="0058isdkrjwbjw", | |
| 1345 | + visible=True, | |
| 1346 | + collidable=True, | |
| 1347 | + tags=["0043nzrtobajqi"], | |
| 1348 | + ), | |
| 1349 | + "0059nzfxpksuts": Sprite( | |
| 1350 | + pixels=[ | |
| 1351 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1352 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1353 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1354 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1355 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1356 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1357 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1358 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1359 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1360 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1361 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1362 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1363 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1364 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1365 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1366 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1367 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1368 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1369 | + ], | |
| 1370 | + name="0059nzfxpksuts", | |
| 1371 | + visible=True, | |
| 1372 | + collidable=True, | |
| 1373 | + tags=["0043nzrtobajqi"], | |
| 1374 | + ), | |
| 1375 | + "0060vzyhngpdxk": Sprite( | |
| 1376 | + pixels=[ | |
| 1377 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1378 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1379 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1380 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1381 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1382 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1383 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1384 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1385 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1386 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1387 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1388 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1389 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1390 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1391 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1392 | + ], | |
| 1393 | + name="0060vzyhngpdxk", | |
| 1394 | + visible=True, | |
| 1395 | + collidable=True, | |
| 1396 | + tags=["0043nzrtobajqi"], | |
| 1397 | + ), | |
| 1398 | + "0061hvrsaskhtv": Sprite( | |
| 1399 | + pixels=[ | |
| 1400 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1401 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1402 | + ], | |
| 1403 | + name="0061hvrsaskhtv", | |
| 1404 | + visible=True, | |
| 1405 | + collidable=True, | |
| 1406 | + tags=["0043nzrtobajqi"], | |
| 1407 | + ), | |
| 1408 | + "0062jjoqcrrlqt": Sprite( | |
| 1409 | + pixels=[ | |
| 1410 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1411 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1412 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1413 | + [0, 0, 0, 0, 0, 0, 0, 0], | |
| 1414 | + ], | |
| 1415 | + name="0062jjoqcrrlqt", | |
| 1416 | + visible=True, | |
| 1417 | + collidable=True, | |
| 1418 | + tags=["0043nzrtobajqi"], | |
| 1419 | + ), | |
| 1420 | + "0063vjsvlzmsou": Sprite( | |
| 1421 | + pixels=[ | |
| 1422 | + [0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1423 | + [0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1424 | + [0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1425 | + [0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1426 | + [0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1427 | + [0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1428 | + ], | |
| 1429 | + name="0063vjsvlzmsou", | |
| 1430 | + visible=True, | |
| 1431 | + collidable=True, | |
| 1432 | + tags=["0043nzrtobajqi"], | |
| 1433 | + ), | |
| 1434 | + "0064keizattioe": Sprite( | |
| 1435 | + pixels=[ | |
| 1436 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1437 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1438 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1439 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1440 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1441 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1442 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1443 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1444 | + ], | |
| 1445 | + name="0064keizattioe", | |
| 1446 | + visible=True, | |
| 1447 | + collidable=True, | |
| 1448 | + tags=["0043nzrtobajqi"], | |
| 1449 | + ), | |
| 1450 | + "0065dnabthoeah": Sprite( | |
| 1451 | + pixels=[ | |
| 1452 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1453 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1454 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1455 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1456 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1457 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1458 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1459 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1460 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1461 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1462 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1463 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1464 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1465 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1466 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1467 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1468 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1469 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1470 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1471 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1472 | + ], | |
| 1473 | + name="0065dnabthoeah", | |
| 1474 | + visible=True, | |
| 1475 | + collidable=True, | |
| 1476 | + tags=["0043nzrtobajqi"], | |
| 1477 | + ), | |
| 1478 | + "0066vaxquypzdt": Sprite( | |
| 1479 | + pixels=[ | |
| 1480 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1481 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1482 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1483 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1484 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1485 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1486 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1487 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1488 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1489 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1490 | + ], | |
| 1491 | + name="0066vaxquypzdt", | |
| 1492 | + visible=True, | |
| 1493 | + collidable=True, | |
| 1494 | + tags=["0043nzrtobajqi"], | |
| 1495 | + ), | |
| 1496 | + "0067nuweesmgmg": Sprite( | |
| 1497 | + pixels=[ | |
| 1498 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1499 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1500 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1501 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1502 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1503 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1504 | + ], | |
| 1505 | + name="0067nuweesmgmg", | |
| 1506 | + visible=True, | |
| 1507 | + collidable=True, | |
| 1508 | + tags=["0043nzrtobajqi"], | |
| 1509 | + ), | |
| 1510 | + "0068ggudhgdmjj": Sprite( | |
| 1511 | + pixels=[ | |
| 1512 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1513 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1514 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1515 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1516 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1517 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1518 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1519 | + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| 1520 | + ], | |
| 1521 | + name="0068ggudhgdmjj", | |
| 1522 | + visible=True, | |
| 1523 | + collidable=True, | |
| 1524 | + tags=["0043nzrtobajqi"], | |
| 1525 | + ), | |
| 1526 | + "0069aqtrahmrun": Sprite( | |
| 1527 | + pixels=[ | |
| 1528 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1529 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1530 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1531 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1532 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1533 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1534 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1535 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1536 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1537 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1538 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1539 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1540 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1541 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1542 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1543 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1544 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1545 | + [0, 0, 0, 0, 0, 0, 0], | |
| 1546 | + ], | |
| 1547 | + name="0069aqtrahmrun", | |
| 1548 | + visible=True, | |
| 1549 | + collidable=True, | |
| 1550 | + tags=["0043nzrtobajqi"], | |
| 1551 | + ), | |
| 1552 | +} | |
| 1553 | +levels = [ | |
| 1554 | + # Level 1 | |
| 1555 | + Level( | |
| 1556 | + sprites=[ | |
| 1557 | + sprites["0009vwghyhtilb"].clone().set_position(17, 14).set_rotation(270), | |
| 1558 | + sprites["0015cltmlkogkc"].clone().set_position(23, 22).set_rotation(270), | |
| 1559 | + sprites["0021ayhektiwsl"].clone().set_position(30, 12).set_rotation(270), | |
| 1560 | + sprites["0021ayhektiwsl"].clone().set_position(30, 16).set_rotation(270), | |
| 1561 | + sprites["0024oklzljpbjf"].clone().set_position(10, 14).set_rotation(270), | |
| 1562 | + sprites["0042ueboolxadn"].clone().set_position(16, 0).set_rotation(270), | |
| 1563 | + sprites["0044auurrayaab"].clone().set_position(26, 16).set_rotation(270), | |
| 1564 | + ], | |
| 1565 | + grid_size=(32, 32), | |
| 1566 | + data={ | |
| 1567 | + "StepCounter": 50, | |
| 1568 | + "Gravity": [2, 0], | |
| 1569 | + }, | |
| 1570 | + ), | |
| 1571 | + # Level 2 | |
| 1572 | + Level( | |
| 1573 | + sprites=[ | |
| 1574 | + sprites["0011egrqhpaniv"].clone().set_position(14, 20).set_rotation(90), | |
| 1575 | + sprites["0017pmjcrnwxxj"].clone().set_position(4, 26).set_rotation(90), | |
| 1576 | + sprites["0021ayhektiwsl"].clone().set_position(0, 8).set_rotation(90), | |
| 1577 | + sprites["0021ayhektiwsl"].clone().set_position(0, 12).set_rotation(90), | |
| 1578 | + sprites["0021ayhektiwsl"].clone().set_position(0, 18).set_rotation(90), | |
| 1579 | + sprites["0021ayhektiwsl"].clone().set_position(0, 22).set_rotation(90), | |
| 1580 | + sprites["0026mrilttcabm"].clone().set_position(0, 10).set_rotation(90), | |
| 1581 | + sprites["0027sdwqirupzd"].clone().set_position(0, 20).set_rotation(90), | |
| 1582 | + sprites["0045wzhlvcxnxi"].clone().set_rotation(90), | |
| 1583 | + sprites["0046qitpxixzbw"].clone().set_position(0, 12).set_rotation(90), | |
| 1584 | + sprites["0047nozrwoeeue"].clone().set_position(0, 22).set_rotation(90), | |
| 1585 | + ], | |
| 1586 | + grid_size=(32, 32), | |
| 1587 | + data={ | |
| 1588 | + "StepCounter": 50, | |
| 1589 | + "Gravity": [-2, 0], | |
| 1590 | + }, | |
| 1591 | + ), | |
| 1592 | + # Level 3 | |
| 1593 | + Level( | |
| 1594 | + sprites=[ | |
| 1595 | + sprites["0009vwghyhtilb"].clone().set_position(42, 39), | |
| 1596 | + sprites["0011egrqhpaniv"].clone().set_position(8, 33), | |
| 1597 | + sprites["0012efovcqtrsv"].clone().set_position(30, 31), | |
| 1598 | + sprites["0015cltmlkogkc"].clone().set_position(46, 21), | |
| 1599 | + sprites["0017pmjcrnwxxj"].clone().set_position(2, 45), | |
| 1600 | + sprites["0018rxmsqpnhhx"].clone().set_position(35, 43), | |
| 1601 | + sprites["0021ayhektiwsl"].clone().set_position(6, 50), | |
| 1602 | + sprites["0021ayhektiwsl"].clone().set_position(10, 50), | |
| 1603 | + sprites["0021ayhektiwsl"].clone().set_position(22, 50), | |
| 1604 | + sprites["0021ayhektiwsl"].clone().set_position(18, 50), | |
| 1605 | + sprites["0021ayhektiwsl"].clone().set_position(32, 50), | |
| 1606 | + sprites["0021ayhektiwsl"].clone().set_position(28, 50), | |
| 1607 | + sprites["0021ayhektiwsl"].clone().set_position(44, 50), | |
| 1608 | + sprites["0021ayhektiwsl"].clone().set_position(40, 50), | |
| 1609 | + sprites["0028yrxfnwssrz"].clone().set_position(20, 46), | |
| 1610 | + sprites["0029hisqstrfef"].clone().set_position(42, 24), | |
| 1611 | + sprites["0037zhvthfywaf"].clone().set_position(30, 30), | |
| 1612 | + sprites["0038kxomlaqnmm"].clone().set_position(8, 32), | |
| 1613 | + sprites["0048uprazwxldi"].clone().set_position(22, 48), | |
| 1614 | + sprites["0049gizsqrldri"].clone().set_position(32, 46), | |
| 1615 | + sprites["0050xlivmfsgrg"].clone().set_position(44, 24), | |
| 1616 | + sprites["0061hvrsaskhtv"].clone().set_position(10, 50), | |
| 1617 | + sprites["0062jjoqcrrlqt"].clone().set_position(0, 48), | |
| 1618 | + ], | |
| 1619 | + grid_size=(52, 52), | |
| 1620 | + data={ | |
| 1621 | + "StepCounter": 75, | |
| 1622 | + "Gravity": [0, 2], | |
| 1623 | + }, | |
| 1624 | + ), | |
| 1625 | + # Level 4 | |
| 1626 | + Level( | |
| 1627 | + sprites=[ | |
| 1628 | + sprites["0003qvhiakludh"].clone().set_position(27, 34), | |
| 1629 | + sprites["0003qvhiakludh"].clone().set_position(12, 43), | |
| 1630 | + sprites["0013nlpqaanefy"].clone().set_position(42, 25), | |
| 1631 | + sprites["0019yzthbwsumy"].clone().set_position(3, 43), | |
| 1632 | + sprites["0023zpxhabfwya"].clone().set_position(15, 61), | |
| 1633 | + sprites["0023zpxhabfwya"].clone().set_position(57, 61), | |
| 1634 | + sprites["0023zpxhabfwya"].clone().set_position(9, 61), | |
| 1635 | + sprites["0023zpxhabfwya"].clone().set_position(51, 61), | |
| 1636 | + sprites["0023zpxhabfwya"].clone().set_position(45, 61), | |
| 1637 | + sprites["0023zpxhabfwya"].clone().set_position(39, 61), | |
| 1638 | + sprites["0030tpzxnyfdvh"].clone().set_position(12, 31), | |
| 1639 | + sprites["0031pjczzavayi"].clone().set_position(27, 22), | |
| 1640 | + sprites["0039vrggqczkeg"].clone().set_position(42, 25), | |
| 1641 | + sprites["0041wufoxqricu"].clone().set_position(54, 34), | |
| 1642 | + sprites["0051cbovinmogo"].clone().set_position(0, 49), | |
| 1643 | + sprites["0052jlqpbhssxz"].clone().set_position(15, 61), | |
| 1644 | + sprites["0053hvedzitgvm"].clone().set_position(30, 55), | |
| 1645 | + sprites["0063vjsvlzmsou"].clone().set_position(45, 58), | |
| 1646 | + sprites["0069aqtrahmrun"].clone().set_position(57, 46), | |
| 1647 | + ], | |
| 1648 | + grid_size=(64, 64), | |
| 1649 | + data={ | |
| 1650 | + "StepCounter": 50, | |
| 1651 | + "Gravity": [0, 3], | |
| 1652 | + }, | |
| 1653 | + ), | |
| 1654 | + # Level 5 | |
| 1655 | + Level( | |
| 1656 | + sprites=[ | |
| 1657 | + sprites["0003qvhiakludh"].clone().set_position(28, 14).set_rotation(270), | |
| 1658 | + sprites["0003qvhiakludh"].clone().set_position(25, 49).set_rotation(270), | |
| 1659 | + sprites["0003qvhiakludh"].clone().set_position(40, 32).set_rotation(270), | |
| 1660 | + sprites["0013nlpqaanefy"].clone().set_position(16, 14).set_rotation(270), | |
| 1661 | + sprites["0014fnratutanf"].clone().set_position(10, 49).set_rotation(270), | |
| 1662 | + sprites["0019yzthbwsumy"].clone().set_position(37, 55).set_rotation(270), | |
| 1663 | + sprites["0020supxvsgicv"].clone().set_position(10, 5).set_rotation(270), | |
| 1664 | + sprites["0023zpxhabfwya"].clone().set_position(61, 29).set_rotation(270), | |
| 1665 | + sprites["0023zpxhabfwya"].clone().set_position(61, 35).set_rotation(270), | |
| 1666 | + sprites["0023zpxhabfwya"].clone().set_position(61, 17).set_rotation(270), | |
| 1667 | + sprites["0023zpxhabfwya"].clone().set_position(61, 46).set_rotation(270), | |
| 1668 | + sprites["0023zpxhabfwya"].clone().set_position(61, 11).set_rotation(270), | |
| 1669 | + sprites["0023zpxhabfwya"].clone().set_position(61, 52).set_rotation(270), | |
| 1670 | + sprites["0032xvysrppdmd"].clone().set_position(10, 49).set_rotation(270), | |
| 1671 | + sprites["0033jkunkpsthb"].clone().set_position(25, 32).set_rotation(270), | |
| 1672 | + sprites["0034gljhkoittz"].clone().set_position(16, 14).set_rotation(270), | |
| 1673 | + sprites["0054vgoahtzchm"].clone().set_position(43, 52).set_rotation(270), | |
| 1674 | + sprites["0055zkynfqcbvf"].clone().set_position(46, 35).set_rotation(270), | |
| 1675 | + sprites["0056gvcomjuyya"].clone().set_position(58, 17).set_rotation(270), | |
| 1676 | + sprites["0057jqxvzzgzuz"].clone().set_position(16, 0).set_rotation(270), | |
| 1677 | + ], | |
| 1678 | + grid_size=(64, 64), | |
| 1679 | + data={ | |
| 1680 | + "StepCounter": 200, | |
| 1681 | + "Gravity": [3, 0], | |
| 1682 | + }, | |
| 1683 | + ), | |
| 1684 | + # Level 6 | |
| 1685 | + Level( | |
| 1686 | + sprites=[ | |
| 1687 | + sprites["0000ufilpvvllo"].clone().set_position(21, 0).set_rotation(90), | |
| 1688 | + sprites["0003qvhiakludh"].clone().set_position(30, 30).set_rotation(90), | |
| 1689 | + sprites["0003qvhiakludh"].clone().set_position(6, 30).set_rotation(90), | |
| 1690 | + sprites["0013nlpqaanefy"].clone().set_position(48, 30).set_rotation(90), | |
| 1691 | + sprites["0019yzthbwsumy"].clone().set_position(3, 12).set_rotation(90), | |
| 1692 | + sprites["0023zpxhabfwya"].clone().set_position(0, 27).set_rotation(90), | |
| 1693 | + sprites["0023zpxhabfwya"].clone().set_position(0, 33).set_rotation(90), | |
| 1694 | + sprites["0023zpxhabfwya"].clone().set_position(24, 33).set_rotation(90), | |
| 1695 | + sprites["0023zpxhabfwya"].clone().set_position(24, 27).set_rotation(90), | |
| 1696 | + sprites["0035mojyqpmkca"].clone().set_position(0, 30).set_rotation(90), | |
| 1697 | + sprites["0058isdkrjwbjw"].clone().set_rotation(90), | |
| 1698 | + sprites["0059nzfxpksuts"].clone().set_position(0, 33).set_rotation(90), | |
| 1699 | + sprites["0060vzyhngpdxk"].clone().set_position(24, 0).set_rotation(90), | |
| 1700 | + ], | |
| 1701 | + grid_size=(64, 64), | |
| 1702 | + data={ | |
| 1703 | + "StepCounter": 50, | |
| 1704 | + "Gravity": [-3, 0], | |
| 1705 | + }, | |
| 1706 | + ), | |
| 1707 | + # Level 7 | |
| 1708 | + Level( | |
| 1709 | + sprites=[ | |
| 1710 | + sprites["0002eemauzpzws"].clone().set_position(0, 22).set_rotation(180), | |
| 1711 | + sprites["0002eemauzpzws"].clone().set_position(34, 22).set_rotation(180), | |
| 1712 | + sprites["0005nxriaixjyr"].clone().set_position(14, 30).set_rotation(180), | |
| 1713 | + sprites["0005nxriaixjyr"].clone().set_position(32, 8).set_rotation(180), | |
| 1714 | + sprites["0005nxriaixjyr"].clone().set_position(32, 30).set_rotation(180), | |
| 1715 | + sprites["0009vwghyhtilb"].clone().set_position(32, 18).set_rotation(180), | |
| 1716 | + sprites["0011egrqhpaniv"].clone().set_position(14, 10).set_rotation(180), | |
| 1717 | + sprites["0012efovcqtrsv"].clone().set_position(14, 42).set_rotation(180), | |
| 1718 | + sprites["0015cltmlkogkc"].clone().set_position(6, 32).set_rotation(180), | |
| 1719 | + sprites["0017pmjcrnwxxj"].clone().set_position(40, 34).set_rotation(180), | |
| 1720 | + sprites["0018rxmsqpnhhx"].clone().set_position(40, 6).set_rotation(180), | |
| 1721 | + sprites["0021ayhektiwsl"].clone().set_position(16, 0).set_rotation(180), | |
| 1722 | + sprites["0021ayhektiwsl"].clone().set_position(12, 0).set_rotation(180), | |
| 1723 | + sprites["0021ayhektiwsl"].clone().set_position(16, 24).set_rotation(180), | |
| 1724 | + sprites["0021ayhektiwsl"].clone().set_position(12, 24).set_rotation(180), | |
| 1725 | + sprites["0021ayhektiwsl"].clone().set_position(34, 24).set_rotation(180), | |
| 1726 | + sprites["0021ayhektiwsl"].clone().set_position(30, 24).set_rotation(180), | |
| 1727 | + sprites["0021ayhektiwsl"].clone().set_position(34, 0).set_rotation(180), | |
| 1728 | + sprites["0021ayhektiwsl"].clone().set_position(30, 0).set_rotation(180), | |
| 1729 | + sprites["0036rjrqlosxim"].clone().set_position(14, 0).set_rotation(180), | |
| 1730 | + sprites["0040sfsyhdwzpa"].clone().set_position(32, 0).set_rotation(180), | |
| 1731 | + sprites["0064keizattioe"].clone().set_position(0, 24).set_rotation(180), | |
| 1732 | + sprites["0065dnabthoeah"].clone().set_rotation(180), | |
| 1733 | + sprites["0066vaxquypzdt"].clone().set_position(34, 24).set_rotation(180), | |
| 1734 | + sprites["0067nuweesmgmg"].clone().set_position(34, 0).set_rotation(180), | |
| 1735 | + sprites["0068ggudhgdmjj"].clone().set_position(16, 0).set_rotation(180), | |
| 1736 | + ], | |
| 1737 | + grid_size=(48, 48), | |
| 1738 | + data={ | |
| 1739 | + "StepCounter": 200, | |
| 1740 | + "Gravity": [0, -2], | |
| 1741 | + }, | |
| 1742 | + ), | |
| 1743 | +] | |
| 1744 | +BACKGROUND_COLOR = 3 | |
| 1745 | +PADDING_COLOR = 4 | |
| 1746 | +xbdwxvogip = 7 | |
| 1747 | +fqzhkhmfxt = 12 | |
| 1748 | +flmcufqvdo = 1 | |
| 1749 | +qgrljjqvyn = 0 | |
| 1750 | + | |
| 1751 | + | |
| 1752 | +class kzobdxxpyg: | |
| 1753 | + hxvxoxlwtk: Sprite | |
| 1754 | + xgwliflosy: tuple[int, int] | |
| 1755 | + | |
| 1756 | + def __init__(self, sprite: Sprite, mtdlwrbmzk: tuple[int, int]) -> None: | |
| 1757 | + self.hxvxoxlwtk = sprite | |
| 1758 | + self.xgwliflosy = mtdlwrbmzk | |
| 1759 | + | |
| 1760 | + def xryezihexa(self) -> bool: | |
| 1761 | + vmfjnujmbm = (self.hxvxoxlwtk.x, self.hxvxoxlwtk.y) | |
| 1762 | + mtdlwrbmzk = self.xgwliflosy | |
| 1763 | + dx = mtdlwrbmzk[0] - vmfjnujmbm[0] | |
| 1764 | + dy = mtdlwrbmzk[1] - vmfjnujmbm[1] | |
| 1765 | + if dx == 0 and dy == 0: | |
| 1766 | + return True | |
| 1767 | + if abs(dx) >= abs(dy): | |
| 1768 | + qqqlopeipe = (vmfjnujmbm[0] + np.sign(dx), vmfjnujmbm[1]) | |
| 1769 | + else: | |
| 1770 | + qqqlopeipe = (vmfjnujmbm[0], vmfjnujmbm[1] + np.sign(dy)) | |
| 1771 | + self.hxvxoxlwtk.set_position(qqqlopeipe[0], qqqlopeipe[1]) | |
| 1772 | + return False | |
| 1773 | + | |
| 1774 | + | |
| 1775 | +class wqemqapjce: | |
| 1776 | + emftrvixwu: list[kzobdxxpyg] | |
| 1777 | + chacnmhmit: int | |
| 1778 | + | |
| 1779 | + def __init__(self, maejydvpzz: list[kzobdxxpyg]) -> None: | |
| 1780 | + self.emftrvixwu = maejydvpzz | |
| 1781 | + self.chacnmhmit = 0 | |
| 1782 | + | |
| 1783 | + def xryezihexa(self) -> bool: | |
| 1784 | + mxefvazonp = self.emftrvixwu[self.chacnmhmit] | |
| 1785 | + if mxefvazonp.xryezihexa(): | |
| 1786 | + self.chacnmhmit += 1 | |
| 1787 | + if self.chacnmhmit == len(self.emftrvixwu): | |
| 1788 | + return True | |
| 1789 | + return False | |
| 1790 | + | |
| 1791 | + | |
| 1792 | +class xclqwacrmx(RenderableUserDisplay): | |
| 1793 | + """.""" | |
| 1794 | + | |
| 1795 | + def __init__(self, dmesyeowwd: int): | |
| 1796 | + """.""" | |
| 1797 | + self.dmesyeowwd = dmesyeowwd | |
| 1798 | + self.current_steps = dmesyeowwd | |
| 1799 | + | |
| 1800 | + def kzdrzwegyq(self, jwqkgpseim: int) -> None: | |
| 1801 | + """.""" | |
| 1802 | + self.current_steps = max(0, min(jwqkgpseim, self.dmesyeowwd)) | |
| 1803 | + | |
| 1804 | + def tuvumryrbp(self) -> bool: | |
| 1805 | + """.""" | |
| 1806 | + if self.current_steps > 0: | |
| 1807 | + self.current_steps -= 1 | |
| 1808 | + return self.current_steps > 0 | |
| 1809 | + | |
| 1810 | + def mflhbpdcce(self) -> None: | |
| 1811 | + """.""" | |
| 1812 | + self.current_steps = self.dmesyeowwd | |
| 1813 | + | |
| 1814 | + def render_interface(self, frame: np.ndarray) -> np.ndarray: | |
| 1815 | + """.""" | |
| 1816 | + if self.dmesyeowwd == 0: | |
| 1817 | + return frame | |
| 1818 | + xmiochpvpa = self.current_steps / self.dmesyeowwd | |
| 1819 | + odvxyoizxg = round(64 * xmiochpvpa) | |
| 1820 | + cjicgmvvti = xbdwxvogip | |
| 1821 | + for x in range(64): | |
| 1822 | + if x < odvxyoizxg: | |
| 1823 | + frame[0, x] = cjicgmvvti | |
| 1824 | + else: | |
| 1825 | + frame[0, x] = 4 | |
| 1826 | + return frame | |
| 1827 | + | |
| 1828 | + | |
| 1829 | +class Vc33(ARCBaseGame): | |
| 1830 | + heczcoeosi: xclqwacrmx | |
| 1831 | + dwwmpxqsza: tuple[int, int] | |
| 1832 | + wrcxjliglr: dict[Sprite, tuple[Sprite, Sprite]] | |
| 1833 | + bnnqyrupir: wqemqapjce | None | |
| 1834 | + | |
| 1835 | + def __init__(self) -> None: | |
| 1836 | + self.heczcoeosi = xclqwacrmx(0) | |
| 1837 | + xlpbmgyvhdc = Camera( | |
| 1838 | + background=BACKGROUND_COLOR, | |
| 1839 | + letter_box=PADDING_COLOR, | |
| 1840 | + interfaces=[self.heczcoeosi], | |
| 1841 | + ) | |
| 1842 | + super().__init__(game_id="vc33", levels=levels, camera=xlpbmgyvhdc, available_actions=[6]) | |
| 1843 | + | |
| 1844 | + def ztjckgmepu(self) -> None: | |
| 1845 | + """.""" | |
| 1846 | + rwejtsvefe = self.current_level.get_data("StepCounter") | |
| 1847 | + self.heczcoeosi.dmesyeowwd = rwejtsvefe | |
| 1848 | + self.heczcoeosi.mflhbpdcce() | |
| 1849 | + | |
| 1850 | + def cicmkyghjc(self, name: str) -> Sprite: | |
| 1851 | + return self.current_level.get_sprites_by_name(name)[0] | |
| 1852 | + | |
| 1853 | + def qhmwbtpcsk(self) -> bool: | |
| 1854 | + return self.dwwmpxqsza[0] > 0 or self.dwwmpxqsza[1] > 0 | |
| 1855 | + | |
| 1856 | + def mzqwlqlkrv(self, sprite: Sprite) -> int: | |
| 1857 | + if self.dwwmpxqsza[0]: | |
| 1858 | + return sprite.y | |
| 1859 | + return sprite.x | |
| 1860 | + | |
| 1861 | + def xitrlzpbgu(self, sprite: Sprite) -> int: | |
| 1862 | + if self.dwwmpxqsza[0]: | |
| 1863 | + return sprite.x | |
| 1864 | + return sprite.y | |
| 1865 | + | |
| 1866 | + def vmjlfzxesj(self, sprite: Sprite) -> int: | |
| 1867 | + if self.dwwmpxqsza[0]: | |
| 1868 | + return sprite.height | |
| 1869 | + return sprite.width | |
| 1870 | + | |
| 1871 | + def pjfzvvjgud(self, sprite: Sprite) -> int: | |
| 1872 | + if self.dwwmpxqsza[0]: | |
| 1873 | + return sprite.width | |
| 1874 | + return sprite.height | |
| 1875 | + | |
| 1876 | + def zfcrfmorna(self, sprite: Sprite) -> int: | |
| 1877 | + if self.qhmwbtpcsk(): | |
| 1878 | + return self.xitrlzpbgu(sprite) + self.pjfzvvjgud(sprite) | |
| 1879 | + else: | |
| 1880 | + return self.xitrlzpbgu(sprite) | |
| 1881 | + | |
| 1882 | + def hpakcxndwy(self, sprite: Sprite) -> int: | |
| 1883 | + if self.qhmwbtpcsk(): | |
| 1884 | + return self.xitrlzpbgu(sprite) | |
| 1885 | + else: | |
| 1886 | + return self.xitrlzpbgu(sprite) + self.pjfzvvjgud(sprite) | |
| 1887 | + | |
| 1888 | + def ldbtzvbmoj(self, eqbmrymiwc: Sprite, abwvwckyso: Sprite) -> bool: | |
| 1889 | + if self.qhmwbtpcsk(): | |
| 1890 | + return self.zfcrfmorna(eqbmrymiwc) >= self.hpakcxndwy(abwvwckyso) | |
| 1891 | + else: | |
| 1892 | + return self.zfcrfmorna(eqbmrymiwc) <= self.hpakcxndwy(abwvwckyso) | |
| 1893 | + | |
| 1894 | + def on_set_level(self, level: Level) -> None: | |
| 1895 | + """.""" | |
| 1896 | + self.ztjckgmepu() | |
| 1897 | + self.bnnqyrupir = None | |
| 1898 | + self.dwwmpxqsza = self.current_level.get_data("Gravity") | |
| 1899 | + self.wrcxjliglr = dict() | |
| 1900 | + wpgwyzgomg = self.current_level.get_sprites_by_tag("0022jvmlspyigc") | |
| 1901 | + amifeafxwr = self.current_level.get_sprites_by_tag("0043nzrtobajqi") | |
| 1902 | + for abwvwckyso in wpgwyzgomg: | |
| 1903 | + dfghvrvmmj = [eqbmrymiwc for eqbmrymiwc in amifeafxwr if self.mzqwlqlkrv(eqbmrymiwc) == self.mzqwlqlkrv(abwvwckyso) and self.ldbtzvbmoj(eqbmrymiwc, abwvwckyso)] | |
| 1904 | + if dfghvrvmmj: | |
| 1905 | + sxrzgujgtx = [eqbmrymiwc for eqbmrymiwc in amifeafxwr if self.mzqwlqlkrv(eqbmrymiwc) + self.vmjlfzxesj(eqbmrymiwc) == self.mzqwlqlkrv(abwvwckyso) - self.vmjlfzxesj(abwvwckyso) and self.ldbtzvbmoj(eqbmrymiwc, abwvwckyso)] | |
| 1906 | + if self.qhmwbtpcsk(): | |
| 1907 | + pzeognzxtp = min(sxrzgujgtx, key=lambda glarpukzki: self.xitrlzpbgu(glarpukzki)) | |
| 1908 | + qrsthafmxa = min(dfghvrvmmj, key=lambda glarpukzki: self.xitrlzpbgu(glarpukzki)) | |
| 1909 | + else: | |
| 1910 | + pzeognzxtp = max(sxrzgujgtx, key=lambda glarpukzki: self.xitrlzpbgu(glarpukzki)) | |
| 1911 | + qrsthafmxa = max(dfghvrvmmj, key=lambda glarpukzki: self.xitrlzpbgu(glarpukzki)) | |
| 1912 | + self.wrcxjliglr[abwvwckyso] = (pzeognzxtp, qrsthafmxa) | |
| 1913 | + else: | |
| 1914 | + sxrzgujgtx = [eqbmrymiwc for eqbmrymiwc in amifeafxwr if self.mzqwlqlkrv(eqbmrymiwc) < self.mzqwlqlkrv(abwvwckyso) and self.mzqwlqlkrv(eqbmrymiwc) + self.vmjlfzxesj(eqbmrymiwc) > self.mzqwlqlkrv(abwvwckyso) and self.ldbtzvbmoj(eqbmrymiwc, abwvwckyso)] | |
| 1915 | + if sxrzgujgtx: | |
| 1916 | + dfghvrvmmj = [eqbmrymiwc for eqbmrymiwc in amifeafxwr if self.mzqwlqlkrv(eqbmrymiwc) == self.mzqwlqlkrv(abwvwckyso) + self.vmjlfzxesj(abwvwckyso) * 2 and self.ldbtzvbmoj(eqbmrymiwc, abwvwckyso)] | |
| 1917 | + if self.qhmwbtpcsk(): | |
| 1918 | + pzeognzxtp = min( | |
| 1919 | + sxrzgujgtx, | |
| 1920 | + key=lambda glarpukzki: self.xitrlzpbgu(glarpukzki), | |
| 1921 | + ) | |
| 1922 | + qrsthafmxa = min( | |
| 1923 | + dfghvrvmmj, | |
| 1924 | + key=lambda glarpukzki: self.xitrlzpbgu(glarpukzki), | |
| 1925 | + ) | |
| 1926 | + else: | |
| 1927 | + pzeognzxtp = max( | |
| 1928 | + sxrzgujgtx, | |
| 1929 | + key=lambda glarpukzki: self.xitrlzpbgu(glarpukzki), | |
| 1930 | + ) | |
| 1931 | + qrsthafmxa = max( | |
| 1932 | + dfghvrvmmj, | |
| 1933 | + key=lambda glarpukzki: self.xitrlzpbgu(glarpukzki), | |
| 1934 | + ) | |
| 1935 | + self.wrcxjliglr[abwvwckyso] = (qrsthafmxa, pzeognzxtp) | |
| 1936 | + | |
| 1937 | + def ielczunthe(self) -> bool: | |
| 1938 | + """.""" | |
| 1939 | + wdfdpqxtkf = self.current_level.get_sprites_by_tag("0016uciqlhjlom") | |
| 1940 | + vtcmlsebpq = self.current_level.get_sprites_by_tag("0010gnulkywfpz") | |
| 1941 | + amifeafxwr = self.current_level.get_sprites_by_tag("0043nzrtobajqi") | |
| 1942 | + bqppzuakxi = self.current_level.get_sprites_by_tag("0025yfyiswdvoh") | |
| 1943 | + for vfddimntfs in wdfdpqxtkf: | |
| 1944 | + zoovwgfyzl = vfddimntfs.pixels[-1, -1] | |
| 1945 | + zvmujaknkt = [eqbmrymiwc for eqbmrymiwc in amifeafxwr if self.bcpuwqzpxw(vfddimntfs, eqbmrymiwc)] | |
| 1946 | + kxlcdazxzs = self.rcbyiqlbza(zvmujaknkt[0]) | |
| 1947 | + nyaroikuxn = True | |
| 1948 | + for hxlxvkeipz in vtcmlsebpq: | |
| 1949 | + bggewwdych = [wall for wall in bqppzuakxi if wall.collides_with(hxlxvkeipz)][0] | |
| 1950 | + if zoovwgfyzl in hxlxvkeipz.pixels and self.xitrlzpbgu(vfddimntfs) == self.xitrlzpbgu(hxlxvkeipz) and (bggewwdych in kxlcdazxzs): | |
| 1951 | + nyaroikuxn = False | |
| 1952 | + break | |
| 1953 | + if nyaroikuxn: | |
| 1954 | + return False | |
| 1955 | + return True | |
| 1956 | + | |
| 1957 | + def ezbubuphlm(self, xklhcncusa: Sprite) -> bool: | |
| 1958 | + amifeafxwr = self.current_level.get_sprites_by_tag("0043nzrtobajqi") | |
| 1959 | + lqequazmqm = [eqbmrymiwc for eqbmrymiwc in amifeafxwr if self.hpakcxndwy(eqbmrymiwc) == self.zfcrfmorna(xklhcncusa)] | |
| 1960 | + vqoweqholk = [eqbmrymiwc for eqbmrymiwc in lqequazmqm if self.mzqwlqlkrv(eqbmrymiwc) + self.vmjlfzxesj(eqbmrymiwc) == self.mzqwlqlkrv(xklhcncusa)] | |
| 1961 | + eltgoujmhx = [eqbmrymiwc for eqbmrymiwc in lqequazmqm if self.mzqwlqlkrv(eqbmrymiwc) == self.mzqwlqlkrv(xklhcncusa) + self.vmjlfzxesj(xklhcncusa)] | |
| 1962 | + if vqoweqholk and eltgoujmhx: | |
| 1963 | + return True | |
| 1964 | + return False | |
| 1965 | + | |
| 1966 | + def vktvbwfvhu(self, xklhcncusa: Sprite) -> None: | |
| 1967 | + if self.ezbubuphlm(xklhcncusa): | |
| 1968 | + xklhcncusa.color_remap(None, fqzhkhmfxt) | |
| 1969 | + if xklhcncusa.pixels.shape[1] == 3: | |
| 1970 | + pcbttqnhxk = sprites["0006mfbmvylbss"].clone() | |
| 1971 | + else: | |
| 1972 | + pcbttqnhxk = sprites["0008rybtprnbie"].clone() | |
| 1973 | + pcbttqnhxk.set_rotation(xklhcncusa.rotation) | |
| 1974 | + if xklhcncusa.rotation == 0: | |
| 1975 | + pcbttqnhxk.set_position(xklhcncusa.x - 2, xklhcncusa.y) | |
| 1976 | + elif xklhcncusa.rotation == 180: | |
| 1977 | + pcbttqnhxk.set_position(xklhcncusa.x - 2, xklhcncusa.y) | |
| 1978 | + if xklhcncusa.rotation == 90: | |
| 1979 | + pcbttqnhxk.set_position(xklhcncusa.x, xklhcncusa.y - 2) | |
| 1980 | + elif xklhcncusa.rotation == 270: | |
| 1981 | + pcbttqnhxk.set_position(xklhcncusa.x, xklhcncusa.y - 2) | |
| 1982 | + self.current_level.add_sprite(pcbttqnhxk) | |
| 1983 | + else: | |
| 1984 | + xklhcncusa.color_remap(None, flmcufqvdo) | |
| 1985 | + | |
| 1986 | + def wpcgsoumbr(self) -> None: | |
| 1987 | + cagzzrtjlm = self.current_level.get_sprites_by_tag("0007gyluczquhi") | |
| 1988 | + for pcbttqnhxk in cagzzrtjlm: | |
| 1989 | + self.current_level.remove_sprite(pcbttqnhxk) | |
| 1990 | + pqklvzcuxd = self.current_level.get_sprites_by_tag("0004sttgkofqwb") | |
| 1991 | + for xklhcncusa in pqklvzcuxd: | |
| 1992 | + self.vktvbwfvhu(xklhcncusa) | |
| 1993 | + | |
| 1994 | + def rcbyiqlbza(self, eqbmrymiwc: Sprite) -> list[Sprite]: | |
| 1995 | + bqppzuakxi = self.current_level.get_sprites_by_tag("0025yfyiswdvoh") | |
| 1996 | + kxlcdazxzs = [wall for wall in bqppzuakxi if self.mzqwlqlkrv(wall) + self.vmjlfzxesj(wall) == self.mzqwlqlkrv(eqbmrymiwc) or self.mzqwlqlkrv(wall) == self.mzqwlqlkrv(eqbmrymiwc) + self.vmjlfzxesj(eqbmrymiwc)] | |
| 1997 | + return kxlcdazxzs | |
| 1998 | + | |
| 1999 | + def kectayqmfn(self, eqbmrymiwc: Sprite) -> list[Sprite]: | |
| 2000 | + wsqwqkejcw = self.current_level.get_sprites_by_tag("0001symqacyexa") | |
| 2001 | + if self.qhmwbtpcsk(): | |
| 2002 | + mkmqnniulx = [floor for floor in wsqwqkejcw if self.mzqwlqlkrv(floor) == self.mzqwlqlkrv(eqbmrymiwc) and self.zfcrfmorna(floor) < self.zfcrfmorna(eqbmrymiwc)] | |
| 2003 | + else: | |
| 2004 | + mkmqnniulx = [floor for floor in wsqwqkejcw if self.mzqwlqlkrv(floor) == self.mzqwlqlkrv(eqbmrymiwc) and self.zfcrfmorna(floor) > self.zfcrfmorna(eqbmrymiwc)] | |
| 2005 | + return mkmqnniulx | |
| 2006 | + | |
| 2007 | + def bcpuwqzpxw(self, vfddimntfs: Sprite, eqbmrymiwc: Sprite) -> bool: | |
| 2008 | + return self.mzqwlqlkrv(vfddimntfs) >= self.mzqwlqlkrv(eqbmrymiwc) and self.mzqwlqlkrv(vfddimntfs) < self.mzqwlqlkrv(eqbmrymiwc) + self.vmjlfzxesj(eqbmrymiwc) and (self.zfcrfmorna(vfddimntfs) == self.hpakcxndwy(eqbmrymiwc)) | |
| 2009 | + | |
| 2010 | + def usqfmpzewf(self, eqbmrymiwc: Sprite) -> list[Sprite]: | |
| 2011 | + wdfdpqxtkf = self.current_level.get_sprites_by_tag("0016uciqlhjlom") | |
| 2012 | + return [vfddimntfs for vfddimntfs in wdfdpqxtkf if self.bcpuwqzpxw(vfddimntfs, eqbmrymiwc)] | |
| 2013 | + | |
| 2014 | + def ysoqxdegud(self, eqbmrymiwc: Sprite) -> int: | |
| 2015 | + ehuyojkjcq = self.kectayqmfn(eqbmrymiwc) | |
| 2016 | + if ehuyojkjcq: | |
| 2017 | + if self.usqfmpzewf(eqbmrymiwc): | |
| 2018 | + if self.dwwmpxqsza[0] == -3: | |
| 2019 | + return max([self.zfcrfmorna(sprite) - 6 for sprite in ehuyojkjcq]) | |
| 2020 | + else: | |
| 2021 | + return max([self.zfcrfmorna(sprite) - 4 for sprite in ehuyojkjcq]) | |
| 2022 | + else: | |
| 2023 | + return max([self.zfcrfmorna(sprite) for sprite in ehuyojkjcq]) | |
| 2024 | + katgaxrnxd = self.rcbyiqlbza(eqbmrymiwc) | |
| 2025 | + if self.qhmwbtpcsk(): | |
| 2026 | + return max([self.hpakcxndwy(sprite) for sprite in katgaxrnxd]) | |
| 2027 | + else: | |
| 2028 | + return min([self.hpakcxndwy(sprite) for sprite in katgaxrnxd]) | |
| 2029 | + | |
| 2030 | + def xowbpvmzbd(self, yvppaekogs: Sprite, dvfrzxabyk: Sprite) -> None: | |
| 2031 | + if self.pjfzvvjgud(yvppaekogs) > 0 and (self.qhmwbtpcsk() and self.xitrlzpbgu(dvfrzxabyk) > self.ysoqxdegud(dvfrzxabyk) or (not self.qhmwbtpcsk() and self.hpakcxndwy(dvfrzxabyk) < self.ysoqxdegud(dvfrzxabyk))): | |
| 2032 | + volqrbaomzl, duyfsmiznvg = self.dwwmpxqsza | |
| 2033 | + for vfddimntfs in self.usqfmpzewf(yvppaekogs): | |
| 2034 | + vfddimntfs.move(volqrbaomzl, duyfsmiznvg) | |
| 2035 | + for vfddimntfs in self.usqfmpzewf(dvfrzxabyk): | |
| 2036 | + vfddimntfs.move(-volqrbaomzl, -duyfsmiznvg) | |
| 2037 | + if volqrbaomzl >= 0: | |
| 2038 | + yvppaekogs.move(volqrbaomzl, 0) | |
| 2039 | + dvfrzxabyk.move(-volqrbaomzl, 0) | |
| 2040 | + if duyfsmiznvg >= 0: | |
| 2041 | + yvppaekogs.move(0, duyfsmiznvg) | |
| 2042 | + dvfrzxabyk.move(0, -duyfsmiznvg) | |
| 2043 | + ogkqtyxbce = np.full((1, dvfrzxabyk.pixels.shape[1]), qgrljjqvyn) | |
| 2044 | + if volqrbaomzl != 0: | |
| 2045 | + yvppaekogs.pixels = yvppaekogs.pixels[: -abs(volqrbaomzl)] | |
| 2046 | + for i in range(abs(volqrbaomzl)): | |
| 2047 | + dvfrzxabyk.pixels = np.vstack([dvfrzxabyk.pixels, ogkqtyxbce]) | |
| 2048 | + else: | |
| 2049 | + yvppaekogs.pixels = yvppaekogs.pixels[: -abs(duyfsmiznvg)] | |
| 2050 | + for i in range(abs(duyfsmiznvg)): | |
| 2051 | + dvfrzxabyk.pixels = np.vstack([dvfrzxabyk.pixels, ogkqtyxbce]) | |
| 2052 | + self.wpcgsoumbr() | |
| 2053 | + | |
| 2054 | + def iootdyzbwv(self, abwvwckyso: Sprite) -> None: | |
| 2055 | + yvppaekogs, dvfrzxabyk = self.wrcxjliglr[abwvwckyso] | |
| 2056 | + self.xowbpvmzbd(yvppaekogs, dvfrzxabyk) | |
| 2057 | + | |
| 2058 | + def mwsdltsaxd(self, xklhcncusa: Sprite) -> wqemqapjce: | |
| 2059 | + amifeafxwr = self.current_level.get_sprites_by_tag("0043nzrtobajqi") | |
| 2060 | + lqequazmqm = [eqbmrymiwc for eqbmrymiwc in amifeafxwr if self.hpakcxndwy(eqbmrymiwc) == self.zfcrfmorna(xklhcncusa)] | |
| 2061 | + vqoweqholk = [eqbmrymiwc for eqbmrymiwc in lqequazmqm if self.mzqwlqlkrv(eqbmrymiwc) + self.vmjlfzxesj(eqbmrymiwc) == self.mzqwlqlkrv(xklhcncusa)] | |
| 2062 | + eltgoujmhx = [eqbmrymiwc for eqbmrymiwc in lqequazmqm if self.mzqwlqlkrv(eqbmrymiwc) == self.mzqwlqlkrv(xklhcncusa) + self.vmjlfzxesj(xklhcncusa)] | |
| 2063 | + wrrpfpsshs = vqoweqholk[0] | |
| 2064 | + nmhvenelbu = eltgoujmhx[0] | |
| 2065 | + hgrgnxfhxv = [] | |
| 2066 | + jhnzlxbvwh = self.usqfmpzewf(wrrpfpsshs) | |
| 2067 | + ydofmpomfe = self.usqfmpzewf(nmhvenelbu) | |
| 2068 | + for vfddimntfs in jhnzlxbvwh: | |
| 2069 | + if self.dwwmpxqsza[0] != 0: | |
| 2070 | + y = nmhvenelbu.y + nmhvenelbu.height // 2 - vfddimntfs.height // 2 | |
| 2071 | + x = vfddimntfs.x | |
| 2072 | + else: | |
| 2073 | + x = nmhvenelbu.x + nmhvenelbu.width // 2 - vfddimntfs.width // 2 | |
| 2074 | + y = vfddimntfs.y | |
| 2075 | + hgrgnxfhxv.append(kzobdxxpyg(vfddimntfs, (x, y))) | |
| 2076 | + for vfddimntfs in ydofmpomfe: | |
| 2077 | + if self.dwwmpxqsza[0] != 0: | |
| 2078 | + y = wrrpfpsshs.y + wrrpfpsshs.height // 2 - vfddimntfs.height // 2 | |
| 2079 | + x = vfddimntfs.x | |
| 2080 | + else: | |
| 2081 | + x = wrrpfpsshs.x + wrrpfpsshs.width // 2 - vfddimntfs.width // 2 | |
| 2082 | + y = vfddimntfs.y | |
| 2083 | + hgrgnxfhxv.append(kzobdxxpyg(vfddimntfs, (x, y))) | |
| 2084 | + if self.dwwmpxqsza[0] > 0: | |
| 2085 | + zbfsemofrj = kzobdxxpyg(xklhcncusa, (xklhcncusa.x - xklhcncusa.width, xklhcncusa.y)) | |
| 2086 | + elif self.dwwmpxqsza[0] < 0: | |
| 2087 | + zbfsemofrj = kzobdxxpyg(xklhcncusa, (xklhcncusa.x + xklhcncusa.width, xklhcncusa.y)) | |
| 2088 | + else: | |
| 2089 | + zbfsemofrj = kzobdxxpyg(xklhcncusa, (xklhcncusa.x, xklhcncusa.y - xklhcncusa.height)) | |
| 2090 | + nxdhyqlepc = kzobdxxpyg(xklhcncusa, (xklhcncusa.x, xklhcncusa.y)) | |
| 2091 | + ocvdtekxgc = wqemqapjce([zbfsemofrj] + hgrgnxfhxv + [nxdhyqlepc]) | |
| 2092 | + return ocvdtekxgc | |
| 2093 | + | |
| 2094 | + def step(self) -> None: | |
| 2095 | + """.""" | |
| 2096 | + if self.bnnqyrupir: | |
| 2097 | + if self.bnnqyrupir.xryezihexa(): | |
| 2098 | + self.bnnqyrupir = None | |
| 2099 | + self.wpcgsoumbr() | |
| 2100 | + else: | |
| 2101 | + return | |
| 2102 | + elif self.action.id == GameAction.ACTION6: | |
| 2103 | + self.heczcoeosi.tuvumryrbp() | |
| 2104 | + wmatnlmsbs = self.action.data.get("x", 0) | |
| 2105 | + iecizdiqxl = self.action.data.get("y", 0) | |
| 2106 | + rgadpfgsms = self.camera.display_to_grid(wmatnlmsbs, iecizdiqxl) | |
| 2107 | + if rgadpfgsms: | |
| 2108 | + game_x, game_y = rgadpfgsms | |
| 2109 | + sprite = self.current_level.get_sprite_at(game_x, game_y) | |
| 2110 | + if sprite: | |
| 2111 | + if "0022jvmlspyigc" in sprite.tags: | |
| 2112 | + self.iootdyzbwv(sprite) | |
| 2113 | + elif "0004sttgkofqwb" in sprite.tags: | |
| 2114 | + if self.ezbubuphlm(sprite): | |
| 2115 | + self.bnnqyrupir = self.mwsdltsaxd(sprite) | |
| 2116 | + cagzzrtjlm = self.current_level.get_sprites_by_tag("0007gyluczquhi") | |
| 2117 | + for pcbttqnhxk in cagzzrtjlm: | |
| 2118 | + pcbttqnhxk.set_visible(False) | |
| 2119 | + return | |
| 2120 | + if self.ielczunthe(): | |
| 2121 | + self.next_level() | |
| 2122 | + elif not self.heczcoeosi.current_steps: | |
| 2123 | + self.lose() | |
| 2124 | + self.complete_action() | |
+6 −0 referee/games.txt added View file
| @@ -0,0 +1,6 @@ | ||
| 1 | +# The season's games, from the public ARC-AGI-3 set (files in environment_files/, MIT). | |
| 2 | +ls20 | |
| 3 | +ft09 | |
| 4 | +vc33 | |
| 5 | +sp80 | |
| 6 | +lp85 | |
+91 −0 referee/play.py added View file
| @@ -0,0 +1,91 @@ | ||
| 1 | +"""The project's referee, on the official ARC-AGI-3 toolkit. ARC-AGI-3 is played alone: the season's field is a set of | |
| 2 | +its public games, each a subtask. check: the route's agent plays each game up to the action limit through the toolkit, | |
| 3 | +served locally; the score is ARC's own RHAE: for each level cleared, (human baseline actions / actions taken)², | |
| 4 | +capped at 1.15, weighted by the level's number, as a percentage of the game; the mean over the games is the score. | |
| 5 | +practice: the first two games, a replay of each in replays/. | |
| 6 | + python3 referee/play.py check|practice <route folder> | |
| 7 | +""" | |
| 8 | +import glob, gzip, json, os, socket, subprocess, sys, tempfile, time | |
| 9 | + | |
| 10 | +ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |
| 11 | +sys.path.insert(0, os.path.join(ROOT, 'kit')) | |
| 12 | +import league # noqa: E402 | |
| 13 | + | |
| 14 | +ENVS = os.path.join(ROOT, 'referee', 'environment_files') | |
| 15 | +MOST = 400 | |
| 16 | + | |
| 17 | + | |
| 18 | +def games(): | |
| 19 | + with open(os.path.join(ROOT, 'referee', 'games.txt')) as f: | |
| 20 | + return [l.strip() for l in f if l.strip() and not l.startswith('#')] | |
| 21 | + | |
| 22 | + | |
| 23 | +def meta(game): | |
| 24 | + return json.load(open(glob.glob(os.path.join(ENVS, game, '*', 'metadata.json'))[0])) | |
| 25 | + | |
| 26 | + | |
| 27 | +def rhae(steps, baseline): | |
| 28 | + """Per level cleared, (baseline / actions)^2 capped at 1.15, weighted by level number, as a % of the game.""" | |
| 29 | + total, done, since = 0.0, 0, 0 | |
| 30 | + for s in steps: | |
| 31 | + since += 1 | |
| 32 | + if s['levels_completed'] > done: | |
| 33 | + level = s['levels_completed'] | |
| 34 | + b = baseline[level - 1] if level - 1 < len(baseline) else baseline[-1] | |
| 35 | + total += level * min(1.15, (b / since) ** 2) | |
| 36 | + done, since = level, 0 | |
| 37 | + return 100 * total / sum(range(1, len(baseline) + 1)) | |
| 38 | + | |
| 39 | + | |
| 40 | +def replay(game, steps): | |
| 41 | + m = meta(game) | |
| 42 | + frame = lambda s: ''.join('%x' % (v & 15) for row in s['frame'][-1] for v in row) if s['frame'] else '' | |
| 43 | + return {'game': 'arc-agi-3', 'id': m['game_id'], 'title': m.get('title', game), 'fps': m.get('default_fps', 10), 'levels': len(m['baseline_actions']), | |
| 44 | + 'steps': [{'a': (s.get('action_input') or {}).get('id', 0), 'd': (s.get('action_input') or {}).get('data') or {}, 's': s['state'], 'l': s['levels_completed'], 'f': frame(s)} for s in steps]} | |
| 45 | + | |
| 46 | + | |
| 47 | +def main(mode, route): | |
| 48 | + bot = os.path.join(league.bot_dir(route), 'agent.py') | |
| 49 | + if not os.path.isfile(bot): | |
| 50 | + sys.exit(f'No bot in {route}: add agent.py with a class Agent (choose_action(frames, latest_frame)), as ARC-AGI-3-Agents writes them') | |
| 51 | + name = league.route_name() | |
| 52 | + reps = league.Replays() if mode == 'practice' else None | |
| 53 | + clean = tempfile.mkdtemp() # the toolkit reads .env from where it runs; nothing of the route's goes there | |
| 54 | + recs = os.path.join(clean, 'recordings') | |
| 55 | + with socket.socket() as s: | |
| 56 | + s.bind(('127.0.0.1', 0)) | |
| 57 | + port = s.getsockname()[1] | |
| 58 | + env = {k: v for k, v in os.environ.items() if not k.startswith(('ARC_', 'OPERATION_MODE', 'SS_', 'SLURM_'))} | |
| 59 | + server = subprocess.Popen([sys.executable, '-s', os.path.join(ROOT, 'referee', 'serve.py'), ENVS, recs, str(port)], cwd=clean, env=env, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) | |
| 60 | + try: | |
| 61 | + for _ in range(100): | |
| 62 | + try: | |
| 63 | + socket.create_connection(('127.0.0.1', port), 0.2).close() | |
| 64 | + break | |
| 65 | + except OSError: | |
| 66 | + time.sleep(0.1) | |
| 67 | + subtasks = {} | |
| 68 | + for game in games() if mode == 'check' else games()[:2]: | |
| 69 | + before = set(glob.glob(os.path.join(recs, '**', '*.jsonl*'), recursive=True)) | |
| 70 | + try: | |
| 71 | + subprocess.run([sys.executable, '-s', os.path.join(ROOT, 'referee', 'agent_child.py'), bot, f'http://127.0.0.1:{port}', game, str(MOST)], | |
| 72 | + cwd=clean, env={**env, 'PYTHONHASHSEED': '0'}, timeout=MOST * 2 + 30, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) | |
| 73 | + except subprocess.TimeoutExpired: | |
| 74 | + pass | |
| 75 | + time.sleep(0.3) | |
| 76 | + new = sorted(set(glob.glob(os.path.join(recs, '**', f'{game}-*.jsonl*'), recursive=True)) - before, key=os.path.getmtime) | |
| 77 | + steps = [] | |
| 78 | + for path in new: | |
| 79 | + with (gzip.open if path.endswith('.gz') else open)(path, 'rt') as f: | |
| 80 | + steps += [json.loads(l)['data'] for l in f if l.strip()] | |
| 81 | + subtasks[game] = rhae(steps[1:], meta(game)['baseline_actions']) if steps else 0.0 | |
| 82 | + if reps and steps: | |
| 83 | + r = replay(game, steps) | |
| 84 | + reps.add(f'{game}.json', r, f'{r["title"]}: {name}', [name], f'{max(s["levels_completed"] for s in steps)} of {r["levels"]} levels in {len(steps) - 1} actions, {subtasks[game]:.1f} RHAE') | |
| 85 | + league.write_metrics(sum(subtasks.values()) / len(subtasks), subtasks) | |
| 86 | + finally: | |
| 87 | + server.kill() | |
| 88 | + | |
| 89 | + | |
| 90 | +if __name__ == '__main__': | |
| 91 | + main(sys.argv[1], sys.argv[2]) | |
+6 −0 referee/practice.sbatch added View file
| @@ -0,0 +1,6 @@ | ||
| 1 | +#!/bin/bash | |
| 2 | +#SBATCH --job-name=practice | |
| 3 | +#SBATCH --time=30:00 | |
| 4 | +# A practice run from your route: the first two games, replays in replays/ (see Matches). | |
| 5 | +PY=$(command -v arc-agi-3-python || command -v python3) | |
| 6 | +PYTHONHASHSEED=0 "$PY" -s referee/play.py practice "$SS_INPUT/$SS_ROUTE_DIR" | |
+3 −0 referee/requirements.txt added View file
| @@ -0,0 +1,3 @@ | ||
| 1 | +# Python 3.12. The official ARC-AGI-3 toolkit and engine (MIT); the games are in environment_files/. | |
| 2 | +arc-agi==0.9.9 | |
| 3 | +arcengine==0.9.3 | |
+8 −0 referee/serve.py added View file
| @@ -0,0 +1,8 @@ | ||
| 1 | +"""The games, served over ARC-AGI-3's own REST API by the official toolkit in offline mode: the bot plays them through | |
| 2 | +the toolkit exactly as it would play arcprize.org, but never sees a game's source. Every step is recorded. | |
| 3 | + python3 referee/serve.py <environment_files> <recordings> <port> | |
| 4 | +""" | |
| 5 | +import sys | |
| 6 | +from arc_agi import Arcade, OperationMode | |
| 7 | + | |
| 8 | +Arcade(operation_mode=OperationMode.OFFLINE, environments_dir=sys.argv[1], recordings_dir=sys.argv[2]).listen_and_serve(host='127.0.0.1', port=int(sys.argv[3]), save_all_recordings=True) | |
+18 −0 routes/agent.py added View file
| @@ -0,0 +1,18 @@ | ||
| 1 | +"""The starter: ARC-AGI-3-Agents' random agent, which picks any action the game offers and clicks anywhere. Copy it | |
| 2 | +into routes/<your route>/agent.py and make an agent that learns a game's rules as it plays: the referee calls | |
| 3 | +choose_action(frames, latest_frame) every step, as the official agents framework does.""" | |
| 4 | +import random | |
| 5 | +from arcengine import GameAction, GameState | |
| 6 | + | |
| 7 | + | |
| 8 | +class Agent: | |
| 9 | + def is_done(self, frames, latest_frame): | |
| 10 | + return latest_frame.state is GameState.WIN | |
| 11 | + | |
| 12 | + def choose_action(self, frames, latest_frame): | |
| 13 | + if latest_frame.state in (GameState.NOT_PLAYED, GameState.GAME_OVER): | |
| 14 | + return GameAction.RESET | |
| 15 | + action = GameAction.from_id(random.choice(latest_frame.available_actions)) | |
| 16 | + if action.is_complex(): | |
| 17 | + return action, {'x': random.randrange(64), 'y': random.randrange(64)} | |
| 18 | + return action | |
+19 −0 viewer/bridge.js added View file
| @@ -0,0 +1,19 @@ | ||
| 1 | +// The page around a game's viewer hands it the replay (Shoal's public/app.js): the viewer runs in a frame with scripts | |
| 2 | +// only, says it is ready, and gets {shoal: 'replay', name, text}. Opened by itself, it reads ?replay=<file> instead, | |
| 3 | +// so a replay can be watched from a clone: python3 -m http.server, then viewer/index.html?replay=../replays/x.json | |
| 4 | +// A live room (docs/games.md §8.4) opens the viewer as index.html?live. shoalLive(fn) says {shoal: 'ready', live: true} | |
| 5 | +// and calls fn(batch) for each {shoal: 'live', room, you, messages}: you lists the seats this viewer controls, the first | |
| 6 | +// batch holds all the history it may see, and each message is the room's (§8.3) plus its sequence number n: {n, to, | |
| 7 | +// version, obs, legal} asks a seat to act, {n, to, obs} tells one seat, {n, event} is public, {n, end} ends the room. | |
| 8 | +// shoalAct(seat, version, action) plays for a seat in you, answering the request with that version. | |
| 9 | +window.shoalReplay = start => { | |
| 10 | + addEventListener('message', e => { if (e.data && e.data.shoal === 'replay') start(e.data.text, e.data.name) }) | |
| 11 | + const local = new URLSearchParams(location.search).get('replay') | |
| 12 | + if (local) fetch(local).then(r => r.text()).then(t => start(t, local)) | |
| 13 | + else if (parent !== window) parent.postMessage({ shoal: 'ready' }, '*') | |
| 14 | +} | |
| 15 | +window.shoalLive = fn => { | |
| 16 | + addEventListener('message', e => { if (e.data && e.data.shoal === 'live') fn(e.data) }) | |
| 17 | + if (parent !== window) parent.postMessage({ shoal: 'ready', live: true }, '*') | |
| 18 | +} | |
| 19 | +window.shoalAct = (seat, version, action) => parent.postMessage({ shoal: 'act', seat, version, action }, '*') | |
+51 −0 viewer/index.html added View file
| @@ -0,0 +1,51 @@ | ||
| 1 | + | |
| 2 | +<html lang="en"> | |
| 3 | +<head> | |
| 4 | +<meta charset="utf-8"> | |
| 5 | +<meta name="viewport" content="width=device-width, initial-scale=1"> | |
| 6 | +<title>ARC-AGI-3 replay</title> | |
| 7 | +<style> | |
| 8 | +/* ARC-AGI-3's own look: the 64x64 frame in the official sixteen colours, drawn pixel for pixel, a click marked in | |
| 9 | + yellow, the screen washed red on game over and green on a win. */ | |
| 10 | +html, body { margin: 0; height: 100%; background: #0d0d0d; color: #e6e6e6; font: 13px ui-monospace, Menlo, Consolas, monospace; } | |
| 11 | +body { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; } | |
| 12 | +.head { display: flex; gap: 18px; align-items: baseline; } | |
| 13 | +.head b { font-size: 16px; letter-spacing: .08em; } | |
| 14 | +canvas { image-rendering: pixelated; width: min(78vh, 92vw); height: min(78vh, 92vw); background: #000; } | |
| 15 | +.ctl { display: flex; gap: 8px; align-items: center; } | |
| 16 | +button { font: inherit; color: #e6e6e6; background: #222; border: 1px solid #444; border-radius: 4px; padding: 3px 10px; cursor: pointer; } | |
| 17 | +input[type=range] { width: 300px; } | |
| 18 | +</style> | |
| 19 | +</head> | |
| 20 | +<body> | |
| 21 | +<div class="head"><b id="title">ARC-AGI-3</b><span id="lv"></span><span id="act"></span></div> | |
| 22 | +<canvas id="c" width="64" height="64"></canvas> | |
| 23 | +<div class="ctl"><button id="play">Pause</button><input id="at" type="range" min="0" value="0" aria-label="Action"><span id="n"></span></div> | |
| 24 | +<script src="bridge.js"></script> | |
| 25 | +<script> | |
| 26 | +const PALETTE = ['#FFFFFF', '#CCCCCC', '#999999', '#666666', '#333333', '#000000', '#E53AA3', '#FF7BCC', '#F93C31', '#1E93FF', '#88D8F1', '#FFDC00', '#FF851B', '#921231', '#4FCC30', '#A356D6'] | |
| 27 | +const RGB = PALETTE.map(h => [1, 3, 5].map(i => parseInt(h.slice(i, i + 2), 16))) | |
| 28 | +const NAME = ['RESET', 'UP', 'DOWN', 'LEFT', 'RIGHT', 'INTERACT', 'CLICK', 'UNDO'] | |
| 29 | +const cv = document.getElementById('c'), g = cv.getContext('2d'), img = g.createImageData(64, 64), at = document.getElementById('at') | |
| 30 | +let R = null, t = 0, timer = 0 | |
| 31 | +function draw() { | |
| 32 | + const s = R.steps[t], f = s.f | |
| 33 | + for (let i = 0; i < 4096; i++) { const c = RGB[parseInt(f[i] || '5', 16)]; img.data.set([c[0], c[1], c[2], 255], i * 4) } | |
| 34 | + g.putImageData(img, 0, 0) | |
| 35 | + if (s.s === 'GAME_OVER' || s.s === 'WIN') { g.fillStyle = s.s === 'WIN' ? 'rgba(79,204,48,.45)' : 'rgba(249,60,49,.45)'; g.fillRect(0, 0, 64, 64) } | |
| 36 | + const act = typeof s.a === 'number' ? NAME[s.a] || `ACTION${s.a}` : String(s.a) | |
| 37 | + if ((act === 'ACTION6' || act === 'CLICK') && s.d && s.d.x != null) { g.fillStyle = '#FFDC00'; g.fillRect(s.d.x, s.d.y, 1, 1) } | |
| 38 | + document.getElementById('lv').textContent = `level ${s.l} / ${R.levels}` | |
| 39 | + document.getElementById('act').textContent = t ? act : 'start' | |
| 40 | + document.getElementById('n').textContent = `action ${t} / ${R.steps.length - 1}` | |
| 41 | + at.value = t | |
| 42 | +} | |
| 43 | +function go(n) { t = Math.max(0, Math.min(R.steps.length - 1, n)); draw() } | |
| 44 | +function run() { timer = setInterval(() => (t >= R.steps.length - 1 ? stop() : go(t + 1)), Math.max(60, 1000 / (R.fps || 10))); document.getElementById('play').textContent = 'Pause' } | |
| 45 | +function stop() { clearInterval(timer); timer = 0; document.getElementById('play').textContent = 'Play' } | |
| 46 | +document.getElementById('play').onclick = () => (timer ? stop() : run()) | |
| 47 | +at.oninput = () => { stop(); go(+at.value) } | |
| 48 | +shoalReplay(text => { R = JSON.parse(text); document.getElementById('title').textContent = R.title; at.max = R.steps.length - 1; go(0); run() }) | |
| 49 | +</script> | |
| 50 | +</body> | |
| 51 | +</html> | |
