Compare commits

1 Commits

Author SHA1 Message Date
Storm Dragon 1c442261d9 Migrate to libstormgames systems. 2025-09-16 01:51:36 -04:00
118 changed files with 977 additions and 2960 deletions
-7
View File
@@ -6,9 +6,6 @@ https://git.stormux.org/storm/wicked-quest
Angus Kola: Beta testing.
https://angus.kola.casa
Chris Wright: Beta testing.
https://www.youtube.com/channel/UCDWOwfwJ18lQiXRubVBEFkw
Deedra Waters: Beta testing.
Ember Wolfe: Sound effects, beta testing, and visual verification of messages.
@@ -40,10 +37,6 @@ https://youtu.be/3F8C713XUj8
Wayward Ghouls:
http://teknoaxe.com/Link_Code_3.php?q=1469
Spider's Domain
Alexey Kasyanchuk (DEgITx) [ https://degitx.com/links ]
https://creativecommons.org/licenses/by/4.0/
Sound Effects:
_finish_level.ogg uses Shock Stab 08 by nomiqbomi from freesound. License Creative Commons 0.
+1 -5
View File
@@ -35,9 +35,6 @@ Alt+Home: Ambience volume increase.
Alt+Delete: Game sounds volume decrease.
Alt+Insert: Game sounds volume increase.
Backspace: Pause or resume the game.
F1: Navigate to previous speech message in history.
F2: Repeat current speech message.
F3: Navigate to next speech message in history.
Notes
@@ -54,8 +51,7 @@ The game automatically saves your progress when you have collected 200 bone dust
Game Modes
Story Mode: Traditional level-by-level progression through predefined stages. Your progress is saved, and you can collect extra lives by gathering 100 bone dust.
At 200 bone dust the game will save allowing you to load from the current level.
Story Mode: Traditional level-by-level progression through predefined stages. Your progress is saved, and you can collect extra lives by gathering bone dust.
Survival Mode: An endless challenge where you face wave after wave of increasingly difficult enemies. Each wave gets progressively harder with stronger enemies, faster spawn rates, and longer levels. Level length starts at 300 units and increases by 20 units per wave (capped at 500 units). In survival mode:
No saving or loading - each run is a fresh start
+140 -895
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -123,7 +123,7 @@
"x": 135,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 4000,
"range": 30
},
{
@@ -254,7 +254,7 @@
"x": 310,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 4000,
"range": 30
},
{
+4 -4
View File
@@ -61,7 +61,7 @@
{
"type": "spider_web",
"x": 65,
"y": 1
"y": 0
},
{
"x": 75,
@@ -130,7 +130,7 @@
"x": 155,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 4000,
"range": 30
},
{
@@ -143,7 +143,7 @@
{
"type": "spider_web",
"x": 180,
"y": 1
"y": 0
},
{
"x": 190,
@@ -265,7 +265,7 @@
{
"type": "spider_web",
"x": 355,
"y": 1
"y": 0
},
{
"x_range": [365, 380],
+12 -12
View File
@@ -25,7 +25,7 @@
"x": 50,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
@@ -38,7 +38,7 @@
{
"type": "spider_web",
"x": 70,
"y": 1
"y": 0
},
{
"x_range": [75, 85],
@@ -55,7 +55,7 @@
"x": 100,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
@@ -85,7 +85,7 @@
"x": 150,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
@@ -117,7 +117,7 @@
"x": 200,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
@@ -142,13 +142,13 @@
{
"type": "spider_web",
"x": 220,
"y": 1
"y": 0
},
{
"x": 250,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
@@ -169,7 +169,7 @@
"x": 300,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
@@ -194,7 +194,7 @@
"x": 350,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
@@ -220,7 +220,7 @@
"x": 400,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
@@ -245,7 +245,7 @@
"x": 450,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
@@ -266,7 +266,7 @@
"x": 500,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
+14 -14
View File
@@ -26,13 +26,13 @@
"x": 50,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
"type": "spider_web",
"x": 35,
"y": 1
"y": 0
},
{
"x_range": [55, 60],
@@ -54,7 +54,7 @@
"x": 100,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
@@ -91,13 +91,13 @@
"x": 150,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
"type": "spider_web",
"x": 135,
"y": 1
"y": 0
},
{
"x_range": [155, 160],
@@ -110,7 +110,7 @@
"x": 200,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
@@ -154,7 +154,7 @@
"x": 300,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
@@ -174,13 +174,13 @@
{
"type": "spider_web",
"x": 335,
"y": 1
"y": 0
},
{
"x": 350,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
@@ -202,7 +202,7 @@
"x": 400,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
@@ -241,7 +241,7 @@
"x": 500,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
@@ -254,13 +254,13 @@
{
"type": "spider_web",
"x": 525,
"y": 1
"y": 0
},
{
"x": 550,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
@@ -281,7 +281,7 @@
"x": 600,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 3000,
"range": 30
},
{
+1 -1
View File
@@ -107,7 +107,7 @@
"x": 120,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 5000,
"range": 15
},
{
+1 -1
View File
@@ -229,7 +229,7 @@
"x": 175,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 4500,
"range": 20
},
{
+1 -1
View File
@@ -125,7 +125,7 @@
"x": 90,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 4500,
"range": 20
},
{
+2 -2
View File
@@ -76,7 +76,7 @@
"x": 55,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 4000,
"range": 25
},
{
@@ -198,7 +198,7 @@
"x": 175,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 4000,
"range": 25
},
{
+6 -6
View File
@@ -18,7 +18,7 @@
{
"type": "spider_web",
"x": 15,
"y": 1
"y": 0
},
{
"x_range": [20, 35],
@@ -75,7 +75,7 @@
"x": 60,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 4000,
"range": 30
},
{
@@ -99,7 +99,7 @@
{
"type": "spider_web",
"x": 90,
"y": 1
"y": 0
},
{
"x_range": [95, 98],
@@ -194,7 +194,7 @@
"x": 175,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 4000,
"range": 30
},
{
@@ -214,7 +214,7 @@
{
"type": "spider_web",
"x": 205,
"y": 1
"y": 0
},
{
"x_range": [215, 230],
@@ -281,7 +281,7 @@
{
"type": "spider_web",
"x": 290,
"y": 1
"y": 0
},
{
"x_range": [295, 298],
+10 -10
View File
@@ -17,7 +17,7 @@
{
"type": "spider_web",
"x": 10,
"y": 1
"y": 0
},
{
"x": 15,
@@ -57,7 +57,7 @@
{
"type": "spider_web",
"x": 40,
"y": 1
"y": 0
},
{
"x": 45,
@@ -126,7 +126,7 @@
"x": 100,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 4000,
"range": 30
},
{
@@ -147,7 +147,7 @@
{
"type": "spider_web",
"x": 120,
"y": 1
"y": 0
},
{
"x_range": [125, 145],
@@ -196,7 +196,7 @@
{
"type": "spider_web",
"x": 175,
"y": 1
"y": 0
},
{
"x_range": [180, 200],
@@ -256,13 +256,13 @@
{
"type": "spider_web",
"x": 220,
"y": 1
"y": 0
},
{
"x": 225,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 4000,
"range": 20
},
{
@@ -293,7 +293,7 @@
{
"type": "spider_web",
"x": 255,
"y": 1
"y": 0
},
{
"x_range": [260, 275],
@@ -334,7 +334,7 @@
{
"type": "spider_web",
"x": 305,
"y": 1
"y": 0
},
{
"x_range": [310, 325],
@@ -371,7 +371,7 @@
{
"type": "spider_web",
"x": 355,
"y": 1
"y": 0
},
{
"x_range": [360, 375],
+2 -2
View File
@@ -95,7 +95,7 @@
"x": 115,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 4000,
"range": 30
},
{
@@ -217,7 +217,7 @@
"x": 270,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 4000,
"range": 30
},
{
+4 -4
View File
@@ -17,7 +17,7 @@
{
"type": "spider_web",
"x": 15,
"y": 1
"y": 0
},
{
"x_range": [25, 45],
@@ -111,13 +111,13 @@
{
"type": "spider_web",
"x": 140,
"y": 1
"y": 0
},
{
"x": 150,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 4000,
"range": 30
},
{
@@ -244,7 +244,7 @@
"x": 330,
"y": 0,
"type": "catapult",
"fireInterval": 5000,
"fire_interval": 4000,
"range": 30
},
{
-59
View File
@@ -1,59 +0,0 @@
import os
import sys
import shutil
# Runtime hook to move directories and files from _internal to parent directory
if hasattr(sys, '_MEIPASS'):
# We're running from a PyInstaller bundle
bundleDir = os.path.dirname(sys.executable)
internalDir = sys._MEIPASS
# Directories to move from _internal to parent
# All these use the parent directory for easier user customization
dirsToMove = ['sounds', 'libstormgames', 'levels']
# Directories to copy (keep in both locations)
# None needed - everything now uses parent directory
dirsToCopy = []
# Files to move from _internal to parent
filesToMove = ['files', 'logo.png']
# Move directories
for dir_name in dirsToMove:
internalPath = os.path.join(internalDir, dir_name)
targetPath = os.path.join(bundleDir, dir_name)
# Only move if source exists and target doesn't exist
if os.path.exists(internalPath) and not os.path.exists(targetPath):
try:
shutil.move(internalPath, targetPath)
except Exception as e:
# Silently fail if we can't move - game will still work from _internal
pass
# Copy directories (keep in both locations)
for dir_name in dirsToCopy:
internalPath = os.path.join(internalDir, dir_name)
targetPath = os.path.join(bundleDir, dir_name)
# Only copy if source exists and target doesn't exist
if os.path.exists(internalPath) and not os.path.exists(targetPath):
try:
shutil.copytree(internalPath, targetPath)
except Exception as e:
# Silently fail if we can't copy - game will still work from _internal
pass
# Move files
for file_name in filesToMove:
internalPath = os.path.join(internalDir, file_name)
targetPath = os.path.join(bundleDir, file_name)
# Only move if source exists and target doesn't exist
if os.path.exists(internalPath) and not os.path.exists(targetPath):
try:
shutil.move(internalPath, targetPath)
except Exception as e:
# Silently fail if we can't move - game will still work from _internal at least enough to exit.
pass
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More