Recreated my previous code using floats in case the issue was overflowing that could be mitigated using floating point precision - but still doesn't work. Pulling my hair out.
Fixing the reduced palette
Index number 254 remapped from a dark browny-orange to a dark blue. Otherwise unchanged; most of the assets we have currently created do not use the index for its previous purpose. It would be nice to get this merged quickly so that there is certainty about what we use going forward.
http://i.imgur.com/9xuQApq.png
root/toaster/fixedpal contains every necessary asset file, including the SLADE translation lump.
See merge request !77
Charabilities MK3 - The third and probably not last branch of character stuff
Been too long since I've made a merge request. This isn't quite done, but I'd consider it... done ENOUGH that I want to work on something else, and keeping it seperate from master will just cause everyone hassle.
Abilities:
* CA_BOUNCE. Bounce on basically anything! Break bustable blocks downwards! Don't take damage from below, unless it's death pit damage, in which case eat shit! Averages to double the jumpheight of the player.
* CA_TWINSPIN can now break bustable blocks up and down in addition to breaking horizontally. Also, a spring boost.
* CA_HOVER now uses seperate states/frames, has dashmode support, and falls slowly whilst not moving very quickly.
* CA_SLOWFALL gets the CA_HOVER states/frames and dashmode support too.
* CA_HOMINGTHOK now targets Sea Egg fakes and egg guard shields, and uncurls when there's no target. It also shows a target icon.
* CA2_GUNSLINGER. Uses revitem as bullet. Autotargets within range/angle limitations on similar rules to homing attacks. Shows a target icon.
* CA2_MELEE can now break bustable blocks up and down in addition to breaking horizontally, and plays much more fluidly. Also, a spring boost.
* CA2_SPINDASH allows you to roll when landing on any surface when moving fast enough unless you have PF_THOKKED. Also, fixed you being able to roll forever.
Conversions:
* CA_DASHMODE -> SF_DASHMODE
* CA2_MULTIABILITY -> SF_MULTIABILITY
* player.jumping -> PF_STARTJUMP
* pw_ingoop -> CR_BRAKGOOP
* PF_NIGHTSMODE -> CR_NIGHTSMODE
* PF_SUPERREADY -> P_SuperReady()
* SPR2_SPIN -> SPR2_ROLL
* SPR2_DASH -> SPR2_SPIN
* SPR2_PEEL -> SPR2_DASH
* SPR2_SSTD, other super frames -> see below...
Others:
* Super sprites are now seperated from normal sprites via using S_SUPER lump in a skin, rather than being an explicitly named super version of the lump (which required a ton of effort from us to make super versions of all sprite2 names). Accessible via FF_SPR2SUPER.
* Unlockable skin stuff is now netcode synchronised. We won't be repeating 2.1's bullshit if we can help it!
* Host can't switch their skin if there's any restrictions applied, since that was unfair.
* Unique Attraction Shield sound instead of reusing S3nK Thundercoin sound.
* Character select menu code is defuckened.
* Fixed zoom tube camera distance being borq'd by a bug.
* Hudnames are now padded if they're less than 5 symbols long.
* Instead of jump damage when jumping being controlled directly by SF_NOJUMPDAMAGE, it now indirectly controls it via applying the flag PF_NOJUMPDAMAGE.
* SF_FASTEDGE. Does... a fast edge animation, really.
* Fixed some oversights with the SPR2isation of NiGHTS.
* P_SpawnLockOn(player_t player, mobj_t lockon, statenum_t state) function for Lua allowing the homing target visualisation stuff to be done locally without performing horrible, horrible hacks.
* Objects and sounds for the cork, which CA2_GUNSLINGER's main toter uses.
<root>/toaster/charabilities/ has the testing files outside of patch.dta, which is in master.
* srb2win_branch_charabilities.exe.
* player.dta - can't be used with master executables because of sprite2 renaming plus super stuff.
* socchar.wad - very simple WAD which helps test unlocks for the purpose of netplay.
Please let me know if you have a thunk.
See merge request !76
Command-line skin selecting fix
Fixed http://mb.srb2.org/showthread.php?t=42312.
Also, fixed being able to change your skin colour during credits/cutscenes in singleplayer.
See merge request !158
Revamped Level Select (platter view)
Seriously revamped every level select instance in the game to use a more attractive and easier to navigate platter view, including:
* Game CLEAR! save (Title/Pause menus)
* Secrets Menu (including custom ones)
* Record Attack/NiGHTS Mode
* Server creation (Online/2P)
* MP Pause level select (Online/2P)
As a result, the layout of the last three above menus has been changed to varying degrees of difference.
Also, bonus feature: using level select (or MAP MAPxx without -force) in Co-op multiplayer won't reset your score, will keep any lives you have above the startinglives variable, and will not take away all your emeralds. The -force thing prevents both warping directly to special stages to rack up the emeralds AND ensures there IS a way to start a new game.
Check out <root>/!LatestSRB2Files/srb2win_branch_levelselect.exe with the latest patch.dta to see more.
Also, LF2_WIDEICON lets you do this. https://gfycat.com/MenacingClearAngora
See merge request !68
Suggested default settings
Making a merge request for suggested new default settings, because saying "hey, I think this would be a better default, you guys should try it" in IRC won't actually get people to give you opinions on them ;p
Camera distance is 160 now, height is 25, and speed is 0.3 (previously 128, 20, 0.25, respectively). Mouse sensitivity on both axes is now 12, previously 35. The default move/look/jump/spin keys is Mystic's proposed scheme from the New Player Experiences topic (https://mb.srb2.org/showthread.php?t=42095).
Camera settings also now can save to your config.cfg, and they won't try resetting back to the default at every chance it gets. (~~As a side effect, analog mode won't have higher cam_dist anymore. Poor analog mode, no one cries for you.~~ Now increases cam_dist in analog mode by x1.2!) This makes it so everything that's different can be easily reverted back to the older setting.
Test exe in my folder, <root>/TehRealSalt/srb2win_changed-defaults.exe
See merge request !75
* Getting hit whilst on a swinging mace doesn't send you off in roll/jump state.
* P_GetJumpFlags replaces a bunch of copypasted code.
* Homing attacking a spring sends you directly on its path, rather than rocketing off in the direction you were preiously hurtling in.
Linedef type 443 (Call Lua Function) fix
Fix for https://mb.srb2.org/showthread.php?t=42491
Note that the crash reported occurs only if Lua has been initialized (by having a Lua script loaded) and a LinedefExecute hook function has been added.
See merge request !171
Screenshot slots fix
Fix for this bug: https://mb.srb2.org/showthread.php?t=42508
The game should now print an error saying all 10000 slots have been used up. It was already there funnily enough, just someone goofed up in the code for finding the next screenshot name to use.
See merge request !170
Level completion emblems
Simple port of something I made for a 2.1 exe mod that Mystic mentioned needed doing on the 2.2 Priorities topic (http://mb.srb2.org/showpost.php?p=790613&postcount=4). Adds emblem type "map", which gives you an emblem upon beating the map it's for.
Var sets specific condition flags on top of normal completion; 1 or ME_ALLEMERALDS for all Chaos Emeralds, 2 or ME_ULTIMATE for Ultimate mode, and 4 or ME_PERFECT for Perfect Bonus. These can be combined with each other, but they do not all need to be done in one shot; an Ultimate + Perfect emblem isn't impossible as they can be done in separate runs. (This can easily be toned back down to a single choice/removed entirely if requested; these were added simply because it was easy to implement for modders.)
Criticism on the way it's coded and/or how it is implemented is highly encouraged. Test wad is <root>/TehRealSalt/levelemblems.wad, pre-compiled exe is <root>/TehRealSalt/levelemblems.exe.
See merge request !74
Analog mode's camera is now x1.2 of your actual cam_dist setting,
instead of being strictly 192. "analog on" seems to reset this modifier
every once in a while, but "useranalog on" prevents this. The wiki
itself says that you should only change useranalog though, so it
shouldn't be too big of a deal.