[Open Assets] HugeQuest Queenie

Onihime was supposed to be the last HugeQuest update because I'd reached a point where I didn't want to work on it anymore, and Pierre was primarily to fix a few oversights. However, after a conversation with a good colleague, I've found the motivation to continue working on this project. This update is also meant to line up with Master Emerald's release, and there's code between the two where they won't run identical functions.

In the meantime, have some notes:
- Super Form no longer has access to giant items.
- Super Form no longer extends automatically if you pull a Grow or Invincibility; they are instead replaced with 2x Sneakers (Shoutouts to CGB!). This, along with the Super giant item nerf, is meant to offer parity between this mod and Master Emerald.
- Several code revisions to ensure HugeQuest and Master Emerald aren't trying to define the same variable/function multiple times.
- Bug Fix where Alt. Squish would kill you if you ran into a Grow player in specific interactions.
- Alt Squish revised: Instead of flinging you, you will simply be shoved aside while also dropping your item(s). You will not drop anything, however, if you are in the middle of an active item roulette or have an active Rocket Sneaker.
- Invincibility (and Super, by extension) now properly interop w/ BoostLib; thanks DarkyBenji
  • Cool!
Reactions: Jrc126
- Fixed an issue where MT_OVERLAY's target wasn't always valid; props to Xian for catching this oversight.
I legit thought I was done, but a bunch of stuff happened within the last week or so, and I felt the need to push an update that offers as complete of an experience as possible out of the box.

- Restructured HugeQuest code and divided it into several smaller scripts, improving readability for modders looking to alter specific mechanics/functions. Most mechanics now tied to PlayerThink hooks.

- Userdata now formatted into a table. Modders: Please update your HugeQuest references from (HugeQuest and p.huge/hqsuper) to (HugeQuest and p.hugequest.huge/super) for Grow+ and Super Form, respectively.

- New command: hq_hugesplit - Enables Grow+ item split. Default on.
- New command: hq_superball - Enables bounce properties from split Orbinauts.

- Many safety checks to mitigate/prevent mo returning nil in edge cases.

- Lots of interop for an incoming update on Haya's Combi Ring.

- Super Form is now available in Battle Plus.
"Just when I thought I was out, they pull me back in."

- Fixed an oversight re: ShouldSquish hook; fixes edge cases where you'd be squished by other Grow players if you didn't hit full Grow scale yet.
- Revised damage hooks to prevent edge cases which would return an error regarding mo being nil.
- Vanilla Grow can now benefit from hq_offroad.
  • Cool!
Reactions: TheOneGoofAli
Super Form somehow broke during the major update where its effects were still applied to the user after its duration expired, resulting in a normal-looking player with 180% top speed.

It has since been fixed. Praying nothing else broke :fatcat:
Because of course I forgot something lmao

Visual Timers:
- Added an entry to Timer Table to account for Vanilla Grow.
I've pushed HugeQuest to its limits with this latest update and now consider it complete. Lots of changes since Nora so grab a snack.

- Wallbonk penalty removed.

- Invincibility visuals now more distinct, inspired by Sonic Rush Adventure.

- Grow/Invincibility timers reverted to default (Vanilla) values.

- Grow now has 150% accel boost.

- Super will revert you to 1x scale, while providing an 80% top speed boost (100% during sneaker state).

- Super can roll up to two Sneakers, to diversify the item pool in light of the scaling change. Additionally, rolling Grow/Invincibility will automatically extend the timer by 6s and remove the item from your possession.

- Super activation no longer guarantees a 10 second duration: It now scales normally, with a max duration of 10s. e.g. You have 5 seconds of Grow left when activating Invincibility: (5+10)/2 = 7.5s Super timer. This will discourage players from holding onto the Super trigger until the last second to still get the full 10 seconds of Super.

- Explosive items no longer extend Power/Super timer.

- New command: hq_allsuper(default off). Good for testing Super frames/music, or usable as an alt game mode votable.

- New command: hq_dynamictimer (default on). Applies a hard cap to Grow+ and Invincibility+ and controls relevant mechanics.
-- Bonuses for item hits and direct contact nerfed to .5s and 1s, respectively.
-- Dynamic timer no longer dependent on position: Instead, it only tracks when you're in the lead and drains your timer progressively faster the longer you're in front. Makes Super finishes viable while not evaporating your timer when directly BEHIND the lead in 2nd.
-- With Power item timers reverted to Vanilla values, penalties have been adjusted to only subtract 1s from item hits, and 1.5s from direct explosions. Stage hazards - that aren't Kart attack items - no longer trigger penalties, making shortcuts like Machine Labyrinth viable again.
-- Boost Extensions: Using sneakers during Grow/Inv will slowly increase your timer, while Super's timer is frozen during sneaker boosts and while in midair. However, you cannot extend during an active Acro trickboost nor during a sneaker boost granted by a boost pad. This prevents ludicrous extensions.
-- Lead buffer now increments by 2 per tic. Dynamic Timer revised where timer now drains by (p.hqleadbuffer/TICRATE)+1. This means accelerated decay will now kick in around 0.25 seconds after hitting 1st. Jankpoints don't usually last this long, so this shouldn't affect you if you're suddenly first but truly bottom half.
-- Super timer will freeze in midair unless you're rolling an item.

