See Overview page for up-to-date info.
What's this? A dragon??
It's Spyro the dragon, in all of his purple glory and with many of his abilities too.
After some finagling in Blender to render out sprites for Radicalicious' "Spyro the Hedgehog" mod, I took it upon myself to code in some (questionably buggy) enhancements. Basically fork.
(As in why is Spyro in Sonic's world? What's all this about? Where's Sparx?)
Spyro partakes in a teleportation experiment that's being conducted by the Professor, however something weird happened and now Spyro is transported into Sonic's universe (probably something to do with Eggman's diddling with that asteroid). Separated from Sparx, Spyro must rely on collecting rings to keep himself safe while also avoiding the various hazards in Sonic's world. Spyro, with the help Sonic and his buddies, must reach Eggman's base, as that is where a teleporter is believed to be located that can return Spyro home.
- Glide & Hover: Spyro can glide forward in the air by pressing the Jump button while airborne, to stop gliding, press the Custom2 button to end your glide with a brief hover. The Hover move is great for just reaching distant platforms and to better stop above a specific spot.
- Fire breath: Press the Custom1 button to breath fire in front of you. The flames don't travel far however they're fairly effective in safely dispatching enemies. Certain enemies are not affected by your flames though. (Eggman is very inconsistent on the metals he uses to design his robots)
- Charge: Press and hold the Spin button to charge ahead with speed. Spyro's horns are robust, able to at least damage some relatively large enemies and break through bustable walls, however others enemies can't be charged at due to their features such as any spikes they have on them. Try not to get robusted by them.
- Headbash: Press the Custom2 button while in the air after a Hover to dive at the ground with a headbutt. This move is great for quick descents and can bash through bustable floors. This move can also be used to defeat enemies.
- Bash-Rollout: When bashing down towards the ground hold the Spin button to roll ahead a short distance. This move is useful for getting under low gaps that require to player to be rolling.
NOTE: This move is not enabled by default, you need to enable it with the "rolloutavailible" console variable.
- Swim: Hold the Jump button while underwater to ascend. Be careful as Spyro is vulnerable to drowning while in Sonic's world, what with Sparx not being there to help. You can also charge underwater to defeat some enemies and move quickly, however Spyro will quickly descend deeper when you do this and can make regaining upward momentum difficult.
- Supercharge: If Spyro has the Super Sneakers powerup he can charge at even greater speeds. If he can keep the supercharge going he will enter dash mode and can charge through spikes and above water.
Spyro can use the power of some shields to enhance his abilities.
- Flame Shield & Elemental Shield: These shields will give Spyro the Superflame. Instead of the normal fire breath you will shoot a powerful fireball that can hit any enemy (that is vulnerable to missiles). The Flame Shield's flame drop ability will activate when you headbash.
- Whirlwind Shield: This shield will enhance Spyro's gliding abilities. His descent rate is significantly slower and can get back into a glide a bit faster after a hover. Press Spin button to charge ahead and use the shield's wind jump ability.
- Bubble Shield: This shield's bubble bounce ability will activate when you headbash the ground.
- Armageddon Shield: This shield's explosive screen nuke will activate when you headbash the ground.
- Attraction Shield & Electric Shield: These shield will allow Spyro to shoot an electric bolt. A more powerful, larger bolt can be shot if charged up by holding the Custom 1 button then releasing when ready.
- Force Shield: This shield's horizontal momentum stopping power will activate when you start your headbash.
- Flameshot - Cost 9 rings. Press the Fire button to have Spyro fire a brief stream of Superflame fireballs. This move is pretty effective in going through enemies, and the flames left behind is dangerous to those without a Flame or Elemental Shield or any other kind of fire protection (including you!). Only available when the BattleMod is loaded.
- Spyro's headbash is able to harm other players in battle mode.
Spyro can become superpowered when he has all of the Chaos Emeralds.
- "Superfly": Spyro can "fly" by repeatedly pressing the Jump button, he can also immediately get back into a glide after a hover. His descent rate is significantly slower than even the what you get from the Air Shield.
- Superflame: Spyro can shoot these powerful fireballs along with his fire breath without the need of some shield that interferes with his charge move.
- Supercharge: Spyro can supercharge without the need of some crusty old pair of "Super Sneakers".
Spyro showing off some of his moves:
Clever gliding and hovering at Red Volcano:
Property damage with the Superflame:
Enhanced gliding with the Air Shield:
Flameshot ability when paired with BattleMod:
*Try not burn yourself, Spyro isn't naturally Fireimmune!
Clever gliding and hovering at Red Volcano:
Property damage with the Superflame:
Enhanced gliding with the Air Shield:
Flameshot ability when paired with BattleMod:
*Try not burn yourself, Spyro isn't naturally Fireimmune!
- Sparx, your dragonfly buddy, is not here to help (yet). Without Sparx's protective magic Spyro is especially vulnerable to the hazards in Sonic's world. The rings can keep Spyro safe from most harm however he is still at risk of drowning, crushing, and other hazards.
- Certain enemies either can only be charged OR flamed, use caution when around enemies. A quiet ping sound will play when you try to torch nonflammable enemies.
- Make sure you commit to Spyro's hover; it's difficult to get back into a glide after a hover.
- Spyro is very slow compared to the rest of the cast, however he makes up the lack of speed with his excellent maneuverability.
- Don't charge or glide into walls you'll bonk and lose time or irreparably mess up your glide.
- Spyro can glide faster (and farther) if you get a charging start.
- Some shields can interfere with Spyro's movement abilities so if you value maneuverability over whatever benefits they provide it would be wise to avoid having a shield on him.
- Think you're stuck and don't know where to go? Try backtracking and search for alternate routes; Spyro can headbash through bustable floors and charge through bustable walls so keep an eye out.
- As a magical dragon, the energy coming from the Black Rock asteroid can enhance certain abilities or give Spyro additional powers. Keep an eye out to see what Spyro can do while on the asteroid, especially around the core.
- The attached .zip file contains a .rtf file with a table of what enemies are chargeable and/or flammable.
Notes, Bugs, Todos, and other Quirks:
- Spyro can reasonably complete all the normal singleplayer maps from all the hours of playtesting and debugging. The challenge maps may require the Bash-Rollout move depending on your preferred route.
- Spyro is (mostly) Multiplayer safe. His flames and charge attack can harm other players. Proper Battle mode support is in the future once I figure out how it all works.
- Spyro's headbash won't enhance his bounce momentum and is especially ineffective on springs. Don't try to headbash springs you won't get far.
- Spyro can turn on dime when gliding (and charging when "spyrochargeturn" is set to 0), all ready for exploitation. This ain't right but I can't be arsed to figure out how to fix it.
- Spyro can charge right after a hover even though he normally cannot in his games. You'll feel like a cool fast boi speedrunner once you get it down. You'll then wish you can do that in his normal games.
- Same goes for headbashing, though the Bash-Rollout move mitigates it a little.
- Spyro can can occasionally be hit while charging at an enemy while the enemy is approaching him, it's very noticeable on faster enemies. The enemy's collision procs probably came first before Spyro's procs, not sure what to do about it. Should be fixed in newer versions.
- Spyro's swimming ability is more in line with the base SRB2 rules than Spyro's original games, as in he will sink to the bottom rather than remain still, and cannot stay on the surface of water. You can still charge under water and move pretty fast.
- Hate bonking against walls? Turn it on/off with the "bonk" Console command (wuss).
- Spyro's sprites are relatively large. The game will chug badly when rotating his sprites. Avoid using mods that rotates his sprites like Slope Roll Angle.
- TODO: (Maybe) better Battle mode support.
- TODO(maybe): Sparx, however he is out of the scope of this project.
- TODO(maybe): More elemental breaths. Probably next when I'm ready to expand the scope for 2.0 or later.
"playstyle": either "Reignited"(1) or "Original"(0). This value tweaks the movement physics (UNUSED).
"rolloutavailable": either "Yes"(1) or "No"(0). This value allows the Bash-Rollout move.
"bonk": either "Yes"(1) or "No"(0). This value determines if Spyro will bonk against walls and obstacles while gliding or charging.
"spyrosnowflakecode": either "On"(1) or "Off"(0). This value determines if Spyro's level-specific snowflake code will run. Recommend that the snowflake code be turned off in some add-on levels.
"spyrolvlmsrace": any integer number. This value represents the map number for the Metal Sonic race level. Admin only.
"spyrolvlmsboss": any integer number. This value represents the map number for the Metal Sonic boss level. Admin only.
"spyrolvlbrak": any integer number. This value represents the map number for the Brak Eggman boss level. Admin only.
"spyrospeedmul": any floating point number. This value tweaks Spyro's speed multiplier, 1.0 is normal speed. Admin only.
"spyrochargeturn": either "Yes"(1) or "No"(0). This value determines if Spyro's turning is nerfed while charging. Admin only.
"missileflame": either "On"(1) or "Off"(0). This value adds the MF_MISSILE flag to Spyro's flames, allowing Spyro to flame any shootable enemy that isn't defined as fireproof in the code. Useful for addons that add new enemies. (REMOVED AS OF 3.0)
"spyroholdflame": either "Yes"(1) or "No"(0). This value determines if Spyro can continuously breathe fire while holding CUSTOM1. Admin only.
"spyrobattlemode": "0" is no Battlemod action, "1" is to enable Flameshot action. This value tweaks how Spyro works with Battlemod. Admin only.
"spyro_jettysynfun": "Yes"(1) or "No"(0). This value determines if players playing as Spyro can use his firebreath while turned into a Jetysyn during Battlemod's Survival gamemode. Admin only.
"spyrohelp": prints out the move list that Spyro can perform.
- v1.5 -
- Initial Release (there was a lot of internal testing pre-release versions, that, and to differentiate from Radicalicious' mod)
- v1.6 -
- Fixed being able to headbash bustable floors from under them.
- Refactored some glide code to use P_SetObjectMomZ instead of directly modifying mom.z (to better cooperate with low-G sections).
- Spyro is no longler able to blow well past ~200Km/h when charging on slippery floors (it was noticable on any slippery turf of significant length).
- Slightly tweaked some charge speed related stuff
- Spyro is better able to recover back into a glide after bonking a wall.
- Spyro's flames can now harm other players (except in coop gamemode). Try not to torch your teammates!
- You won't repeatedly rack up points from torching a Hivemind.
- v1.7 -
- Fixed animation state conflicts in NiGHTS levels, fixed pivot offsets, and properly added the NiGHTS drill animation.
- v1.8 -
- Rudimentary BattleMod support.
- Transitioned to .pk3, saving about 1MB.
- Fixed that C Stack Overflow from occurring when charging certain mobjs. Apparently some kind of recursion happened where collision checks occurred when the player moved in the z-direction.
- Fixed some issues (particularly Spyro's flames doing sod-all on players) when Dirk the Husky is loaded.
- Fixed inconsistent animation on one angle of the rolling animation.
- Made charging and gliding speeds scaling-aware; smol Spyro won't zip-zoom.
- Spyro's super color is all flashy now.
- "rolloutavailible" consonle variable is now "rolloutavailable". lrn 2 speal next tiem.
- v1.9 -
- Tweaked headbash cooldown, you can perform it earlier than normal when Spyro is on the ground for a certain period of time.
- If two Spyros (or if the character skins somehow have the relevant charge booleans) manage to charge at each other they'll both bonk ineffectively.
- Fixed a bug where any Spyro player would bonk when charging/gliding if another player was running against a wall or solid obstacle.
- Refactored BattlemMod chargeable/flammable enemy table to be inserted into the main table rather than it's own table.
- v1.92 -
- Spyo's level-specific special snowflake code can now be tweaked with console variables.
- Popup Turret is now chargeable.
- Added a console variable that adds the missile flag to Spyro's normal flames, useful for situations that require proper missiles though you should try all of your other options before resorting to this.
- Added a console command "spyrohelp" to print out what moves Spyro can perform.
- v2.0 -
- Re-rendered new sprites complete with new frames.
- Added missing super transformation animation. Make sure you properly name your sprites folks.
- Spyro won't headbash the kill floor for bottomless pits.
- Made sure "spyrosnowflakecode" console variable actually does it's job.
- Spyro won't randomly damage enemies underwater via simple contact; Spyro can only damage enemies underwater while charging or with his superflame fireball.
- New console variable to multiply Spyro's speed.
- v2.1 -
- Fixed Spyro's hover move not working after hitting a ceiling.
- Fixed some scaling-related glidespeed issues.
- Fixed Multiplayer-related audio issues.
- Nerfed Spyro's turning while charging, set the "spyrochargeturn" console variable to 0/off if you want the old insta-turn charging.
- Spyro won't aircharge or flame while headbashing.
- Spyro can now supercharge through most enemies and kill them in one hit.
- Made boss Metal Sonic chargeable, you still need to make him vulnerable first.
- Implemented electric breath attack. A simple electric bolt shot that can be charged up into a more powerful shot. Spyro must have the Electric/Attraction shield on him to use.
- v2.2 -
- Fixed Spyro's ability to aim in first person when "spyrochargeturn" is on. Don't constantly mess with PF_ANLOGMODE per tic.
- Fixed inconsistent shield-related glide descent alterations. Wind shield (and going super) should ONLY decrease the glide descent rate now.
- Shield powers are more usable. Elemental, Force, Bubble, and Armageddon shields won't activate when charging. See Shield Abilities for more details.
- Spyro's electric breath is a bit more useful; charge up the attack to fire off a longer stream of bolts.
- v2.2.1 -
- Oops, forgot about some debug print stuff, and may have possibly broke some shields for other chars. Should be fixed now.
- v2.3 -
- Updated Battlemod to support its 7.0 update.
- Tweaked some headbash cooldown stuff after bashing an enemy or if Spyro has a Bubble Shield.
- Fixed Spyro's supercolor back to purple aaaaa.
- Fixed some issues with Spyro performing his moves when he shouldn't, such as during countdowns.
- v2.4 -
- Spyro and Whirl will bonk against each other if they both ram at each other.
- Updated sounds to handle S_StopSoundByID, charging won't stop certain sounds when Spyro stops charging.
- Mitigated some framedrop spikes in NiGHTS stages by cropping out the empty space in Spyro's NiGHTS mode sprites. The game chugs when rotating large sprites.
- Added support for some map addon enemies.
- Changed around which enemies are flammable/chargeable. Robohood is chargeable, Unidus is fireproof.
- New super transformation animation.
- Fixed an instance where Spyro could bonk up walls via hovering.
- Slightly tweaked hires scale.
- Made most Eggmobile Eggman bosses chargeable.
- Fixed an issue where Spyro won't initially jump from the ground after being spring'd around on the ground by a horizontal spring.
- Fixed a longstanding issue where Spyro randomly gets hit by an enemy while charging. (or at least it should be fixed)
- Made Detons flammable.
- Tweaked Spyro's turn radius while charging.
- Forgot to remove a console-print related to a fix, at least I know it should work now.
- Tweaked how long it takes to get into dash mode while supercharging to be shorter.
- Supercharging will produce fire trails when you supercharge long enough to get into dash mode or if you're super.
- Air-charging into a spring or getting launched into the air from one while charging will put Spyro into a funny, less controllable state.
- Spyro has a slightly easier time dealing with Egg Collosseum; Spyro will bounce away when he charges into Eggman.
- The spiked sound will play if you attempt to charge through a Buzz.
- Fixed a runtime when switching to Spyro from another character.
- Spyro will be properly hit again when charging through a TNT barrel.
- Some more level addon integration, incl. OLDC Summer 2020.
- Spyro's flames will no longer harm players of the same team in team match/cft gametypes (unless if friendlyfire is on).
- Spyro's flames can now break monitors without having to enable the "missileflame" cvar or be in a non-coop gametype.
- New animation frame for when Spyro is gliding and is about to touch the ground.
- Yet more fixes to scaling-related speed issues. Never ending they are! :S
- Spyro can defeat virtually any enemy via supercharging now.
- Made charging through Egg Guard's shield less bouncy.
- Spyro can now survive underwater and in space if he somehow has Sparx with him.
- v3.0 -
- Rewrote and refactored a lot of code.
- Ditched the "playstyle" cvar. Everything is now balanced around "original" playstyle.
- Finally (hopefully) made charging scaling aware and not all zippy when Spyro is resized.
- Hurt messages for Spyro's relevant moves.
- Fixed an issue where Spyro's flames does nothing against other players when paired with Battlemod and Dirk's characters. (Something about Dirk seems to find a way break Spyro's fire breath.)
- Spyro won't try to headbash while being carried. Trying to headbash will do nothing.
- Spyro won't headbash against quicksand FOFs.
- Made it so Spyro's glide cooldown is reset if he is launched via dust devils, steam jets, springs, etc.
- Spyro's flames are officially a MF_MISSILE. Flames can now hit any shootable object unless if they're table.insert'd as non-flammable.
- Added a shield ability cooldown. Shield abilities can now be repeatedly performed after a short, few seconds cooldown. This is mostly usefull for the wind shield. Also allows Spyro to glide again after performing a shield ability.
- Force shield now halts horizontal momentum when performing a headbash.
- Metal Sonic Boss is slightly easier, but now fireproof. Spyro's flames will still force Metal Sonic to evade.
- Slight tweaks to how Spyro handles the Egg Colosseum boss. Gave Spyro I-frames after charging Eggman.
- Super Spyro won't doublejump when on the ground.
- Tweaked some momentum-related movement; aircharging won't insta-stop your horizontal momentum, but instead slowly lower your horizontal speed in exchange for downward momentum.
- Better compatibility with Momentum Mod; Spyro won't speedwalk and his charge speed should be (mostly) uncapped in theory. However the XMomentum mod only seems to actually allow Spyro maintain and gain some high charge speeds.
- Spyro can (briefly) go into a supercharge if he can somehow charge faster his supercharge speed threshold (~50 FU/T), keeping him charging at that speed is another matter to you to figure out.
- Supercharging will spawn dust until Spyro gets into dash mode.
- Tweaked some text for "spyrohelp hints" console command.
- Fixed Spyro shooting/breathing fire while his still in his waiting animation frame.
- Tweaked some animation cues.
- Spyro's snowflake code will be disabled when Battlemod is loaded.
- Fixed Battlemod overriding Spyro's runspeed variable. Spyro will now properly animate while charging underwater.
- Apparently Spyro could not be harmed by damaging floors (lava, spikes, etc.) while supercharging. Not intended so it was tweaked it a bit to be more intentional; Spyro won't be supercharging above death pits anymore.
- Spryo will now be forced into a spin if he's charging on top of a speed pad sector.
- Spyro's Superflame fireball does explosive knockback now.
- Replaced Superflame fireball explosion flames with a (hopefully) less CPU intensive clone of Brak Eggman's napalm flame crap. Additional stress testing needed..
- Superflame fireball explosion flames will now function like the Elemental Shield flames in that they can harm enemies with it's MF_MISSILE flag.
- Battlemod: Flameshot now costs 15 rings to use and has a 2 second cooldown.
- Shooting bubbles underwater makes bubbly sounds.
- Fixed Spyro bonking up walls with the Wind Shield.
- Spyro can now only breathe fire once per press of the CUSTOM1 button. Set the "spyroholdflame" cvar to "yes" if you want the old-style continue breathing fire when CUSTOM1 is held.
- Fixed Spryo being able to rapid-fire superflame while charging.
- Non-flammability/Non-zappability/Non-chargeablity can now apply to player skins. See example .lua included in .zip for how to add your object/skin to the tables.
- (Rocket) Metal and Mecha Sonic player skins are now fireproof.
- Changed how Spyro charges enemies. Instead of having to add an enemy to be chargeable, Spyro can charge any enemy that isn't the non-chargeable table. Bonking and other stuff still do their thing.
- Tweaked charging turn radius to be a bit tighter.
- Tweaked charging while in 2D mode to be a little less jank.
- Tweaked the charge jump height to be lower.
- Tweaked Spyro's supercharge speed.
- Spyro will now continue aircharging after releasing the spin button.
- Fixed Spyro not properly bonking after charging into an obstacle in some circumstances.
- Doing the bubble bounce with the bubble shield won't make that bonk sound.
- Fixed some issues when using the bubble shield.
- Fixed Spyro not being able to jump off a rollout rock when or after going underwater with it.
- Spyro can now only vertically aim his breath attacks in first-person view.
- Boss Metal Sonic is now entirely fireproof, Spyro's flamebreath will no longer force Boss Metal Sonic to evade; instead he can be forced to evade by charging at him or using other methods..
- Actually properly implemented bonking against certain non-bonkable enemies.
- Tweaked how Spyro is angled while gliding.
- Spyro's glide slope now factors in low gravity.
- Fixed Spyro being able to "glide" down through vertical wind currents.
- Tweaked some stuff with hurt messages.
- Tweaked how Spyro's normal firebreath works. Instead of starting off with MF_MISSILE it instead gets the flag when it collides with an object that is not in the nonflammable enemy table.
- Battlemod: Due to above mentioned tweak Spyro's fire breath shoudn't launch the bashables all over the stage. (Note: Bashables can sometimes still be launched in rare circumstances, usually when a flame gets it's missile flag when it's not supposed to.)
- Battlemod: Disabled Flameshot action; need to figure out how to implement a better move. Can be re-enabled by setting "spyrobattlemode" cvar to 1. Spyro seems OP enough as-is already.
- Support for Autumn 2020 OLDC.
- Tweaked how Spyro air-charges when using the flame shield.
- Fixed some issues with Spyro getting damaged by objects with MF_PAIN flag when using god mode or other circumstances when he normally should not be damaged.
- Fixed some issues with Spyro not getting damaged by missiles while charging.
- Fixed an issue with Spyro not being able to jump off the ground after being springed into a spin.
- Fixed an issue with Spyro damaging enemies when springed.
- Fixed some more consistency issues and regressions with Spyro's charge move.
- Gold and Red Buzzes can now be charged from above.
- Updated .pk3 filename.
- Tweaked aircharge speeds.
- Now works with that Coyote Time Lua script (grace period that lets you jump after running off a ledge).
- Tweaked bonking to be less sensetive so that slightly grazing a wall won't make you bonk (as much).
- Spyro's charge angle will redirect along a wall assuming he hasn't bonked yet.
- You can now use the mouse to steer Spyro's charge move.
- You can now steer Spyro's charge move while in first person with the sidemove inputs or the mouse.
- Tweaked charge steering to be a bit tighter.
- Fixed Spryo being able to charge "through" Eggman Monitor damage.
- New skin color: Purpledusk, a slightly more purple Dusk.
- Tweaked some sprites.
- Being gassed by a Canarivore now fully impedes movement.
- Battlemod: Fixed Spyro being able to charge/glide/flame if he somehow turns into a Jettysyn.
- Battlemod: Fixed an issue where Spyro's walk speed would be severly slowed in some levels.
- Battlemod: Spyro now only starts with one shield.
- Battlemod: Fixed Spyro's firebreath not harming players (again).
- Battlemod: Added some priority-related stuff to Spyro's charge and glide moves.
- Battlemod: Spyro will recoil after charging a character that's heavier than Spyro.
- Spyro can no longer vertically aim breath attacks in netgames due to sync issues.
- Hopefully any other sync issues were sorted out. (nope -_-)
- Tweaked Spyro's swimming ability.
- Fixed desync issues if Spyro is hosted on a dedicated server.
- Made ABSOUTELY sure that Spyro's snowflake code doesn't run when Battlemod is loaded.
Credits and Attributions:
Special thanks to Radicalicious for letting me use his Spyro the Hedgehog mod as a basis.
The SRB2 Discord for helping me with figure out how to detect bustable fofs in order to get headbash properly working. Forgot the names, sorry. ._.;
-Attributions from the original Spyro the Hedgehog:
Zipper, Tatsuru, Flame, CobaltBW, and Monster Iestyn, for helping Radicalicious with the coding.
SMS Alfredo, for letting Radicalicious use his code for breaking bustable blocks from his Yoshi mod.
Tempest, for helping Radicalicious make the moves feel more like the original games.
Dead, for playing through the game to tell Radicalicious what levels are possible.
Supporters / CoAuthors