Not In The Groove Version 4.9

Changelog for v4.9:

New Stuff

  • New caching system, removing the need for FastLoad (in other words, no more FastLoad)
  • BothAtOnce now supports navigation inside options menu
  • Rebindable editor keys, you can change the binds of many editor actions by editing /Data/EditorKeymaps.ini
  • Actor commands can now be chained (e.g obj:rotationx(rx):rotationy(ry))
  • Player:SetArrowPathDrawMode(string DrawMode), default "LineStrip": changes the draw mode of arrowpaths, valid values are "LineStrip", "Fan", "Strip" and "Triangles"
  • #SCROLLS support within sm files, format is the same as ssc
  • Transparent AFTs: ActorFrameTexture:EnableAlphaBuffer(bool enable) and Actor:clearbuffer(int mode) (1 = clear RGBA, 2 = clear only A)
  • Support for loading 3D models from .obj files
  • Ability to load NoteSkins from the song folder
    • Simply put your NoteSkin(s) in /Songs/{group}/{song}/NoteSkins/{NoteSkinName}, and enable those as you usually would (also read the next point!)
  • Swap NoteSkins directly from lua without attacks: Player:SetNoteSkinForBeatRange(string NoteSkin, float StartBeat, float EndBeat) Player:CacheNoteSkin(string NoteSkin) (to avoid stutters during gameplay, call on file begin)
  • Copy NoteData to clipboard from editor (Alt + C)
  • Added actor methods Actor:rotationxyz(float rotX, float rotY, float rotZ) and Actor:addrotationxyz(float rotX, float rotY, float rotZ)
  • Ability to load .ini files from lua FILEMAN:LoadIniFile(string path)
  • Ability to operate on mines in a shader via uniform int isMine
  • HoldJudgment actors are named for easier theming access: HoldJudgmentCol<column>
  • The Music Selection songwheel now displays the best grade for each Player
  • THIS_DESCRIPTION variable to access the step author / edit name of a chart within an unlock lua file
  • UNLOCKMAN:SongIsLocked(Song) and UNLOCKMAN:StepsIsLocked(Song, Steps)
  • Texture filename hint strings noaniso, notrilinear, keepalpha to disable anisotropic or trilinear filtering, or RGB values in fully transparent pixels
  • Model:SetUseFullAlphaRange(bool enable) and Player:SetUseFullAlphaRange(bool enable), default false: when enabled, models use a fixed version of RageDisplay::SetMaterial that properly applies alpha, making the 0-1 diffuse range line up with other actor types
  • Player agnostic MessageCommands: sometimes you want to capture an action done by either player, but you don't need the information of which player it comes from. No more forgetting to duplicate your Commands for P2 in your menu simfiles
    • A list of introduced MessageCommands can be found here
  • NOTITG and NOTITG_VERSION variants of the FUCK_EXE and FUCK_VERSION variables
  • STATSMAN:GetCurStageStats():GetPlayerStageStats(int Player):GetPossibleDancePointsCouplesP1() and STATSMAN:GetPossibleDancePointsCouplesP2(): Get the possible amount of dance points for a specific player on 192nd separated couples charts
  • Steps:GetNoteData(): Get the chart notedata from a Steps object.
  • math.dog(): math.dog
  • Added wece
  • Added whenge

Fixes

  • Fixed an important security vulnerability (removed a leftover legacy OpenITG function that allowed for TCP networking with possibility of making such interactions invisible to the user).
    • We have not seen this being exploited in the wild, and haven't received any reports of abuse.
    • Thanks to oatmealine for reporting this issue to us!
  • ScreenReadyCommand fires at the beginning of every song in course mode (as opposed to only the first song)
  • Extra Players who are receiving inputs from Players 1 or 2 properly reflect AutoPlay state when either AutoPlay or AutoPlayCPU gets enabled
  • Column specific HoldStealth properly applies
  • Unlock lua variables THIS_SONG and THIS_GROUP are set as actual variables instead of engine side string replacement
    • (Also applies to the newly introduced THIS_DESCRIPTION)
  • Sound:DimMusic can no longer deafen people
  • Player:SetRandomVanishTransform has turn modes "Mirror" and "SmartBlender" added to its list of valid turn modes
  • Prevent extremely specific modifier percentages from activating other song options
  • Prevent LUA_PATH from being unset after doing Ctrl + R in gameplay
  • Fixed some properties not resetting on Ctrl + R
  • Prevent HiddenRegions and NoteTypeMults from being cleared after doing Ctrl + R during gameplay
  • Fix AMD + Apple GPUs' model depth sorting
  • GAMESTATE:SetSongEndTime() no longer interacts weirdly with ratemods
  • Game will no longer crash with error "GAMESTATE->m_fMusicSeconds < 4000" on charts with no notes
  • Trying to call GetPlayerStageStats on an invalid Player will raise an error
  • AutoSync no longer has the potential of receiving inputs from non-existant players
  • Stealth now displays properly on Wine
    • 🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉
    • Also applies to fade/sudden/hidden and other similar effects

Changes & Updates

  • GlobalOffsetSeconds are accounted for in the application of .sm #ATTACKS and #MODS
  • #ATTACKS and #MODS present in an sm file are loaded in course mode
  • BitmapText actors missing the Font attribute no longer crash the game and instead fall back onto the Common Normal font
  • Gradient functions errors display Playfield number
  • You can pass in -1 as the column value for Gradient functions to affect all columns at once
  • Reset vanish points in between songs in course mode
  • Seperate editor preference Show Attack List into Show Attack List during play and Show Beat and Time during play
  • Removed the minimum cap of -100% on the following mods:
    • DrawSize
    • DrawSizeBack
    • ArrowPathDrawSize
    • ArrowPathDrawSizeBack
  • Scaled the percentage of the following mods by x100 to make them line up with other offset mods:
    • TornadoOffset
    • TanTornadoOffset
    • TornadoZOffset
    • TanTornadoZOffset
  • Fixed-function pipeline model lighting has been replaced internally with shaders that emulate the old pipeline
  • OpenGL errors now print to console
  • Offset change messages are clearer
  • Error dialog boxes are bigger and left aligned to help reading the more detailed stack traces
  • Update ffmpeg to version 4.1.6
  • Update dr_mp3 from version 0.6.27 -> 0.6.33
  • Update stb_image from version 2.26 to 2.27

New Mods

  • OrientX, OrientY
  • AttenuateY, AttenuateYOffset
  • TapStealth, HoldHeadStealth (also column specific)
  • Column specific Centered, via the Converge and CenteredCol aliases
  • Column specific ArrowPathWidth
  • Column specific Centered2, via the CenteredPath alias
  • Aliases for the following mods:
    • HideTaps -> TapStealth
    • HideHoldHeads -> HoldHeadStealth
    • CenteredPath -> Centered2
    • BeatZCap -> BeatCapZ
    • BeatYCap -> BeatCapY
    • Cosecant -> Cosec
    • UnboundedReverse -> ReverseType
    • CouplesSwapSides -> SwapSides