From 70d02a8db3302a83b03df8408a789e1a8634b982 Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Sat, 15 Feb 2025 13:53:16 -0500 Subject: [PATCH] README files added. --- README.md | 44 ++++++++++++++ levels/README.md | 154 +++++++++++++++++++++++++++++++++++++++++++++++ wicked_quest.py | 1 + 3 files changed, 199 insertions(+) create mode 100644 README.md create mode 100644 levels/README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..33c272b --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +# Wicked Quest + +Welcome to Wicked Quest, an audio only Halloween themed side scroller. + + +## Features + +- 13 levels of action packed game play +- Multiple keyboard layouts +- Multiple boss battles and enemy types +- Collectible items and power-ups throughout each level +- Customizable levels, add your own levels for endless fun. + + +## installation + +The game uses git lfs, so you will need to have git-lfs installed. You will need to type once: + + git lfs install + +To clone the game: + + git clone --recurse-submodules https://git.stormux.org/storm/wicked-quest + +Make sure the files in sounds are actually sound files, if they are not, you will need to do: + + git lfs pull + +Normally this step is not necessary. You also need python 3.8 or higher. Check the requirements.txt file in the libstormgames directory for necessary packages. + + +## License + +The game is released under the terms of the GPL, there is a license file included in the git repository. For exceptions to the license terms, see the credits file in the files directory. This file can be read in game under the credits option in the menu. + + +## Instructions + +Instructions are available in game in the menu. You can also read the instructions file with a text editor, it is located in the files directory. + + +## Creating Custom Levels + +See the README file in the levels directory. Level files are in .json format. diff --git a/levels/README.md b/levels/README.md new file mode 100644 index 0000000..cf11600 --- /dev/null +++ b/levels/README.md @@ -0,0 +1,154 @@ +# Creating Custom Levels for Wicked Quest + +Want to add your own levels? It's pretty simple! Every level is a JSON file, and you can create as many as you want. + +## Getting Started + +1. Make a directory under levels/ with your level pack name: + levels/My Cool Levels/ + +2. Start with 1.json in your new directory. Each level after that is numbered in order: 2.json, 3.json, etc. + +## Basic Level Structure + +Every level needs these things: + + { + "level_id": 1, + "name": "My Level", + "description": "Set the scene for your level.", + "locked": false, + "player_start": { + "x": 0, + "y": 0 + }, + "boundaries": { + "left": 0, + "right": 200 + }, + "ambience": "Graveyard Blitz.ogg", + "footstep_sound": "footstep_stone" + } + +If you set locked to true, the player may not leave the level until all enemies have been defeated. Drop custom ambience files, e.g. music or creepy sound track in sounds/ambience. Add custom footstep sounds into the sounds directory. + + +## Adding Objects + +All objects go in an "objects" list. Here are some examples of what you can add: + +### Coins (Bone Dust) + + { + "x_range": [5, 8], + "y": 3, + "sound": "coin", + "collectible": true, + "static": true + } + +### Coffins + + { + "x": 15, + "y": 3, + "sound": "coffin", + "type": "coffin", + "item": "extra_life" + } + + Items are optional, can be extra_life, hand_of_glory, jack_o_lantern, or anything from graves. + + +### Graves + + { + "x": 35, + "y": 0, + "type": "grave", + "sound": "grave", + "static": true, + "zombie_spawn_chance": 20, + "item": "shin_bone" + } + +Zombie spawn chance is 0-100, higher means more zombies. Item is also optional, can be shin_bone, guts, or any item from coffin. + + +### Enemies + + { + "x_range": [20, 35], // patrol or hunting range + "y": 0, + "enemy_type": "goblin", // goblin, witch, ghoul, boogie_man, ghost, revenant + "health": 4, + "damage": 2, + "attack_range": 1.5, + "attack_pattern": { + "type": "hunter", + "turn_threshold": 5 + } + } + +Attacks can be "hunter" or "patrol". The "patrol" option does not use the "turn_threshold" option. The "turn_threshold" option is how quickly the hunting enemy will turn around to attack the player. Hunters will leave their area to pursue the player once he has entered the enemy's range. + + +### Hazards + +#### Skull Storm + + { + "x_range": [40, 60], + "y": 12, + "type": "skull_storm", + "damage": 4, + "maximum_skulls": 2, + "frequency": { + "min": 1, + "max": 4 + } + } + +The maximum setting is how many skulls can be falling at once. Frequence is the number of seconds that can expire before the next skull falls. + + +#### Catapult + + { + "x": 55, + "y": 0, + "type": "catapult", + "fire_interval": 4000, // milliseconds between shots + "range": 25 + } + +#### Spider Web + + { + "type": "spider_web", + "x": 15, + "y": 0 + } + +## Creating New Enemies + +Want to add a new enemy type? You'll need two sound files in the sounds directory: +- enemy.ogg - The sound the enemy makes while alive +- enemy_dies.ogg - The death sound + +For example, to add a werewolf enemy: +- Add werewolf.ogg and werewolf_dies.ogg to the sounds directory +- Use "werewolf" as the enemy_type in your level file + +## Tips + +- Add at least 33 coins per level +- Space out hazards to give players a chance +- Enemy health: + - Regular enemies: 4-6 HP + - Mini-bosses: 8 HP + - Bosses: 40+ HP +- Lock boss levels with "locked": true +- Test your levels thoroughly! + +Check out the Wicked Quest levels for more examples. diff --git a/wicked_quest.py b/wicked_quest.py index 0448d88..9193b47 100644 --- a/wicked_quest.py +++ b/wicked_quest.py @@ -179,6 +179,7 @@ class WickedQuest: report.append(f"Final Score: {self.player.scoreboard.get_score()}") if self.player.scoreboard.check_high_score(): + pygame.event.clear() self.player.scoreboard.add_high_score() cut_scene(self.sounds, "game_over")