zombie-escape 1.10.1__tar.gz → 1.12.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/PKG-INFO +7 -4
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/README.md +5 -2
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/pyproject.toml +1 -1
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/__about__.py +1 -1
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/colors.py +22 -14
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/entities.py +247 -47
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/entities_constants.py +15 -5
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/__init__.py +2 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/footprints.py +4 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/interactions.py +38 -7
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/layout.py +40 -15
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/movement.py +38 -2
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/spawn.py +174 -41
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/state.py +17 -9
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/survivors.py +9 -1
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/utils.py +40 -21
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay_constants.py +8 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/level_blueprints.py +139 -24
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/locales/ui.en.json +9 -1
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/locales/ui.ja.json +8 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/models.py +11 -5
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/render.py +390 -43
- zombie_escape-1.12.3/src/zombie_escape/render_assets.py +795 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/render_constants.py +25 -4
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/screens/game_over.py +4 -4
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/screens/gameplay.py +31 -1
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/stage_constants.py +33 -16
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/zombie_escape.py +1 -1
- zombie_escape-1.10.1/src/zombie_escape/render_assets.py +0 -542
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/.gitignore +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/LICENSE.txt +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/__init__.py +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/assets/fonts/Silkscreen-Regular.ttf +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/assets/fonts/misaki_gothic.ttf +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/config.py +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/font_utils.py +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/ambient.py +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/constants.py +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/input_utils.py +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/level_constants.py +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/localization.py +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/progress.py +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/rng.py +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/screen_constants.py +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/screens/__init__.py +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/screens/settings.py +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/screens/title.py +0 -0
- {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/world_grid.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: zombie-escape
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.12.3
|
|
4
4
|
Summary: Top-down zombie survival game built with pygame.
|
|
5
5
|
Project-URL: Homepage, https://github.com/tos-kamiya/zombie-escape
|
|
6
6
|
Author-email: Toshihiro Kamiya <kamiya@mbj.nifty.com>
|
|
@@ -17,7 +17,7 @@ Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
|
17
17
|
Requires-Python: >=3.10
|
|
18
18
|
Requires-Dist: numpy
|
|
19
19
|
Requires-Dist: platformdirs
|
|
20
|
-
Requires-Dist: pygame
|
|
20
|
+
Requires-Dist: pygame-ce
|
|
21
21
|
Requires-Dist: python-i18n
|
|
22
22
|
Requires-Dist: typing-extensions; python_version < '3.11'
|
|
23
23
|
Provides-Extra: dev
|
|
@@ -93,7 +93,7 @@ Open **Settings** from the title to toggle gameplay assists:
|
|
|
93
93
|
|
|
94
94
|
### Characters/Items
|
|
95
95
|
|
|
96
|
-
- **Player:** A blue circle. Controlled with the WASD or arrow keys. When carrying fuel a tiny yellow square appears near the sprite so you can immediately see whether you're ready to drive.
|
|
96
|
+
- **Player:** A blue circle with small hands. Controlled with the WASD or arrow keys. When carrying fuel a tiny yellow square appears near the sprite so you can immediately see whether you're ready to drive.
|
|
97
97
|
- **Zombie:** A red circle. Will chase the player (or car) once detected.
|
|
98
98
|
- When out of sight, the zombie's movement mode will randomly switch every certain time (moving horizontally/vertically only, side-to-side movement, random movement, etc.).
|
|
99
99
|
- Variants with different behavior have been observed.
|
|
@@ -108,10 +108,11 @@ Open **Settings** from the title to toggle gameplay assists:
|
|
|
108
108
|
- **Flashlight:** Each pickup expands your visible radius by about 20% (grab two to reach the max boost).
|
|
109
109
|
- **Steel Beam (optional):** A square post with crossed diagonals; same collision as inner walls but with triple durability. Spawns independently of inner walls (may overlap them). If an inner wall covers a beam, the beam appears once the wall is destroyed.
|
|
110
110
|
- **Fuel Can (Stages 2 & 3):** A yellow jerrycan that only spawns on the fuel-run stages. Pick it up before driving the car; once collected the on-player indicator appears until you refuel the car.
|
|
111
|
-
- **Buddy (Stage 3):** A green circle survivor with a blue outline who spawns somewhere in the building and waits.
|
|
111
|
+
- **Buddy (Stage 3):** A green circle survivor with small hands and a blue outline who spawns somewhere in the building and waits.
|
|
112
112
|
- Zombies only choose to pursue the buddy if they are on-screen; otherwise they ignore them.
|
|
113
113
|
- If a zombie tags the buddy off-screen, the buddy quietly respawns somewhere else instead of ending the run.
|
|
114
114
|
- Touch the buddy on foot to make them follow you (at 70% of player speed). Touch them while driving to pick them up.
|
|
115
|
+
- If you bash an inner wall or steel beam, the buddy will drift toward that spot and help chip away at it.
|
|
115
116
|
- **Survivors (Stage 4):** Pale gray civilians with a blue outline, scattered indoors.
|
|
116
117
|
- They stand still until you get close, then shuffle toward you at about one-third of player speed.
|
|
117
118
|
- Zombies can convert them if both are on-screen; the survivor shouts a line and turns instantly.
|
|
@@ -155,6 +156,8 @@ zombie-escape
|
|
|
155
156
|
|
|
156
157
|
This project is licensed under the MIT License - see the [LICENSE.txt](LICENSE.txt) file for details.
|
|
157
158
|
|
|
159
|
+
This project depends on pygame-ce (repository: `https://github.com/pygame-community/pygame-ce`), which is licensed under GNU LGPL version 2.1.
|
|
160
|
+
|
|
158
161
|
The bundled Silkscreen-Regular.ttf font follows the license terms of its original distribution.
|
|
159
162
|
Please refer to the upstream website for details: https://fonts.google.com/specimen/Silkscreen
|
|
160
163
|
|
|
@@ -64,7 +64,7 @@ Open **Settings** from the title to toggle gameplay assists:
|
|
|
64
64
|
|
|
65
65
|
### Characters/Items
|
|
66
66
|
|
|
67
|
-
- **Player:** A blue circle. Controlled with the WASD or arrow keys. When carrying fuel a tiny yellow square appears near the sprite so you can immediately see whether you're ready to drive.
|
|
67
|
+
- **Player:** A blue circle with small hands. Controlled with the WASD or arrow keys. When carrying fuel a tiny yellow square appears near the sprite so you can immediately see whether you're ready to drive.
|
|
68
68
|
- **Zombie:** A red circle. Will chase the player (or car) once detected.
|
|
69
69
|
- When out of sight, the zombie's movement mode will randomly switch every certain time (moving horizontally/vertically only, side-to-side movement, random movement, etc.).
|
|
70
70
|
- Variants with different behavior have been observed.
|
|
@@ -79,10 +79,11 @@ Open **Settings** from the title to toggle gameplay assists:
|
|
|
79
79
|
- **Flashlight:** Each pickup expands your visible radius by about 20% (grab two to reach the max boost).
|
|
80
80
|
- **Steel Beam (optional):** A square post with crossed diagonals; same collision as inner walls but with triple durability. Spawns independently of inner walls (may overlap them). If an inner wall covers a beam, the beam appears once the wall is destroyed.
|
|
81
81
|
- **Fuel Can (Stages 2 & 3):** A yellow jerrycan that only spawns on the fuel-run stages. Pick it up before driving the car; once collected the on-player indicator appears until you refuel the car.
|
|
82
|
-
- **Buddy (Stage 3):** A green circle survivor with a blue outline who spawns somewhere in the building and waits.
|
|
82
|
+
- **Buddy (Stage 3):** A green circle survivor with small hands and a blue outline who spawns somewhere in the building and waits.
|
|
83
83
|
- Zombies only choose to pursue the buddy if they are on-screen; otherwise they ignore them.
|
|
84
84
|
- If a zombie tags the buddy off-screen, the buddy quietly respawns somewhere else instead of ending the run.
|
|
85
85
|
- Touch the buddy on foot to make them follow you (at 70% of player speed). Touch them while driving to pick them up.
|
|
86
|
+
- If you bash an inner wall or steel beam, the buddy will drift toward that spot and help chip away at it.
|
|
86
87
|
- **Survivors (Stage 4):** Pale gray civilians with a blue outline, scattered indoors.
|
|
87
88
|
- They stand still until you get close, then shuffle toward you at about one-third of player speed.
|
|
88
89
|
- Zombies can convert them if both are on-screen; the survivor shouts a line and turns instantly.
|
|
@@ -126,6 +127,8 @@ zombie-escape
|
|
|
126
127
|
|
|
127
128
|
This project is licensed under the MIT License - see the [LICENSE.txt](LICENSE.txt) file for details.
|
|
128
129
|
|
|
130
|
+
This project depends on pygame-ce (repository: `https://github.com/pygame-community/pygame-ce`), which is licensed under GNU LGPL version 2.1.
|
|
131
|
+
|
|
129
132
|
The bundled Silkscreen-Regular.ttf font follows the license terms of its original distribution.
|
|
130
133
|
Please refer to the upstream website for details: https://fonts.google.com/specimen/Silkscreen
|
|
131
134
|
|
|
@@ -2,7 +2,12 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
def _clamp(value: float) -> int:
|
|
7
|
+
return max(0, min(255, int(value)))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# Basic palette.
|
|
6
11
|
WHITE: tuple[int, int, int] = (255, 255, 255)
|
|
7
12
|
BLACK: tuple[int, int, int] = (0, 0, 0)
|
|
8
13
|
RED: tuple[int, int, int] = (255, 0, 0)
|
|
@@ -13,8 +18,6 @@ LIGHT_GRAY: tuple[int, int, int] = (200, 200, 200)
|
|
|
13
18
|
YELLOW: tuple[int, int, int] = (255, 255, 0)
|
|
14
19
|
ORANGE: tuple[int, int, int] = (255, 165, 0)
|
|
15
20
|
DARK_RED: tuple[int, int, int] = (139, 0, 0)
|
|
16
|
-
TRACKER_OUTLINE_COLOR: tuple[int, int, int] = (170, 70, 220)
|
|
17
|
-
WALL_FOLLOWER_OUTLINE_COLOR: tuple[int, int, int] = (140, 140, 140)
|
|
18
21
|
|
|
19
22
|
|
|
20
23
|
@dataclass(frozen=True)
|
|
@@ -32,10 +35,6 @@ class EnvironmentPalette:
|
|
|
32
35
|
outer_wall_border: tuple[int, int, int]
|
|
33
36
|
|
|
34
37
|
|
|
35
|
-
def _clamp(value: float) -> int:
|
|
36
|
-
return max(0, min(255, int(value)))
|
|
37
|
-
|
|
38
|
-
|
|
39
38
|
def _adjust_color(
|
|
40
39
|
color: tuple[int, int, int], *, brightness: float = 1.0, saturation: float = 1.0
|
|
41
40
|
) -> tuple[int, int, int]:
|
|
@@ -56,6 +55,7 @@ DEFAULT_AMBIENT_PALETTE_KEY = "default"
|
|
|
56
55
|
NO_FLASHLIGHT_PALETTE_KEY = "no_flashlight"
|
|
57
56
|
DAWN_AMBIENT_PALETTE_KEY = "dawn"
|
|
58
57
|
|
|
58
|
+
|
|
59
59
|
# Base palette used throughout gameplay (matches the previous constants).
|
|
60
60
|
_DEFAULT_ENVIRONMENT_PALETTE = EnvironmentPalette(
|
|
61
61
|
floor_primary=(43, 57, 70),
|
|
@@ -72,10 +72,14 @@ _DEFAULT_ENVIRONMENT_PALETTE = EnvironmentPalette(
|
|
|
72
72
|
# Dark, desaturated palette that sells the "alone without a flashlight" vibe.
|
|
73
73
|
_GLOOM_ENVIRONMENT_PALETTE = EnvironmentPalette(
|
|
74
74
|
floor_primary=_adjust_color(
|
|
75
|
-
_DEFAULT_ENVIRONMENT_PALETTE.floor_primary,
|
|
75
|
+
_DEFAULT_ENVIRONMENT_PALETTE.floor_primary,
|
|
76
|
+
brightness=0.8,
|
|
77
|
+
saturation=0.75,
|
|
76
78
|
),
|
|
77
79
|
floor_secondary=_adjust_color(
|
|
78
|
-
_DEFAULT_ENVIRONMENT_PALETTE.floor_secondary,
|
|
80
|
+
_DEFAULT_ENVIRONMENT_PALETTE.floor_secondary,
|
|
81
|
+
brightness=0.8,
|
|
82
|
+
saturation=0.75,
|
|
79
83
|
),
|
|
80
84
|
fall_zone_primary=_adjust_color(
|
|
81
85
|
_DEFAULT_ENVIRONMENT_PALETTE.fall_zone_primary,
|
|
@@ -88,10 +92,14 @@ _GLOOM_ENVIRONMENT_PALETTE = EnvironmentPalette(
|
|
|
88
92
|
saturation=0.75,
|
|
89
93
|
),
|
|
90
94
|
outside=_adjust_color(
|
|
91
|
-
_DEFAULT_ENVIRONMENT_PALETTE.outside,
|
|
95
|
+
_DEFAULT_ENVIRONMENT_PALETTE.outside,
|
|
96
|
+
brightness=0.8,
|
|
97
|
+
saturation=0.75,
|
|
92
98
|
),
|
|
93
99
|
inner_wall=_adjust_color(
|
|
94
|
-
_DEFAULT_ENVIRONMENT_PALETTE.inner_wall,
|
|
100
|
+
_DEFAULT_ENVIRONMENT_PALETTE.inner_wall,
|
|
101
|
+
brightness=0.8,
|
|
102
|
+
saturation=0.75,
|
|
95
103
|
),
|
|
96
104
|
inner_wall_border=_adjust_color(
|
|
97
105
|
_DEFAULT_ENVIRONMENT_PALETTE.inner_wall_border,
|
|
@@ -99,7 +107,9 @@ _GLOOM_ENVIRONMENT_PALETTE = EnvironmentPalette(
|
|
|
99
107
|
saturation=0.75,
|
|
100
108
|
),
|
|
101
109
|
outer_wall=_adjust_color(
|
|
102
|
-
_DEFAULT_ENVIRONMENT_PALETTE.outer_wall,
|
|
110
|
+
_DEFAULT_ENVIRONMENT_PALETTE.outer_wall,
|
|
111
|
+
brightness=0.8,
|
|
112
|
+
saturation=0.75,
|
|
103
113
|
),
|
|
104
114
|
outer_wall_border=_adjust_color(
|
|
105
115
|
_DEFAULT_ENVIRONMENT_PALETTE.outer_wall_border,
|
|
@@ -181,8 +191,6 @@ __all__ = [
|
|
|
181
191
|
"YELLOW",
|
|
182
192
|
"ORANGE",
|
|
183
193
|
"DARK_RED",
|
|
184
|
-
"TRACKER_OUTLINE_COLOR",
|
|
185
|
-
"WALL_FOLLOWER_OUTLINE_COLOR",
|
|
186
194
|
"DAWN_AMBIENT_PALETTE_KEY",
|
|
187
195
|
"INTERNAL_WALL_COLOR",
|
|
188
196
|
"INTERNAL_WALL_BORDER_COLOR",
|