Commit Graph
95 Commits
Author SHA1 Message Date
andrewnakas 6fcd427bf6 Trainer 0.4.2: flip trick speed scales only the stick-speed curve (the pop keeps its height); the slow-flip switch says when a session keeps it off 2026-10-06 19:50:09 -06:00
andrewnakas 097d306a15 Trainer 0.4.2: the board bending boost no longer pays ordinary 180s (the off-the-travel rule is off as shipped and capped) 2026-10-06 15:52:25 -06:00
andrewnakas 0c2bd6cccd Trainer 0.4.1: changelog and README for the slow-flip switch and the help tips 2026-10-06 14:51:11 -06:00
andrewnakas 4d6969cbba Trainer: let slow flips stay slow (the finish-before-landing rule can be switched off), help on every control, wrapped tooltips 2026-10-06 14:46:35 -06:00
andrewnakasandClaude Opus 5.5 c3c52168e5 Trainer 0.4.0: the trick line list is called Tricklining; docs
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 13:08:10 -06:00
andrewnakasandClaude Opus 5.5 5df4c1cba0 Trainer: board bending boost with explainers; Skate 3 presets also set the older grind and pumping values
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 12:30:41 -06:00
andrewnakasandClaude Opus 5.5 e88debeaf7 Trainer: trick lines as a list of the Tune tab, with the revert rules folded away
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 12:22:08 -06:00
andrewnakasandClaude Opus 5.5 1bc00b996d Trainer: trick lines tab, play-like selector (skate. / Skate 3 Easy / Normal / Hardcore), tunable revert rules
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 12:16:56 -06:00
andrewnakasandClaude Opus 5.5 5bd986e258 Trainer: revert boost also for landings out of line with the direction of travel
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 11:49:15 -06:00
andrewnakasandClaude Opus 5.5 1c62ea4f36 Trainer: the revert boost logs each landing it judges and why
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 11:39:00 -06:00
andrewnakasandClaude Opus 5.5 afcdfafe2f Trainer: revert speed boost, ported from AutoRevertBoost by Sivaes, jaq and OVM
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 10:40:46 -06:00
andrewnakasandClaude Opus 5.5 8e03e0cdea Trainer: no limits of its own on any value; typed boxes beside the camera sliders
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 10:35:20 -06:00
andrewnakasandClaude Opus 5.5 9fabb88ed1 Trainer: a flip slowed by the trick slider gets longer catch times
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 10:26:33 -06:00
andrewnakasandClaude Opus 5.5 74f9981073 Trainer: write class values and flip curves again when the game resets them; flip speed scales seven curves
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 10:12:13 -06:00
andrewnakasandClaude Opus 5.5 eeca84efea Trainer 0.4.0 (in progress): camera tab, Skate 3 presets, grind pop dial, search, controller menu, preset sharing
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 02:34:22 -06:00
AyeZeeBB 2cdc5ee8df Fix costume merging, restrict server names, add Centrix tag
- Mod merge: rebuild a merged bundle's chunk metadata the way the game
  writes it (one record per chunk, in chunk GUID order), so costumes
  from different mods built on the same game costume keep their
  textures and meshes
- Merge audit checks that layout, and there is a new unit test for it
- Server names: only letters, numbers, spaces and - _ [ ] ( ),
  1 to 64 characters; the server browser hides servers with other names
- New Centrix tag from the backend's "centrix" list: blue and white
  name, badge and item animation, ranked after Dev and before Creator
2026-10-05 23:39:16 -05:00
Juan 23151496f1 Add chat bubbles above each skater
A player's recent chat lines show as speech bubbles above their skater: newest nearest the head, older lines stacking upward, each popping in with a slight overshoot before it fades. Emotes render as their images, a message that is nothing but a few emotes shows them jumbo, and a message longer than a handful of lines is cut with an ellipsis so one line can never wall the screen off.

Local display options live under Settings > Interface > Multiplayer (on/off, own messages, distance, duration and how many recent lines stack) and the console gains mp chat-bubbles, chat-bubbles-own, chat-bubbles-distance, chat-bubbles-duration and chat-bubbles-history.

