Files
dockipelago/worlds/duke3d/levels/e3l6.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

159 lines
6.4 KiB
Python

from BaseClasses import Region
from ..base_classes import D3DLevel
class E3L6(D3DLevel):
name = "Rabid Transit"
levelnum = 5
volumenum = 2
keys = ["Blue", "Red"]
location_defs = [
{"id": 1, "name": "Track Steroids", "type": "sprite", "density": 2},
{"id": 8, "name": "Red Key Card", "type": "sprite", "density": 0},
{"id": 20, "name": "Blue Key Freezethrower", "type": "sprite", "density": 3},
{"id": 21, "name": "Library Pipebombs", "type": "sprite", "density": 3},
{
"id": 53,
"name": "Vending Machine Atomic Health",
"type": "sprite",
"density": 0,
},
{"id": 91, "name": "Underwater Shrinker", "type": "sprite", "density": 0},
{"id": 92, "name": "Bookshelf Atomic Health", "type": "sprite", "density": 2},
{"id": 140, "name": "Track Devastator", "type": "sprite", "density": 1},
{
"id": 283,
"name": "Magazine Store Night Vision Goggles",
"type": "sprite",
"density": 1,
},
{"id": 296, "name": "Blue Key Card", "type": "sprite", "density": 0},
{"id": 333, "name": "Entrance Shotgun", "type": "sprite", "density": 1},
{"id": 334, "name": "Poster Chaingun", "type": "sprite", "density": 2},
{"id": 339, "name": "Magazine Holo Duke", "type": "sprite", "density": 2},
{"id": 342, "name": "Entrance Pipebombs", "type": "sprite", "density": 4},
{"id": 361, "name": "Blue Key Armor", "type": "sprite", "density": 4},
{"id": 362, "name": "Blue Key Medkit", "type": "sprite", "density": 4},
{"id": 364, "name": "Blue Door Atomic Health", "type": "sprite", "density": 3},
{"id": 365, "name": "Train Chaingun", "type": "sprite", "density": 0},
{"id": 366, "name": "Train Atomic Health", "type": "sprite", "density": 4},
{"id": 367, "name": "Train RPG", "type": "sprite", "density": 3},
{"id": 368, "name": "Train Medkit", "type": "sprite", "density": 4},
{"id": 385, "name": "Blue Door Tripmine 1", "type": "sprite", "density": 3},
{"id": 386, "name": "Blue Door Tripmine 2", "type": "sprite", "density": 4},
{"id": 387, "name": "Blue Door Tripmine 3", "type": "sprite", "density": 4},
{"id": 388, "name": "Blue Door Tripmine 4", "type": "sprite", "density": 4},
{"id": 389, "name": "Blue Door Tripmine 5", "type": "sprite", "density": 0},
{
"id": 411,
"name": "MP Blue Door Night Vision Goggles",
"type": "sprite",
"density": 5,
},
{"id": 429, "name": "Alien Base Devastator", "type": "sprite", "density": 2},
{"id": 472, "name": "Track Atomic Health", "type": "sprite", "density": 4},
{"id": 6, "name": "Secret Post Box Wall", "type": "sector"},
{"id": 132, "name": "Secret Poster", "type": "sector"},
{"id": 149, "name": "Secret Bookshelves", "type": "sector"},
{"id": 163, "name": "Secret Magazines", "type": "sector"},
{"id": 172, "name": "Secret Alien Base", "type": "sector"},
{"id": 182, "name": "Secret Track Wall", "type": "sector"},
{"id": 0, "name": "Exit", "type": "exit"},
]
must_dive = True
def main_region(self) -> Region:
r = self.rules
ret = self.region(
self.name,
[
"Entrance Shotgun",
"Entrance Pipebombs",
"Vending Machine Atomic Health",
"Train Chaingun",
"Train Atomic Health",
"Train RPG",
"Train Medkit",
"Track Devastator",
"Blue Door Tripmine 1",
"Blue Door Tripmine 2",
"Blue Door Tripmine 3",
"Blue Door Tripmine 4",
"Blue Door Tripmine 5",
],
)
self.restrict("Track Devastator", r.can_open)
self.restrict("Vending Machine Atomic Health", r.can_use)
magazine_secret = self.region(
"Behind the Magazine Machine", ["Secret Magazines", "Magazine Holo Duke"]
)
self.connect(ret, magazine_secret, r.can_crouch & r.jump)
start_ledges = self.region(
"Subway Ledges",
[
"Magazine Store Night Vision Goggles",
"Blue Key Card",
"Blue Key Freezethrower",
"Blue Key Medkit",
"Blue Key Armor",
],
)
self.connect(ret, start_ledges, r.jump)
self.restrict("Magazine Store Night Vision Goggles", r.can_use)
duke_poster = self.region("Duke Poster", ["Secret Poster", "Poster Chaingun"])
self.connect(
ret,
duke_poster,
(r.jump & r.can_open)
| (r.difficulty("hard") & r.crouch_jump)
| r.fast_crouch_jump,
)
track_wall = self.region(
"Track Breakable Wall",
["Secret Track Wall", "Track Steroids", "Track Atomic Health"],
)
self.connect(ret, track_wall, r.explosives)
blue_door = self.region(
"Behind Blue Door",
[
"Red Key Card",
"MP Blue Door Night Vision Goggles",
"Blue Door Atomic Health",
"Secret Post Box Wall",
],
)
self.connect(ret, blue_door, (self.blue_key & r.can_open) | r.glitch_kick)
self.restrict(
"Secret Post Box Wall",
r.jump & (r.can_open | (r.glitched & r.can_crouch & r.fast_sprint)),
)
alien_base = self.region(
"Alien Base", ["Secret Alien Base", "Alien Base Devastator"]
)
self.connect(blue_door, alien_base, r.can_open)
self.restrict("Alien Base Devastator", r.can_use)
library = self.region("Library", ["Library Pipebombs"])
self.connect(ret, library, self.red_key & r.can_open)
bookshelf = self.region(
"Bookshelves", ["Secret Bookshelves", "Bookshelf Atomic Health"]
)
self.connect(
library,
bookshelf,
r.jetpack(50) | (r.can_jump & (r.explosives | r.difficulty("medium"))),
)
exit_area = self.region("Exit Area", ["Exit", "Underwater Shrinker"])
self.connect(library, exit_area, r.can_dive)
self.restrict("Exit", r.can_use)
return ret