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.
Files changed (48) hide show
  1. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/PKG-INFO +7 -4
  2. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/README.md +5 -2
  3. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/pyproject.toml +1 -1
  4. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/__about__.py +1 -1
  5. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/colors.py +22 -14
  6. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/entities.py +247 -47
  7. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/entities_constants.py +15 -5
  8. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/__init__.py +2 -0
  9. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/footprints.py +4 -0
  10. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/interactions.py +38 -7
  11. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/layout.py +40 -15
  12. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/movement.py +38 -2
  13. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/spawn.py +174 -41
  14. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/state.py +17 -9
  15. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/survivors.py +9 -1
  16. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/utils.py +40 -21
  17. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay_constants.py +8 -0
  18. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/level_blueprints.py +139 -24
  19. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/locales/ui.en.json +9 -1
  20. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/locales/ui.ja.json +8 -0
  21. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/models.py +11 -5
  22. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/render.py +390 -43
  23. zombie_escape-1.12.3/src/zombie_escape/render_assets.py +795 -0
  24. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/render_constants.py +25 -4
  25. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/screens/game_over.py +4 -4
  26. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/screens/gameplay.py +31 -1
  27. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/stage_constants.py +33 -16
  28. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/zombie_escape.py +1 -1
  29. zombie_escape-1.10.1/src/zombie_escape/render_assets.py +0 -542
  30. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/.gitignore +0 -0
  31. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/LICENSE.txt +0 -0
  32. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/__init__.py +0 -0
  33. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/assets/fonts/Silkscreen-Regular.ttf +0 -0
  34. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/assets/fonts/misaki_gothic.ttf +0 -0
  35. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/config.py +0 -0
  36. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/font_utils.py +0 -0
  37. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/ambient.py +0 -0
  38. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/gameplay/constants.py +0 -0
  39. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/input_utils.py +0 -0
  40. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/level_constants.py +0 -0
  41. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/localization.py +0 -0
  42. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/progress.py +0 -0
  43. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/rng.py +0 -0
  44. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/screen_constants.py +0 -0
  45. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/screens/__init__.py +0 -0
  46. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/screens/settings.py +0 -0
  47. {zombie_escape-1.10.1 → zombie_escape-1.12.3}/src/zombie_escape/screens/title.py +0 -0
  48. {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.10.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
 
@@ -25,7 +25,7 @@ classifiers = [
25
25
  ]
26
26
  dependencies = [
27
27
  "numpy",
28
- "pygame",
28
+ "pygame-ce",
29
29
  "platformdirs",
30
30
  "python-i18n",
31
31
  "typing-extensions; python_version < '3.11'",
@@ -1,4 +1,4 @@
1
1
  # SPDX-FileCopyrightText: 2025-present Toshihiro Kamiya <kamiya@mbj.nifty.com>
2
2
  #
3
3
  # SPDX-License-Identifier: MIT
4
- __version__ = "1.10.1"
4
+ __version__ = "1.12.3"
@@ -2,7 +2,12 @@ from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
4
 
5
- # Basic palette
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, brightness=0.8, saturation=0.75
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, brightness=0.8, saturation=0.75
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, brightness=0.8, saturation=0.75
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, brightness=0.8, saturation=0.75
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, brightness=0.8, saturation=0.75
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",