- Revised Dynamic Super Glow Color code for consistency.

- Visual timers for various states (Sneaker, Hyuu, Super, etc) are now displayed at the bottom center of your HUD.

- Super damage revised: Kill > Punt. Players hit by Super will be punted, suffering extended spinout.

- New Command: hq_altsquish (default on). Reworks the squish state and applies a different damage type depending on the source.
-- Grow damage type revised: Squish > Fling. Players hit by Grow+ will be flung upward at an angle.
-- Global hazard squish revised: Squish > Kill. Hazards like Megablock's Jack-In-A-Box, Egg Quarters' crusher, and Spring Casino's chip stacks will now kill you if you are caught under them, and Power states are not exempt from this. Additionally, you will be forced to respawn at the last checkpoint you crossed on the map, whether or not kmp_respawnpoints is enabled on the server.

- BUGFIX: Fixed an issue where certain hazards would still spin you out in Grow. This is due to the fact spin sources aren't always valid inflictors, so some hazards wouldn't spin you, while others would.

- BUGFIX: Fixed a music change issue where Grow music would play at the start of a level if you either exited or restarted the level while Huge.

As of this update, HugeQuest is now a fully open asset. I've worked on this particular mod for two years, and there isn't anything else I could personally add to what's already here now. So, y'all have fun hacking this script to kingdom come. More importantly...

"Don't ask me for anything ever again." ~ Masahiro Sakurai
  • Cool!
Reactions: Superjustinbros
Interop, QoL, accessibility, and fun custom stuff!

- Code revised to interact with Chaos Drives. Grow+ and Invincibility+ may react to the Chaos Drives in your possession and trigger Super Form on use. Probability scales with the number of Drives you have, capping at 40% with Max Drives.


- Super Flash now triggers on Super Form end as well, but is also a client-side CVar, hq_superflash. By default, it is enabled, but those with photo-sensitivity issues can disable this.
- HugeQuest.cfg will now be created in your /luafiles folder, allowing you to set your Super Glow color and toggle the flash from Super transformations.

Speaking of Super glow colors...


Hyper Sonic color cycle has been added to the list of selectable glow colors!
You may have also noticed Sonic's sprites changing on transformation - that's Super Sonic... But he's not loaded on this server!

Transformations are possible thanks to Mindacos' work on his Chao characters. Place your secondary Kart sprites in Sprites, then use the Transformation lua to freeslot the sprite and determine the character skin the transformation would apply to, along with custom music(if any) and character glow color. Placeholder values are labeled, so replace them as needed. Included is a Super Sonic Transformation so you can see how applying a transformation to your character would work. Super Sonic does not have custom music, however, so please reference the standalone Transformation.lua for music.

Dynamic Character Glow changes:
- All base characters (plus bonuschars and a few community characters) now have a specific glow color by default.

Gold: Aiai, Ray
Orange: Tails, Kuze, Arle, Cream
Red: Knuckles, Kiryu, Mighty, Gamma, Omega, Eggman, Dark Chao, Motobug
Pink/Purple: Blaze, Majima, Ulala, Amy, Sakura, Espio, NiGHTS, Rouge
Blue: Vyse, Chaos 0
Aqua: Mike, Copen, Gunvolt, Chao
Green: Beat, Vector, Wonder Boy, Doomguy
White: Hero Chao, Aigis, Silver
Copper: Shadow, Metal Sonic
Hyper: Sonic, Flicky

- Dynamic color assignment code revised to allow for external scripts to assign colors for characters not listed in HugeQuest.
- MusicChange hook revised to allow for custom Super themes via external lua scripts.
- Clouds spawned during the last 3-5 seconds of your power/Super timer are now translucent to improve visibility in the affected areas.
Minor bugfixes (because what release is perfect on launch lmao) and QoL

- hq_superform now requires both Grow+ and Inv+ to be enabled, and disabling either will disable Super Forms.

- Clouds for timer warning now spawn every other tic instead of every tic for performace.
  • Cool!
Reactions: TheOneGoofAli