README files added.
This commit is contained in:
44
README.md
Normal file
44
README.md
Normal file
@@ -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.
|
154
levels/README.md
Normal file
154
levels/README.md
Normal file
@@ -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.
|
@@ -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")
|
||||
|
Reference in New Issue
Block a user