The chat panel and the bubbles now share one rich-text module (chat_rich), and a filtered message keeps its emote names: the bad-word mask is applied, but emote tokens are put back from the original before they are parsed.
2026-10-05 22:46:40 -03:00
AyeZeeBB a9742673da log changes 2026-10-05 17:27:50 -05:00
zeex64 8403d4a548 Merge pull request #66 from wishluna/tolerant-loadout-slots
Load a saved outfit whose slots differ from the template's
2026-10-05 17:10:35 -05:00
zeex64 f262614119 Merge pull request #52 from xThrasherrr/fix/freecamfov-range
Reject freecamfov values the client would refuse
2026-10-05 17:01:23 -05:00
zeex64 2c80bf1b8c Merge branch 'main' into fix/playlist-lookup-crash-guard 2026-10-05 17:00:52 -05:00
zeex64 9f9d611f7d Merge pull request #56 from DeckardDetribine/pr/mod-music-shelf
Music: add a native "Mods" shelf above Featured in the Music Player / Playlist Manager.
2026-10-05 17:00:01 -05:00
zeex64 5cb6cb57ae Merge pull request #53 from xThrasherrr/fix/help-developer-group
Drop the nonexistent Developer group from the help text
2026-10-05 16:59:32 -05:00
zeex64 f6e191cfbd Merge pull request #48 from DeckardDetribine/pr/mod-music-artwork
Music: custom playlist and song cover artwork for mods
2026-10-05 16:57:56 -05:00
zeex64 e4a534a366 Merge pull request #72 from Vebjorhk/fix/offline-pause-menu-tab
Fix empty Social page and dead Back when reopening offline pause menu
2026-10-05 16:56:46 -05:00
zeex64 022900d9fc Merge pull request #74 from xThrasherrr/feat/server-map-pool
Let server hosts choose the map pool and rotate through it
2026-10-05 16:53:52 -05:00
AyeZeeBB de631ad9e6 leave out mods that copy store items, chat badge check
- Mods that add copies of store items under new names are no longer
  loaded. The launcher, mod manager and game say why.
- A chat line passed on by the host only shows a Dev/Creator/Homie
  badge when the player's own copy of it arrives too, so a host
  can't put one on a line that player never wrote.
2026-10-05 16:29:37 -05:00
xThrasherrr 7007ad0389 Name the missing map when leaving a session over it
The host sends the map's name with map offers and changes, since a player without the map's mod has no manifest to name it from.
2026-10-05 15:09:30 -06:00
xThrasherrr 206885fa62 Add a map pool card to the Multiplayer menu for server admins
The server now sends admins its pool and rotation with the map list, which bumps the protocol to 42: players and servers need this build to connect.
2026-10-05 14:43:12 -06:00
VebjorhkandClaude Opus 5.5 ed6b4c5aff Fix empty Social page and dead Back when reopening offline pause menu
In offline mode, closing the pause menu on Social or Custom Stuff and
opening it again showed an empty Social page, and Back did nothing until
the player switched tabs. The game reopens the page at the last position
in its own tab list (Social at position 4, the Store at position 3)
before insert() swaps the Store for Custom Stuff. Offline that swap
leaves the tab count at 5, so the menu never redraws the page.

Keep a copy of the Store tab last for a moment so the count changes and
the right page is drawn, then drop it again (trim_store). Online, and
reopening on Map, Hub or Skaters, nothing changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 22:32:44 +02:00
wishlunaandClaude Fable 5.1 96d44fc8a8 Load a saved outfit whose slots differ from the template's
A mod that adds slots to a template made every outfit saved before it
fail to load (recipe_template_mismatch / slot_mismatch), and switching
the mod off did the same to every outfit saved with it. The preset was
blocked, so the player saw the standard skater until the profile
database was edited by hand.

Match the saved outfit to the template slot by slot instead of by
position. A template slot the outfit has no item for starts on the
game's default. A saved slot the template does not have is held, like
an item from a costume mod that is not installed, and a save writes it
back beside the template's slots. Template key, template version,
scalar count and recipe count still have to match.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 12:01:20 -05:00
ReSkate local bf89ea7038 Music: preserve authored track positioning in mod playlists 2026-10-05 10:53:31 +01:00
ReSkate local 88e033b33f Music: skip the Mods shelf when no mod declares a playlist
Build the Mods shelf only when an enabled mod declares at least one playlist with songs, read from each mod's reskate-music.json. The shelf must be inserted before the native widgets bind, so it cannot wait for Featured rows to hydrate, and it should not publish an empty shelf when there is nothing to show. With no declared mod playlist the native three shelves are left as they are and a music_mods_shelf_skipped event is logged.
2026-10-05 06:51:05 +01:00
ReSkate local 2e6882ede1 Music: guard the playlist lookup against unresolved song entries
The music player's playlist walk loads a song entry, masks it and reads a flag at [rcx+0x14] before it checks the entry's identity. An unresolved or NULL entry makes that read fault and takes the game down while a playlist is built or opened.

Install a 13-byte in-place guard at the reviewed RVA 0x14f80c7 when the music contracts pass. It keeps the original flag test, shrinks the leading mov eax,0 to xor eax,eax, and adds a jrcxz that skips the dereference when the entry is NULL, landing on the loop increment. The site is matched against its contract bytes before anything is written, so an unsupported image is left untouched, and the guard is applied with VirtualProtect and FlushInstructionCache and then made read-only again.

