Files
dockipelago/worlds/duke3d/levels/e3l9.py
Jonathan Tinney 7971961166
Some checks failed
Analyze modified files / flake8 (push) Failing after 2m28s
Build / build-win (push) Has been cancelled
Build / build-ubuntu2204 (push) Has been cancelled
ctest / Test C++ ubuntu-latest (push) Has been cancelled
ctest / Test C++ windows-latest (push) Has been cancelled
Analyze modified files / mypy (push) Has been cancelled
Build and Publish Docker Images / Push Docker image to Docker Hub (push) Successful in 5m4s
Native Code Static Analysis / scan-build (push) Failing after 5m2s
type check / pyright (push) Successful in 1m7s
unittests / Test Python 3.11.2 ubuntu-latest (push) Failing after 16m23s
unittests / Test Python 3.12 ubuntu-latest (push) Failing after 28m19s
unittests / Test Python 3.13 ubuntu-latest (push) Failing after 14m49s
unittests / Test hosting with 3.13 on ubuntu-latest (push) Successful in 5m0s
unittests / Test Python 3.13 macos-latest (push) Has been cancelled
unittests / Test Python 3.11 windows-latest (push) Has been cancelled
unittests / Test Python 3.13 windows-latest (push) Has been cancelled
add schedule I, sonic 1/frontiers/heroes, spirit island
2026-04-02 23:46:36 -07:00

122 lines
5.1 KiB
Python

from BaseClasses import Region
from ..base_classes import D3DLevel
class E3L9(D3DLevel):
name = "Stadium"
levelnum = 8
volumenum = 2
keys = []
location_defs = [
{"id": 1, "name": "MP Floor Armor", "type": "sprite", "density": 5},
{"id": 12, "name": "MP Ledge Shotgun", "type": "sprite", "density": 5},
{"id": 13, "name": "Floor Pipebombs 1", "type": "sprite", "density": 3},
{"id": 14, "name": "Floor Pipebombs 2", "type": "sprite", "density": 3},
{"id": 15, "name": "Floor Pipebombs 3", "type": "sprite", "density": 4},
{"id": 16, "name": "Floor Pipebombs 4", "type": "sprite", "density": 4},
{"id": 17, "name": "Ledge Shrinker 1", "type": "sprite", "density": 4},
{"id": 18, "name": "MP Floor Chaingun", "type": "sprite", "density": 5},
{"id": 19, "name": "MP Floor Freezethrower", "type": "sprite", "density": 5},
{"id": 20, "name": "MP Floor RPG", "type": "sprite", "density": 5},
{"id": 21, "name": "MP Floor Devastator", "type": "sprite", "density": 5},
{"id": 23, "name": "Ledge Shrinker 2", "type": "sprite", "density": 4},
{
"id": 24,
"name": "Ledge Night Vision Goggles 1",
"type": "sprite",
"density": 1,
},
{"id": 25, "name": "Ledge Holo Duke", "type": "sprite", "density": 0},
{"id": 45, "name": "Ledge Chaingun", "type": "sprite", "density": 3},
{"id": 46, "name": "Ledge Jetpack", "type": "sprite", "density": 0},
{"id": 47, "name": "Ledge RPG", "type": "sprite", "density": 4},
{"id": 48, "name": "Ledge Freezethrower", "type": "sprite", "density": 3},
{"id": 49, "name": "Ledge Shotgun", "type": "sprite", "density": 1},
{"id": 50, "name": "Ledge Devastator", "type": "sprite", "density": 3},
{"id": 51, "name": "Floor Steroids 1", "type": "sprite", "density": 1},
{"id": 52, "name": "Floor Steroids 2", "type": "sprite", "density": 0},
{"id": 85, "name": "MP Ledge Jetpack 1", "type": "sprite", "density": 5},
{"id": 86, "name": "MP Ledge Jetpack 2", "type": "sprite", "density": 5},
{
"id": 87,
"name": "Floor Night Vision Goggles",
"type": "sprite",
"density": 4,
},
{"id": 88, "name": "MP Ledge Chaingun", "type": "sprite", "density": 5},
{"id": 89, "name": "MP Ledge Pipebombs", "type": "sprite", "density": 5},
{"id": 90, "name": "MP Ledge Devastator", "type": "sprite", "density": 5},
{"id": 91, "name": "MP Ledge RPG", "type": "sprite", "density": 5},
{"id": 92, "name": "MP Ledge Shrinker", "type": "sprite", "density": 5},
{"id": 93, "name": "MP Ledge Freezethrower", "type": "sprite", "density": 5},
{"id": 94, "name": "Floor Medkit", "type": "sprite", "density": 4},
{
"id": 95,
"name": "Ledge Night Vision Goggles 2",
"type": "sprite",
"density": 4,
},
{"id": 104, "name": "Floor Atomic Health 1", "type": "sprite", "density": 4},
{"id": 105, "name": "Floor Atomic Health 2", "type": "sprite", "density": 4},
{"id": 106, "name": "Floor Atomic Health 3", "type": "sprite", "density": 4},
{"id": 107, "name": "Floor Atomic Health 4", "type": "sprite", "density": 4},
{"id": 0, "name": "Exit", "type": "exit"},
]
has_boss = True
def main_region(self) -> Region:
r = self.rules
ret = self.region(
self.name,
[
"MP Floor Armor",
"Floor Pipebombs 1",
"Floor Pipebombs 2",
"Floor Pipebombs 3",
"Floor Pipebombs 4",
"MP Floor Chaingun",
"MP Floor Freezethrower",
"MP Floor RPG",
"MP Floor Devastator",
"Floor Steroids 1",
"Floor Steroids 2",
"Floor Night Vision Goggles",
"Floor Medkit",
"Floor Atomic Health 1",
"Floor Atomic Health 2",
"Floor Atomic Health 3",
"Floor Atomic Health 4",
"Exit",
],
)
self.restrict("Exit", r.can_kill_boss_3)
ledge = self.region(
"Stadium Ledge",
[
"MP Ledge Shotgun",
"Ledge Shrinker 1",
"Ledge Shrinker 2",
"Ledge Night Vision Goggles 1",
"Ledge Holo Duke",
"Ledge Chaingun",
"Ledge Jetpack",
"Ledge RPG",
"Ledge Freezethrower",
"Ledge Shotgun",
"Ledge Devastator",
"MP Ledge Jetpack 1",
"MP Ledge Jetpack 2",
"MP Ledge Chaingun",
"MP Ledge Pipebombs",
"MP Ledge Devastator",
"MP Ledge RPG",
"MP Ledge Shrinker",
"MP Ledge Freezethrower",
"Ledge Night Vision Goggles 2",
],
)
self.connect(ret, ledge, r.jump)
return ret