- What permissions do you give others to modify and/or maintain your submission?
- Modify: ASK ME - Maintain: YES - Others must ask me for permission before modifying my submission or use it in their own work, and I reserve the right to say no for any reason. I do, however, give permission for my entire submission to be maintained by others.
- I made sure my file(s) follow the Submissions Guidelines
- Yes
- I named my file(s) correctly (see Filename Conventions)
- Yes
Silver leaps through time to once more end up in our cursed timeline!
But this time, he's got a whole 300 something polished up sprites, some suntan, and has honed his telekinetic powers!
Abilities & Tips:
Shield Abilities:
Silver cannot use regular Shield abilities. Instead, they will enhance his Psycho Boost!
I grant explicit permission to STJr to port this character going forward should I not be here to do it myself or unreacheable for another major release.
Credits:
Supporters / CoAuthors
But this time, he's got a whole 300 something polished up sprites, some suntan, and has honed his telekinetic powers!
Abilities & Tips:
- Float: Double jump and hold jump to float. You can start floating again after letting go if you still have energy.
- PsychoBoost:While floating, tap spin to start boosting forward. You can adjust your height with the movement keys. In this state, you will destroy spikes, floors, walls and weak enemies. Be careful, this ability uses a lot of energy up!
- Tip: If you hit the floor while using Psycho Boost, you will start spinning.
- Telekinesis:On ground, tap spin near targets (marked by a teal arrow) to lift them. Press spin again to toss them. If more targets are nearby when you throw, they will automatically home in to deal damage.
- Tip: You can use the Ringslinger weapon select buttons to throw individual objects. You can also drop them by tapping Toss Flag.
- Tip: Holding Toss Flag will enable friendly Silver players to grab you and even use you as projectile! You can press Toss Flag again to be let go off.
Shield Abilities:
Silver cannot use regular Shield abilities. Instead, they will enhance his Psycho Boost!
Whirlwind (passive):
Drastically increase the vertical angle cap of the boost, allowing Silver to travel much higher than usual.
Attraction: Magnet Dash:
After activating your boost, press spin again to dash towards nearby enemies. You can hold spin to keep chaining enemies if they are near one another!
Elemental: Dash Plummet:
Drastically increase the downwards angle cap and speed. Hold down to plummet to the ground and destroy enemies near you as you land. You are also immuned to wall bumps when going down.
You are also able to dash at full speed underwater.
Force: Force Hold:
After dashing, press and hold spin again to halt all your momentum. You can turn and adjust your vertical angle while on hold, and the energy cost is drastically reduced. Let go off of spin to redirect yourself in your chosen direction.
Armageddon: Dash Blast::
Your boost will constantly be at the maximum possible speed. Hitting a wall will detonate the shield and stun you.
Thunder: Magnet Pull:
Pulls nearby enemies into you, damaging them.
Flame: Flame Dash:
Increases your maximum boost speed as if you had constant Super Sneakers.
Bubble: Plummet Bounce:
While dashing, hold down to plummet to the ground similar to the Elemental Shield. Upon hitting the ground, you will bounce back up and will be able to start floating again.
Drastically increase the vertical angle cap of the boost, allowing Silver to travel much higher than usual.
Attraction: Magnet Dash:
After activating your boost, press spin again to dash towards nearby enemies. You can hold spin to keep chaining enemies if they are near one another!
Elemental: Dash Plummet:
Drastically increase the downwards angle cap and speed. Hold down to plummet to the ground and destroy enemies near you as you land. You are also immuned to wall bumps when going down.
You are also able to dash at full speed underwater.
Force: Force Hold:
After dashing, press and hold spin again to halt all your momentum. You can turn and adjust your vertical angle while on hold, and the energy cost is drastically reduced. Let go off of spin to redirect yourself in your chosen direction.
Armageddon: Dash Blast::
Your boost will constantly be at the maximum possible speed. Hitting a wall will detonate the shield and stun you.
Thunder: Magnet Pull:
Pulls nearby enemies into you, damaging them.
Flame: Flame Dash:
Increases your maximum boost speed as if you had constant Super Sneakers.
Bubble: Plummet Bounce:
While dashing, hold down to plummet to the ground similar to the Elemental Shield. Upon hitting the ground, you will bounce back up and will be able to start floating again.
2.5 (10/07/2020)
2.4 (23/05/2020)
Fixes:
2.3 (10/04/2020)
Fixes:
Battlemod:
2.2 (28/03/2020)
2.1 (24/02/2020)
2.0 (17/02/2020)
Initial Release (08/02/2020)
- Added brand new Shield Abilities for Silver. Check the OP for details!
- Silver config is now automatically generated and updated in luafiles/silverconfig.dat
- Fixed an issue with score being awarded in BattleMod when it shouldn't have been.
2.4 (23/05/2020)
Fixes:
- Fixed an oversight where thrown objects would consider any other object as solid on contact and get damaged. Only Solids, Enemies, Shootables and Missiles will count as collision now.
- Fixed an error in the NiGHTs code which resulted in a warning and drill afterimages not matching the player's roll angle.
- Fixed the NiGHTs drill sprites being of inconsistent sizes which caused horrible jitter with rotsprite.
- Simple Mode controls (or lmaogalog) can now use strafe keys to turn while using Psycho Boost. (This is a hack and is not 100% accurate with the actual turn keys)
- Simple Mode controls (or lmaogalog) will no longer make you activate Psycho Boost backwards if you were holding down to go down before activation.
2.3 (10/04/2020)
Fixes:
- Fixed a game freeze involving Fang dying from his own bombs thrown back at him.
- By extension, this should fix some cases where missiles thrown don't die or continuously die on another object.
Battlemod:
- Regular thrown objects no longer damage players with 1 DEF or more and will knock them back instead.
- Projectiles thrown back at you will however use their own properties to check whether or not you should be damaged.
- Thrown objects only home in for 10 tics (About 1/3rd of a second) instead of a full second.
- Fixed an issue where Silver could grab Tails' buzzes and bully him. That was fun while it lasted.
- Silver can no longer grab Amy's love hearts.
2.2 (28/03/2020)
- Battlemod:
- Fixes:
- Fixed Silver's projectiles not functionning at all in BattleMod.
- Fixed Ringslinger abilities not working at all in Ringslinger gamemodes if BattleMod was added.
- Balance changes:
- Psycho Shock base speed changed from 24 to 32. It should land more reliably.
- Psycho Boost now gets melee priority depending on how fast it's going, starting at 1 attack 1 defence, all the way up to 4 attack and 4 defence.
- Fixes:
2.1 (24/02/2020)
- Fixes:
- Fixed Silver's aura colour being wrong because of 2.2.2's new colours. This should now be future proof thanks to R_GetColorByName.
- Fixed interactions with the Skim enemies.
- Fixed a small ringslinger oversight.
- Psychokinesis:
- Thrown item speed changed from 55 to 75
- Thrown items now target the center of their targets rather than their Z position. This should make throws against moving targets much more likely to land.
2.0 (17/02/2020)
- General:
- Critical energy level increased from 1/5 to 1/4 max energy.
- Modified some sound effects.
- Added silverconfig.cfg(Included in the OP's download)
- /!\ Place this file in your SRB2 root folder, or it won't run. /!\
- This config file will run as soon as Silver is added and allows you to set your playstyle:
- 'silv_auracolor <colourname / colournumber>' Sets Silver's aura colour for multiplayer games. Set it to -1 or 'Opposite' to use your current skincolour's opposite colour.
- 'silv_invertflight <On/Off>' Inverts the vertical axis for Silver's Psycho Boost. You can now play plane simulator and insult air control.
- 'silv_throwall <On/Off>' Reverts the Telekinesis to the old behavior where all objects are thrown at once by default.
- 'silv_norollangle <On/Off>'. If set to On, disables sprite rotation on grabbed objects, which makes for a performance boost on weaker machines.
- Technically speaking, any other cvar can be set in here to adapt Silver's playstyle to your needs.
- Float:
- Fixed an oversight where landing on a Spring after dropping from a Float would leave you in your falling frames and wouldn't start energy regeneration.
- Psycho Boost:
- Added the 'silv_invertflight' command to invert flight controls. Check the Silver Config section above for more information.
- Psycho Boost now bumps off sturdy enemies such as the Castle Bot Facestabber.
- Fixed collisions with spikes and monitors not taking the Z axis into account properly.
- Psycho Boost now bumps off solid objects instead of hugging them.
- Telekinesis:
- Telekinesis now uses searchBlockmap instead of the old table method, which greatly improves performance overall.
- Grabbing multiple objects only costs a fixed 1/4 max energy instead of a variable amount.
- Telekinesis now defaults to throwing objects one at a time.
- The delay for throwing objects has been almost nullified. A 1 second delay is still applied after you throw the last object.
- This creates a way more dynamic combat gameplay for silver where the player is more in control of their individual shots.
- Single throws now display secondary targets for the remaining items you can throw.
- Single throws now properly prioritize the target closest to Silver instead of targetting whatever they felt like.
- Thrown objects now destroy walls.
- Fixed the Crawla Commander not abiding by the throw's momentum.
- Fixed the Pointy's spikeballs not following along when it was thrown.
- Fixed the psychic overlay being offset incorrectly when using models.
- Ringslinger
- Silver will begin losing energy after holding a player for too long
- Added support for CBW's Battle Mod.
- In this mod, Silver is unable to grab players by default. He must instead use his new ability, Psycho Shock, a chargeable projectile that will render any player it hits vulnerable to being grabbed for a few seconds. Charging the projectile will increase its explosion radius, potentially making multiple players vulnerable to Silver's grab.
- Modding:
- Added 'boostbump = (boolean)' field to TKextra tables. If true, Silver will bump out of his Psycho Boost state when hitting that object as if he hit a wall.
- Added 'boostcf = function(mobj_t silver, mobjt_t bumpedobject)' function to TKextra tables. This will run once when Silver bumps off an object. Will not run if boostbump isn't set.
- Added a scale field on Silver's idle objects as the 3rd index of the table. FRACUNIT is the default scale, FRACUNIT/2 will be half of the player's scale, and so on.
Initial Release (08/02/2020)
- General:
- Sprites have been remade from scratch and greatly improved upon!
- Silver's stats are now normalized to be the same as everyone else. He still has a higher jump.
- Greatly improved visual effects for Silver's abilities
- Brand new, more modern sound effects for Silver's abilities
- Added the 'auracolor <colorname / integer>' command which can change the color of Silver's visual effects. For instructions, supply no arguments.
- Psycho Boost
- Initial momentum is now fully kept when activating Psycho Boost. Running starts now actually matter!
- More momentum is kept when the Psycho Boost ends. (2/3 instead of 1/4 previously)
- Psycho Boost can now break floors. Enables Silver not to get stuck at some point of the campaign.
- The upwards vertical angle cap has been reduced. Downwards is untouched.
- Hitting the floor while boosting will make Silver spin instead of slide. Functionally, this is the same thing, but allows greater interactions with slopes.
- Telekinesis
- Arrows now show up on targets to show you what you're aiming at
- Monitors can now be auto aimed at
- Ringslinger
- If Silver takes damage, a delay is set to prevent him from firing back straight away.
- Reduced delay when grabbing a player from 2.5 to 2 seconds.
- Psycho Cuts now have a smaller hitbox
- Psycho Cuts can now destroy monitors
- Can no longer fire while a delay is active
- Weapon pickups and max ammo were drastically increased
- Individual weapon changes:
- Automatic: You can now hold the button to fire a constant stream of cuts
- Scatter: Hitbox size made consistent with every other cut. Fixed an error related to firing on walls
- Grenade: Now drops speed over time and explodes after 6 seconds. It will also bounce on walls.
- Modding:
- TBA: Wiki page containing the information below in a cleaner form if demand is high enough
- Keep in mind that these are only intended for use if the default behaviors don't satisfy you, they are in no way required for your mod(s) to support Silver
- For custom HUDs, there is now a function to draw Silver's energy bar anywhere you want!
UseCode:silv_drawBarHUD(drawer v, player_t p, int x, int y, int maxbarlen, int flags)
- You can now add custom sprites to Silver's Idle animation.
Use 'silv_addIdleSprite(table)' and 'silv_addRareIdleSprite(table)'
The format to do so is {SPR_SPRITE, FRAME}
For exemple, if I wanted to add a rare object where Silver grabs a default player frame;
Code:silv_addRareIdleSprite({SPR_PLAY, A})
- You can now add entierely new custom behaviors for objects interacting with Silver's Telekinesis and Silver in general with 'silv_addTKextra(int mobjtype, table t)'. The syntax is as follow, for exemple:
Code:/* local properties = { // telekinesis properties: nograb boolean, // sets whether the object can be grabbed noaim boolean, // sets whether the object can be aimed at with throws noroll boolean, // if true, rollangle will not be applied when this object is grabbed killonwall boolean, // if true, the object will be killed when thrown at a wall regardless of hitpoints killonfloor boolean, // if true, the object will be killed when thrown on the floor regardless of hitpoints nodamage boolean, // if true, the object cannot be damaged by throws shield = mobjtype, // MT_ constant expected to be the shield mobjtype held in mobj.tracer. // mobj cannot be grabbed for as long as their shield is valid. Used for Crushstaceans and Egg Guards. // silver specific properties: bossdamage = boolean, // if true, silver cannot use Psycho Boost or his spin jump to damage this enemy msondamage = boolean, // used specifically for Metal Sonic. Lets silver damage the boss through normal jumps only if MF_SHOOTABLE is not applied. // telekinesis related functions: grabf function(mobj_t mo, mobj_t grabber) -- runs continuously while grabber is using telekinesis on mo end, throwf function(mobj_t mo, mobj_t thrower) -- runs contunuously while mo is being thrown by thrower end, resetf function(mobj_t mo) -- runs once when mo is being reset from Telekinesis status (after a throw or being let go off of). end, shieldf function(mobj_t shield) -- runs once the frame where the shield is being grabbed. end, } silv_addTKextra(MT_MOBJTYPE, properties) */ -- exemple: local prop = { nograb = true, bossdamage = true, } silv_addTKextra(MT_BLUECRAWLA, prop) -- The above will result in every crawla being impossible to grab and damage physically for Silver.
It's also possible to supply an empty table with the function, which will enable the object type to be both grabbed and thrown at with no additional properties.
Although it's also possible to directly edit the 'silv_TKextra' table, using this function will ready the Hooks necessary to get your objects to work properly, as well as check each existing field for userdata types to avoid errors.
NOTE: This will not work if the mobjtype in question has MF_NOTHINK, MF_NOCLIP or MF_SCENERY defined in their mobjinfo as these are skipped when checking for grabbable / aimable objects - WARNING: Make sure to use a ThinkFrame to ensure the proper loading of your object modification / idle sprites addition, here is a non exhaustive exemple of a way to do it:
Code:local added -- flag that checks if we've already added our properites local function addsilverstuff() if not added -- check if we haven't already added the data. and silv_addTKextra -- this checks if silv_addTKextra exists, AKA if Silver has been loaded -- custom properties / idle sprites go here. -- do NOT use P_Random functions here, as the properties here need to be synched. added = true -- set this flag to true end end silveraddstuff() -- attempt to load properties on addon load. If Silver was already added beforehand, this saves us the troub if not added -- we failed to add the data on script load addHook("ThinkFrame", do addsilverstuff() end) end -- So then we'll try to load it every frame until it works. This is the least desirable outcome but ultimately has no impact
- Splitscreen is only partially supported. Many visuals and HUD elements will not display properly under certain circumstances (Mostly Ringslinger related). Nothing I can do to my knowledge.
- Lua amper the stability of larger netgames, so you may experience more frequent synchronization failures / netgame-specific framerate drops.
I grant explicit permission to STJr to port this character going forward should I not be here to do it myself or unreacheable for another major release.
Credits:
- Snu : Spriting (and motivational) assistance (touch ups)
- MotorRoach : Spriting assistance (original standing rotation / character select portrait)
- Inazuma : Spriting assistance (character select animation)
- zxyspku : Spriting assistance (walk animation)
- Q.T.D. : Spriting assistance (idle stance)
- Look I can't list all the testers this would get too long, but you know you're listed there if you helped!
Supporters / CoAuthors
I already think there are few instances where Silver even wants to interact with enemies, but this is a problem with SRB2's design itself where enemies can just be completely ignored as there is little benefit to wasting your time with them, and I'm not sure if I can ever address this properly for Silver.