The contract and patch bytes live with the other music contracts in Engine/Game/Build/20260929/local_music.h; the installer is Extension/Music/local_music_safety.{h,cpp}; local_music_ui.cpp invokes it from initialize_music_functions; cmake/Runtime.cmake builds it. A new dingosdk_music_safety_tests (CTest music_safety) pins the contract length, the decoded instructions and the branch target arithmetic without needing the game.
2026-10-05 06:31:13 +01:00
AyeZeeBB 5bfe4f7bfa tag preview, separate switches and per-item colors
- Split the single switch into "Show my tag" and "Show my items", and
  show the tag as chat and nametags draw it.
- Color whatever is equipped instead of the one hoodie and pink board:
  top, bottoms, shoes, socks, hat, glasses, outfit, costume, deck, grip
  tape, trucks and wheels, each set on its own.
- Each item can use its list's animation (rainbow, red or gold), a
  gradient between two picked colors, one solid color, or be off.
- The choices travel with the player's appearance so everyone sees them.
  Protocol version 41.
2026-10-05 00:00:45 -05:00
ReSkate local d4d3549799 Music: keep shelf code out of playlist UI module 2026-10-05 05:21:21 +01:00
ReSkate local 96cd684e20 Music: isolate native shelf implementation 2026-10-05 05:20:49 +01:00
ReSkate local 916e281e69 Music: preserve artwork insertion context 2026-10-05 05:15:17 +01:00
ReSkate local 81f3a77a25 Music: isolate shelf helpers from artwork UI hunk 2026-10-05 05:15:06 +01:00
ReSkate local e145a67db9 Music: add a native Mods shelf above Featured
Create independent anchored and tile-list models before native widget binding.
Populate Mods from Featured rows with mod playlist IDs while retaining native
presentation and actions. Leave existing playlist contexts and cosmetic
ownership unchanged.

Document the native UI model flow, verified loader entry points, typed
publication, and inspection workflow for future modders.
2026-10-05 05:04:37 +01:00
AyeZeeBB c930b512e6 Backend lists for tags, cosmetics and bans
- Read Dev / Creator / Homie Steam IDs from api.reskate.dev instead of the hardcoded list
- Creator (red) and Homie (gold) tags and hoodie/board colours; Admin tag is now pink
- Global bans: lobby hosts and dedicated servers turn banned players away
  ("global_bans": false in ReSkateServer.json opts a server out)
- SPECIAL menu page for listed players to hide their own tag and items
- Fix hoodie and board keeping the animated colour after the animation turns off
- Multiplayer protocol 39 -> 40
2026-10-04 22:33:57 -05:00
xThrasherrr 2c3b2f63d4 Drop the nonexistent Developer group from the help text 2026-10-04 19:11:47 -06:00
xThrasherrr e5def363ca Reject freecamfov values the client would refuse 2026-10-04 18:57:37 -06:00
ReSkate localandClaude Sonnet 5.5 702e5c74d2 Music: serve mod cover artwork over HTTP/2 cleartext
The game fetches the artwork URL with HTTP/2 cleartext (h2c, prior knowledge), and only from 127.0.0.1. The loopback server spoke HTTP/1.1, so every cover request was answered with an HTTP/1.1 404 and mod playlist/song covers never appeared.

Speak h2c: complete the SETTINGS handshake, read the request header block (HEADERS and CONTINUATION frames), decode :path with a minimal HPACK decoder (static table and Huffman code from RFC 7541 in hpack_tables.h), and serve the matching image as HEADERS plus DATA frames with flow control. Keep the HTTP/1.1 path for other clients. Serve from one stable origin (http://127.0.0.1:47823/music-art/<mod>/<relative>) so the game's HTTP cache is reused, send Cache-Control and an ETag so it stops re-fetching, close gracefully (closing with unread frames queued makes Windows send RST and the client drops the tail), and use a non-blocking listener since several pollers share it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 00:09:51 +01:00
ReSkate local 5a01b1b0de Music: support custom playlist and song cover artwork in mods 2026-10-05 00:09:41 +01:00
AyeZeeBB ecb083f417 Don't drop every player after the server is held up 2026-10-04 17:56:24 -05:00
AyeZeeBB 150560563a say which file cannot be read, and why
"Cannot open file for SHA-256" was all a player saw when the launcher
could not read ReSkate.dll, at startup and again right after each
download. That is an antivirus holding or blocking the file.

- A sharing violation is waited out for up to five seconds: a file that
  was just written is often held by the scanner for a moment.
- Otherwise the error names the file and its folder, says to add the
  folder to the antivirus exclusions where that is the likely cause, and
  carries the Windows error code.
2026-10-04 17:06:29 -05:00
AyeZeeBB 30f3f84120 Merge branch 'main' of https://github.com/Dingo-Shenanigans/ReSkate 2026-10-04 16:07:51 -05:00
zeex64 aead3ebd03 Merge pull request #39 from xThrasherrr/fix/server-browser-name-last-letter
Keep a non-ASCII last letter in the server browser's tag name
2026-10-04 14:59:54 -05:00
AyeZeeBB c157d01286 add tuning enforce to allowed session commands 2026-10-04 14:32:41 -05:00