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