Changes - current (v3.1) [Huge] + HUGE performance improvements across the entire game thanks to some openGL pipeline cleaning (HeySora) [Bugfix] + SmartBlender no longer adds random teal notes to the end of songs that end with lots of mines (BrotherMojo) + Fix SmartBlender randomization for the first step (BrotherMojo) + Fix SmartBlender Crashing in Marathon Mode on certain songs (BrotherMojo) + Non auto-reloading P2 no longer offset in the editor + Fix bug where loading a lot of noteskins crashes - it was actually an issue with negative attack time in course for attacks that happen after the song ends. + Fix lag spike on heavy spline usage segments of files + ActorFrame:GetChildAt( num ) can now access item 0 (HeySora) + Fix editor Autoplay not working for P2 + Window manipulation helpers now work as intended DISPLAY:GetWindowX( ); DISPLAY:GetWindowY( ); DISPLAY:GetWindowZoomX( ); DISPLAY:GetWindowZoomY( ); DISPLAY:GetWindowWidth( ); DISPLAY:GetWindowHeight( ); DISPLAY:SetWindow( x, y, w, h ); DISPLAY:SetWindowX( x ); DISPLAY:SetWindowY( y ); DISPLAY:SetWindowAddX( x ); DISPLAY:SetWindowAddY( y ); DISPLAY:SetWindowZoomX( x ); DISPLAY:SetWindowZoomY( y ); DISPLAY:SetWindowWidth( w ); DISPLAY:SetWindowHeight( h ); + Single player marathon mode now no longer crashes with Assertion 'pTrail' failed + Game accuracy improved (HeySora) - On Windows, OpenITG's precision was just millisecond*1000, now it's true microseconds + Great optimisations on Spline/Gradient functions (HeySora) + Removed "odd dimensions" warning (HeySora) + Improved ApplyGameCommands performance (HeySora) + Fixed duplicate messages in an actor actually crashing (HeySora) - Now it warns you with a (hideable) dialog, no more crashes! + Replaced many "Assertion '0'" (HeySora) - Either replaced it with a comprehensive message - or actually avoided the crash + Fixed Access Violations when reloading a texture on a Sprite (HeySora) + Fixed UVs on SpiralHolds - Negative spiralholds will use fixed UVs rather than original/bugged UVs + Reset FOV between songs in a marathon + Parallel lights driver fixed - ArcticFqx [Feature] + Lossless printscreen now saves .png instead of .bmp + Allow players to disable HBT polling, to provide better CPU performance for those who don't have an impulse prototype from 2 years ago :weary: + Remove ability to have a non-reloaded chart for player 2 in editor, and removing all menu items involved in reloading player 2's chart + Move un-mappable input to 5th row + NotITG Preference that lets players disable the "STAGE #" text + NotITG Preference that lets players "always show lifebar and score" on songs/courses that disable them (be wary of topscreen movement) AlwaysShowLifebar preference + Allow lua to detect if an actor is hidden using actor:GetHidden() the result is a bool + set default keys for action buttons + actor:addrotationx( float ) (and y and z) added also works in Command="addrotationx,30" format + Player:ResetSplines() now exists + Individual Judgments for Couples can now be collected using PlayerStageStats:GetTapNoteScoresForPlayer( player (0 or 1), tapnotescore ) PlayerStageStats:GetHoldNoteScoresForPlayer( player (0 or 1), tapnotescore ) + Also, allowing user to SetTapNoteScoresForPlayer (and hold note score) PlayerStageStats:SetTapNoteScoresForPlayer( player (0 or 1), tapnotescore, amount ) tap note scores here are 8 to 3 for fantastic to miss, with 1 being HitMine hold note scores are 2 for OK and 1 for NG (Yes I am aware it is backwards here... it's because similar functions have already been done this way in themes) + ArrowCull mod 0% for normal (back) cull 0 to 100% for none cull over 100% for front cull + Added additional draw statistics to F3+6 (HeySora) + Added ability to set NITGVersion from within editor [Misc] + Bullshit buttons renamed to Action buttons to fit the rest of the Action mappings + #NITGVERSION no longer prints to the .sm file when writing if it's 0 (default) [Player] + Player:GetNoteData() now works finally Player:GetNoteData( startbeat, endbeat ) also valid, for getting notedata between sections usage example: local nd = SCREENMAN:GetTopScreen():GetChild('PlayerP1'):GetNoteData() Changes - 17-jun-2018 (v3.0) [Bugfix] + Fix ratemods not affecting fg elements in editor + disablemines now makes stepping on mines not reduce score (in addition to making them not explode) + Gradients (arrow, stealth and arrowpath) no longer crash with malformed input + Syntax on gradients now matches v3Splines + Disable CTRL+R when not playing in event mode (prevents extra stage triggers and other weird stuff) + Fix ScreenSelectMusic crash on default theme (uninitialized shader vals) -FMS_Cat + Fix ScreenNameEntry traditional crash + Fix meat boy theme + Survival mode automatically unhides lifebar and score + Ctrl+L to toggle visible life/score when they've been hidden by modscripts + Re-enable shader on BitmapText -FMS_Cat + NoteData offsetvector now knows what song of a marathon each note was in. Used in Marathon scatterplot. + Fix bug where duplicate edit data can sometimes crash -FMS_Cat + Results screen Life graph now properly scales when using rate mods [Feature] + Proper gradients!! VIDEO: https://streamable.com/2jg94 EXAMPLE FILE: https://www.dropbox.com/s/0mv7xwykbig12d8/TEST%20-%20PathGradient%202.rar?dl=0 HOWTO: https://www.dropbox.com/s/t1trfks2xyckwzh/gradients.txt?dl=0 (thanks @halcyoniix) + Add GetPossibleSongs and GetPlayedSongs to StageStats lua, to fix the offsetplot in marathon mode + New Preference in Data/NotITGPrefs.ini ShowStageNumberOnGameplayScreen (turn this off to remove EVENT MODE text) + SmartBlender mod - intelligent shuffle! -BrotherMojo Changes - 03-apr-2018 (MM3 build) [Bugfix] + Fix bug where F1 Editor Help Menu Crashes. (USE THIS TO SEE THE KEYBOARD SHORTCUTS) + Fix bug where jumps counted as two distinct points on scatter plot. + Dude, where's my chart? (Editor sometimes deletes charts) FINALLY FIXED. + Centered2 no longer kills holds on reverse + Doubles playfield is now properly centered in the editor [Editor] + Add more keyboard shortcuts to the editor (PRESS F1 TO SEE THEM) + Actual Couples support (3.95 couples with micro-stop style) Couples toggle added to F menu (press F in editor) Couples toggle also accessible from editor preferences in F menu. Switching to couples editing also changes to the couples noteskin (if available) More turn mods added to F menu +SwapSides (12345678 -> 56781234) +CouplesMirror (12345678 -> 86754231) +SwapLeftRight (12345678 -> 42318675) +SwapUpDown (12345678 -> 13245768) Forward slash "/" key toggles between editor player 1 and editor player 2. Couples conversion script (using tiny negative stops) internalized (accessed from F menu) Regional [s]dialect[/s]couples conversion also available, if an area is highlighted. Individual notecounts when in couples editing mode Format is Player1 / Player2 + Ctrl + ,/.: Jump to previous/next label [Player] + New Splines v3! Forget everything you knew about splines before. This is the lowdown now: https://www.dropbox.com/s/7gpmdml8o3ghz5v/splines.txt?dl=0 40 splines per column per player (with 2 players), 210 FPS. + Arrow Path Gradients!! VIDEO: https://streamable.com/ukntb EXAMPLE FILE: https://www.dropbox.com/s/xia26i6e5ym97vn/TEST%20-%20PathGradient.rar?dl=0 HOWTO: https://www.dropbox.com/s/t1trfks2xyckwzh/gradients.txt?dl=0 (thanks @halcyoniix) [Actor] + New Actor Effect type (pulseramp) It's the same as diffuseramp (sawtooth wave applied to color) but on the size of an object. Effectmagnitude controls max size and min size Effectcolor1 and effectcolor2 controls the size difference in each axis at the beginning and end of each step Changes - 21-aug-2017 (UKSRT9 build) [Player] + Player:SetMineSound( path ); --Set custom player mine sound from simfile. + fix access violation when using Player:SetMissCombo( amount ); in editor + Send additionall judgment messages for early and late judgments, as well as distinguishing holds and rolls with another message examples: Fk_P1_W2_EarlyMessageCommand Fk_P2_W4_LateMessageCommand Fk_P3_OK_HoldMessageCommand Fk_P4_NG_RollMessageCommand [Misc] + Custom tweening actor:tween( time, 'lua expression' ); Custom tweening lets you define a lua expression using "%f" to represent how far into the tween the object is currently. For example, a linear tween would be actor:tween( 1, '%f' ); https://dl.dropboxusercontent.com/u/2526020/FUCK/secret/TEST%20-%20Custom%20Tween.rar + SpellCard and Label system Allow simfile writers to mark sections of songs. These markers will also show up in the editor. Press L in editor to add label. Example: https://dl.dropboxusercontent.com/u/2526020/FUCK/secret/whoa/%EF%BC%9F/get_fucked_spellcards.xml Spellcards and Labels now added to simfiles Labels can now be one of two types - song divider labels and comment labels Comment labels won't show up in the scatter plot (unless written that way. + Scatter plot stuff Etterna's timing offset scatter plot from the results screen. This will also render spellcards and labels (mentioned above) as shaded areas and bars. Refer to https://dl.dropboxusercontent.com/u/2526020/FUCK/secret/whoa/%EF%BC%9F/OffsetPlot.xml + New Actor type "Actor" (aliases Aux, Auxvar) for when you don't want to specify an invisible quad + New XML Node "Var" lets you define a variable for the object Leads to the shorthand of replacing + Remove "Characters" and all related code from main folder. + "ComboShowLeadingZeroes" Preference lets you choose to display 4 combo as either "4" or "004" [Holy shit] + Major performance upgrades t. etterna + FIXED PRINTSCREEN ON AFTS + Courses can now have player specific mods format is #MODS:TIME=54.184:LEN=24.44:PLAYER=0:MODS=metal2; #MODS:TIME=54.184:LEN=24.44:PLAYER=1:MODS=cel; [Editor] + CTRL+Up/Down now changes speed in 0.5x increments, rather than multiples of 2 + CTRL+ or CTRL+ jump to prev/next label (comment) + CTRL+backspace now deletes everything in a text entry field [Bugfix] + fixed bug where Ctrl+0 then reset didn't reload the FG + fixed bug where Ctrl+R/Ctrl+0 didn't disable playfield shaders + fixed bug where 0x breaks spiralholds (LDani2001) crash was caused by zero division + fixed bug where P3-P8 would send stepped messages for P1 and P2 Changes - 6-jun-2017 [Player] + PushNoteData player:PushNoteData( varName, fStartBeat, fEndBeat ); pushes lua notedata into variable "varName". Accounts for turn mods. if fStartBeat is not specified, first beat of song is used. if fEndBeat is not specified, last beat of song is used. [Mods] + "holdtiny" or "holdtiny" width of hold. similar formula to mini/tiny. + "holdgirth" or "holdgirth" inverse alias of holdtiny + "drunky", "tandrunky" and all related wave modifier trimmings. sure, why not -puuro **these are not column specific Changes - 3-jun-2017 [Bugfix] + Fix for holds [Misc] + Ctrl+V now works on all text entry boxes (NAYOTO) + Large RageSound updates (HeySora) Play Pause Stop Load IsPlaying IsPaused GetLengthSeconds SetSoundPosition GetVolume GetPan GetStartSecond startsecond GetStopMode stopmode [Player] + "SetAwake" function can be used to wake up playfields that are still hidden, or set them back to sleep if re-hidden. Provides small FPS boosts for those who need it. [Mods] + splinereset reset all splines instantly. Huge performance boost manually resetting each one. Changes - 29-may-2017 [Misc] + Add Player:IsAwake() for debugging purposes + Bugfix on misses in editor? (access violation???) [Mods] + "hidenoteflash" - hide the note flashes. Necessary for certain effects. Can be column specific - e.g. "hidenoteflash0" Changes - 24-may-2017 [Bugfix] + Access violations! Access violations everywhere ;-; (fixed) + Performance update on existing code check if unused players beyond P2 are "sleeping" before attempting to apply mods or update playerstate (simply unhiding will "wake" a sleeping playfield) [What the fuck] + Player 3 and 4 added to ScreenGameplay/Editor. Can have separate mods to players 1 and 2 GAMESTATE:ApplyGameCommand('mod, tornado',3); Must be unhidden. They are hidden by default. Apply noteskins using GAMESTATE:LaunchAttack() Players 3 and 4 behave on AutoPlay in Gameplay, but are tied to "BothAtOnce" in editor. Perhaps this will be refined in future. Thinking of making it so that if "BothAtOnce" is on, all players will be tied to the same thing, otherwise tie P3 to P1 and P2 to P4 inputs. [Misc] + Fix mine behavior in "BothAtOnce" mode + Fix hold behavior in "BothAtOnce" mode in editor. Changes - 22-may-2017 [Internal] + Made Player accessible directly via lua (e.g. P1: or v[1]: can now touch internal player attributes) + GetMoveX/Y/Z added to GetX/Y/ZPos within ArrowEffects.cpp, original functions removed. NoteDisplay, ArrowEffects and some other places modified to reflect this (much needed) change If this breaks anything, please hit me with a large stick This is going to speed the game up at least marginally, though. [Misc] + Spiral hold tails fixed in extreme cases + Version globals added FUCK_VERSION_1 = 20161226 FUCK_VERSION_2 = 20170405 + Make dialog box wider in loading window so song/folder titles don't get cut off + P1:SetCombo( int ) --set the current combo + P1:SetMissCombo( int ) --set the current miss combo + P1:GetCombo( ) --get the current miss combo + P1:GetMissCombo( ) --get the current miss combo + P1:SendJudgment( int, isEarly, (optional, for scatter plot)timing deviation in ms, (optional, for scatter plot) beat ) --Send a judgment message to the actor. Note: must tell the game if it's early or late. + "SaltyReset" message broadcast on press CTRL+R [Editor] + "Edit steps information" now shows the current meter before editing + CTRL+PgUp/PgDn lets you jump to selected beat Beat must be greater than 0 + CTRL+Home now doubles as "End" ...because I don't have an End key on this laptop. + F1 to open Edit Help Menu restored and the crash has been fixed. It now has a page 2! Press enter from this screen to go to page 2. Page 2 contains all the notITG editor shortcuts. + F2 now opens notITG editor shortcuts screen. + Backing out of text entry no longer plays a lengthy transition [Mods] + SPLINE TYPE (!!!) New mods of the format "splinetype", control how the spline behaves in that axis. 0 = default (linear interp), 1-100 = cosine interp (smooth in and out, always vertical at the control points), 101+ = cubic splines (curved based on the specified control points). Different axes can have different interpolations, e.g. z can be cubic while x is cosine. + Spline performance greatly improved (t. Daikyi, Telperion, Michael and everyone else who posted suggestions on improvements) + "attenuate" (aka attenuatex) changed to be based on column position, rather than which column it is "attenuatez" re-introduced, z attenuation is now based on z position to match attenuatex + "bumpyy" with appropriate period and offset modifiers. Period modifiers can now be column specific. Example: local str = '' for i=0,3 do str = str..'*10000 '..(300 + 150*i)..' bumpyy'..i..',' str = str..'*10000 '..(300 + 150*i)..' bumpyx'..i..',' str = str..'*10000 '..(100*(3-i))..' movex'..i..',' str = str..'*10000 0 bumpyyoffset'..i..',' str = str..'*10000 25 bumpyxoffset'..i..',' end m(0,999,str,'end'); Bumpy is now one of the most powerful sets of mods. [Window stuff] + global variables added relating to window display (NAYOTO.) LUA->SetGlobal( "DISPLAY_WIDTH", (int) DISPLAY_WIDTH ); LUA->SetGlobal( "DISPLAY_HEIGHT", (int) DISPLAY_HEIGHT ); LUA->SetGlobal( "DISPLAY_LEFT", (int) DISPLAY_LEFT ); LUA->SetGlobal( "DISPLAY_RIGHT", (int) DISPLAY_RIGHT ); LUA->SetGlobal( "DISPLAY_TOP", (int) DISPLAY_TOP ); LUA->SetGlobal( "DISPLAY_BOTTOM", (int) DISPLAY_BOTTOM ); LUA->SetGlobal( "DISPLAY_CENTER_X", (int) DISPLAY_CENTER_X ); LUA->SetGlobal( "DISPLAY_CENTER_Y", (int) DISPLAY_CENTER_Y ); + More window commands for ease of use (NAYOTO.) ADD_METHOD( GetWindowX ) ADD_METHOD( GetWindowY ) ADD_METHOD( GetWindowZoomX ) ADD_METHOD( GetWindowZoomY ) ADD_METHOD( GetWindowWidth ) ADD_METHOD( GetWindowHeight ) ADD_METHOD( SetWindow ) ADD_METHOD( SetWindowX ) ADD_METHOD( SetWindowY ) ADD_METHOD( SetWindowAddX ) ADD_METHOD( SetWindowAddY ) ADD_METHOD( SetWindowZoom ) ADD_METHOD( SetWindowZoomX ) ADD_METHOD( SetWindowZoomY ) ADD_METHOD( SetWindowWidth ) ADD_METHOD( SetWindowHeight ) Changes - 14-may-2017 [Misc] Credit: NAYOTO. + DISPLAY:SetWindowPosition( int x, int y ) Move the window around when in windowed mode, via simfile lua. oh no + DISPLAY:SetWindowPositionAndSize( int x, int y, int width, int height ) will lag if using ReShade for anything + DISPLAY:GetDesktopWidth() + DISPLAY:GetDesktopHeight() These are needed when using window position for simfile authors to make sure window is kept inbounds [Addon] + F3+8 is now Reset Window Position and Size + Game now detects if window position has been changed at any point, and resets on exiting song + "AllowWindowPositionChange" preference added to let users disable this functionality from StepMania.ini (defaults to true, but... Just in case.) [Mods] + Fix bug caused by moveY not affecting stealth types Changes - 3-may-2017 [Nice] + "ShowComboGlowAtPercent" now added as a preference in StepMania.ini Default value is 0.25 (same as normal ITG/3.95) Setting this to 0 lets you see if your combo is blue or gold right from the beginning of the song Setting this value above 1 will entirely disable combo colors [Misc] + GAMESTATE:GetElapsedTimeFromBeat( beat ) added ever wanted to work out the exact time in seconds that beat 188.75 happens? Now you can! + GAMESTATE:GetBeatFromElapsedTime( time ) added because why not Changes - 18-mar-2017 (20170318-002) [Release candidate] [Mods] + "longboys" added as an alias to "longboy" [Bugfix] + fix straightholds when using reverse + fix z position on spiral hold topcap when using straightholds + fix hold tail caps on spiralholds when using negative longboys Changes - 13-mar-2017 (20170313-014) [Mods] + mod: "ApproachType" when greater than 0, this changes mod activation rates such that *1 = 100% over 1 beat (affected by bpm changes and stops) + "zoom" added as a shortcut to control both "zoomx" and "zoomy" in tweens-as-mods system [Nice] + tested slight optimizations to PlayerOptions.cpp from 9-mar build got a few extra fps on private caller Changes - 10-mar-2017 (20170310-010) [General] - Allow images to be made gray by appending "(grayscale)" to the filename - Allow AFTs to be made gray by setting self:EnableGrayscale(true) before calling Create() [Bugfix] + Editor: Fix "unable to move" bug caused by uninitialized scrollmode memory Changes - 9-mar-2017 (20170309-024) [Editor] + CTRL+5 Switch to 20ths mode (10-9-10-9-10 scrolling) + CTRL+6 Switch to 96ths mode (4th->96th->8th->96th scrolling) press either button combo again to disable + SoftShuffle and SpookyShuffle added to available editor turn mods/F menu turn mods - Removed the old glitchy "make20ths" compress mod (and all related bad code) [Bugfix] + Editor: Fix crashes involving next/previous note + Editor: FINALLY fix Compress options interacting with holds incorrectly in oITG. + Editor: Don't overwrite BPM on ending beat when using compress options if one already exists + Fix tweening notefield interior (don't worry about this) + Make dummy quad on false condition invisible + Small rewrite to playerOptions to make column specific mods faster/more efficient [Mods] - Remove "attenuatey" and "attenuatez" mods, they were pretty useless - Reduced max # splines per column per value from 64 to 48 to free up some memory for other new mods Changes - 6-mar-2017 (20170306-024) [Bugfix] + Fix actorproxy to allow normal playfield to be drawn + Fix move mods with straightholds + Rename "hidden" tween to "hide" so there's no overlap with the actual hidden mod :I + Fix "copied" actors being unable to draw (weird rarely-used actor type that shows up in default theme) [Mods] + size splines officially now named "tiny", so "spline0tinyoffset0" etc. behavior changed so that they match tiny (200 = 0 size) See other implementations of splines for more details Changes - 3-mar-2017 (20170303-026) [Mods] + *-1 activation speed is now a shortcut for "instantaneous" + Fix bug where tan was not actually a tan wave new mod "glitchytan" or "cosec" brings back old behavior when enabled + Fix bug involving numerous tan mods (notably tanbumpyx) + tweens are now available as mods. syntax: '*1 200 zoomx' '*2 50 skewx' '*2 30 rotationz' -available tweens: x, y, z, (1% = 1 pixel) rotationx, rotationy, rotationz (degrees, 1% = 1 degree) zoomx, zoomy, zoomz, (defaults to 100%, which is a zoom of 1. 200% = zoom,2) skewx (100% = a skewx of 1) hide (it's hidden, any nonzero % will enable) -this solves the problem of syncing mods to playfield tweens -this also allows mods that move the playfield to be used in .crs files Changes - 21-feb-2017 (20170221-003) [Editor] + When editing doubles chart, don't move one player off to side (even if two player editor pref is enabled) [General] + Don't error out on negative tween time, just display a warning and continue + Fix endless bugs with CTRL+R and CTRL+0 [Mods] + "straightholds" --straightens out holds (like how PiU handles mods) 100% will completely straighten the hold. Higher will make the hold perform the inverse of the default behavior. Negative values will increase the hold's strength. Changes - 17-feb-2017 [General] + Doubleres image support for high resolution textures append "(doubleres)" on the end of your double res texture for the game to auto resize it + SetTextureFiltering now works on models choose whether you want zoomed models' textures to be either pixellated (false) or blurred (true) + Ctrl+R quick reset of any song. This is notable because it resets all active mods and tweens when used in mod files Fixed bug where quick reset crashes songs with AFT usage + Ctrl+0 Gets rid of all on screen mods and graphics. Disqualifies you tho. + New preference: "RateModsAffectFGChanges" Allows automatic handling of rate mods on all mod files (Updating both mod attack rates and foreground object animation and speeds) Changes - 14-feb-2017 [Mods] + bring back 300 bpm beat cap to fix compatibility with files that relied on it + "beatcap" turn this mod on to disable the 300 bpm beat cap [General] + Input Mode (Preference = InputDuplication) Press F3+5 to turn on "both at once" mode - either player presses buttons for both sides. + Fix bug in "both at once" mode that causes the dummy player to be unable to hit holds + GAMESTATE:SetInputMode(0 or 1) --0 for normal, 1 for "both at once" Used to temporarily set "both at once" mode for one simfile. This behavior resets on re-entering the gameplay screen. Input Mode preference/F3+5 takes priority over in-simfile setting. + Fixed bug causing ActorFrame-based receptors in noteskins to glow brightly instead of pulsing to the beat Changes - 10-feb-2017 [General] + GAMESTATE:LaunchAttack(StartTime, Length(seconds), Mods, Player(optional) ) (NAYOTO.) This can be used to launch NoteSkins mid song, but will disable any currently active lua mods Recommend using LaunchAttack in "InitCommand", as launching "attacks" generates lag spikes. [Mods] + "SoftShuffle" = random turn mod from either: SwapLeftRight, SwapUpDown, Mirror + "SpookyShuffle" = new turn mod: L<->(D or U) R<->(U or D), introduces a lot of crossovers + Column specific bumpy + Column specific dark (hide targets) [Simfile] + Can load multiple #MODS:; tags, allowing basically a whole .crs to be pasted in (NAYOTO.) [Edit Mode] + Allow loading of #MODS tag similarly to #ATTACKS + Allow #ATTACKS:; to work in Edit Mode. (NAYOTO.) + Fixed a bug involving changing difficulty. (NAYOTO.) + Edit Steps Meter changed from selection menu to Text Entry. (NAYOTO.) + Reload from Disk doesn't load multiple copies of #FGCHANGES or #MODS (TaroNuke) Changes - 05-jan-2017 Editor: Fixed "Edit Song Info" FINALLY #ATTACKS tag added to simfiles! (NAYOTO) This brings support for crs stype mods to be embedded in simfiles This also allows Noteskin changes to be performed mid-simfile! since they are just attacks NOTE: This WILL NOT WORK in the editor. Use a .crs file for testing this and then just mash it into the .sm when finished. #BETTERBGCHANGES tag added to simfiles BGChanges that support models, InitCommands and MessageCommands note: Does not needs a sleeping quad to keep itself alive, like background Negative attack times no longer permanently break mods instead, a stern warning is issued and an attack rate of *0.01 is used Boomerang: percentage now affects wave height Save Area to Lua (time) Accessed from "press F" menu Same as the beats version, but gets the time of each step Changes - 28-dec-2016 HUGE performance boost on splines Changes - 26-dec-2016 New splash screen and crash dialogs (ty CosmicLAER) Display current build in top left corner with F3+O "Current second, unaffected by offset" added to editor below "Current second". Preference "SyncToRoxorHardware" added. Current second, unaffected by offset has +0.009 added if this is true. Reduced number of splines from 128 down to 64 to improve frame rate. 30 per column is sort of the upper bound for lag, anyway. Column specific confusionoffset!! confusionoffset0-n confusionz/confusionzoffset now aliases for confusion/confusionoffset Column specific tiny Arrow rotational splines, works just like the arrow path splines but for the rotation of individual columns format is splinerotx only the y rotation spline affects holds -stealthpastreceptors (enables stealth to be turned on past receptors) ActorSound (UNFINISHED/GLITCHY) Similar to SM5 implementation. See available commands below self:start(); self:stop(); self:pause(); self:get():pitch() --'speed' does the same thing self:get():volume() --between 0 and 1 self:get():pan() --between -1 and 1 self:get():GetSoundPosition() --use this for syncing things to sounds!! This is not currently in SM5. Changes - 12-dec-2016 -arbitrary pathing! REDONE format is "splinex" Arrows move to specific points on the screen once they have reached specific distances from the receptors. -combine this mod with drawsize as this can cut some size off the playfields -The offset is defined as 100% per 64 pixels (ARROW_SIZE) -both holds and notes follow the altered note paths -Spiralholds changes the way y splines are drawn. m(1,999,'*1000 0 spline2xoffset0','end') --the first offset (on UP column) - 0 means it's at the receptors m(1,999,'*1000 0 spline2x0,'end') --x position of all notes above the first offset - including receptors https://dl.dropboxusercontent.com/u/2526020/FUCK/secret/splines0.png m(1,999,'*1000 100 spline2xoffset1','end') --the second offset - 100 means it's 64 pixels down from the receptors m(1,999,'*1000 100 spline2x1,'end') --x position at offset 1. 100% = one column to the right. --from 0 to 64 pixels, the path will be a straight line from dead center -> one column right. https://dl.dropboxusercontent.com/u/2526020/FUCK/secret/splines1.png m(1,999,'*1000 200 spline2xoffset2','end') --the second offset - 200 means it's 128 pixels down from the receptors m(1,999,'*1000 -100 spline2x2,'end') --x position at offset 2. 100% = one column to the right. --from 64 to 128 pixels, the path will be a straight line from one column right to one column left. https://dl.dropboxusercontent.com/u/2526020/FUCK/secret/splines2.png -new mod: "zbuffer", turns on the zbuffer without needing to turn on e.g. 0.5% bumpy Changes - 2-dec-2016 Fix Original Simply love usage with FUCK.exe Added "spiralz" (see spiralx and spiraly) -expandperiod (finally, some controls for "expand") -tanexpand tanexpandperiod "Randomvanish" split into two mods, "Randomize" and "Vanish" -randomize -randomizemirror -mirrors notes on their way up the screen (doesn't affect holds) randomizeoffset -controls when either of the above effects happens -vanish (see pieces of a dream) - defaults to 128 pixels from the targets vanishsize -how big is the vanish area vanishoffset -move vanish point up or down -"xy" new actorcommand that sets both x and y use example: self:xy(100,230) Changes - 11-nov-2016 Added shorthands for stealth, hidden, sudden, blink colors and stealthglow sudden(r/g/b)(o) for example, stealthgg == stealthglowgreen blinkr == blinkred hiddeng == hiddengreen *10 50 suddenbo == *10 50 suddenblueoffset Made redirs not crash on invalid redirect Changes - 25-oct-2016 Brought back lua errors (rip the dream) Removed some model crashes (replaced them with dialog boxes) Revert loading window due to error complaints from some users Changes - 19-oct-2016 actor:cmd('cmd list') now a valid method instead of actor:x(100) actor:linear(5) actor:x(200) we can say actor:cmd('x,100;linear,5;x,200'); -tandigital tandigitalperiod,tandigitalsteps,tandigitaloffset -tandigitalz with all the trimmings Changes - 17-oct-2016 New program icon (Jose_Varela) New Access Violation random messages Necrodancer options in the "F" menu no longer crash Insert/Delete options in the "F" menu no longer delete all the steps (...) Updated program info Added a discord link New loading and error windows New Modifiers -longboy (alias: longholds) -Holds shrink as they approach the targets -globalmodtimer (alias: modtimer, timer) change the global mod timer for drunk,tipsy,beat etc. 0 = normal 100 = song time 200 = song beat (this will make drunk freeze e.g. during stops!) -globalmodtimermult (alias: modtimermult, timermult) multiplies the global timer by an amount 0 = 1x -100 = 0x 100 = 2x 528 = 6.28x = 1 beat is 1 wave (important) -globalmodtimeroffset (alias: modtimeroffset, timeroffset) offsets the global timer by an amount (0=0, 100=1 etc) -stealth0-n stealth individual columns -reverse0-n reverse individual columns without split/alternate/cross, because seriously, who designed this? why?? -drunk -drunkspeed -drunkoffset (-100 on drunk or tipsy offset causes the whole thing to be in phase, it's also possible to get it to stop moving with these) -drunkperiod (change the period of the oscillations of drunk) -tandrunk (Drunk operates on a tan wave instead of a sine wave, holds periodically tend to infinity. Targets also warp around.) -tandrunkspeed -tandrunkoffset -tandrunkperiod (change the period of the oscillations of tangent drunk) -tipsy -tipsyspeed -tipsyoffset -tantipsy -tantipsyspeed -tantipsyoffset -beat (changed since regular 3.95/ITG such that bpms over 300 don't ruin the beat) -beatoffset (move the timing of the beat mod, add 50% beat offset to move the beat to be on 8ths) -beatperiod (waveform length of the beat mod at peak wave amplitude) -beatmult (multiplies the bpm of the song that beat is responding to) -beaty -beatz (see the above for the modifiers) regarding offsets -100 on drunk or tipsy offset causes the whole thing to be in phase, it's also possible to get it to stop moving with these -zigzag (a triangle wave. Similar to drunk, but with straight lines.) -zigzagperiod (alter the period of the wave. At 2x, 0% zigzagperiod makes 4ths and 8ths alternate, -50% makes [4ths+8ths] alternate with 16ths) 100% will double the period -zigzagoffset (do we want to move the zigzag along?) -sawtooth (similar to zigzag, but with a sawtooth wave) -sawtoothperiod (alter the period of wave. At 2x, 0% sawtoothperiod makes 4ths and 8ths alternate, -50% makes [4ths+8ths] alternate with 16ths) 100% will double the period -parabolax (generic wave for aiding in drawing stuff) -parabolay (generic wave for aiding in drawing stuff) -parabolaz (generic wave for aiding in drawing stuff) -wave (unchanged) -waveperiod (affects the waveform) -sawtoothz -sawtoothzperiod -zigzagz -zigzagzperiod -zigzagzoffset (this is the same as the x variations but in the z axis fov on the playfields is not so you need to use bigger values) -tornado -tornadoperiod (control the helix length) -tornadooffset (control how far into the tornado the receptors are) -tantornado (this is exactly as stupid as it sounds) -tantornadoperiod -tantornadooffset (both of the above offsets will move the receptors) -tornadoz, tantornadoz -I didn't even test these... -spiralx (highly experimental, and stupid) -spiralxperiod (highly experimental, and stupid) -spiraly (highly experimental, and stupid) -spiralyperiod (highly experimental, and stupid) Spiral is readable at 150 spiralx/y -99 spiralperiodx/y -hidden,sudden,hiddenoffset,suddenoffset,stealth and blink for each color (red, green, blue) (use these the same way stealth is used, but to hide hues -confusion (as in SM5, rotate the receptors (and by extension, the arrows too) - use negative dizzy to counteract the spinning...) -confusionoffset (rotate the notes and targets by an amount, and just leave them there) -bounce (notes travel in a rectified sine wave towards the receptors) -square (notes travel in a square wave pattern towards the receptors) -period and offset as seen above will apply to both of these functions -digital (sine wave with variable stepping) -digitalsteps (control the resolution (number of stopping points) of the digital) -digitalperiod -digitaloffset z versions of bounce, square and digital -stealthglowred (or green or blue) (alter the color that stealth glows to before fading) -ActorProxy Copies an actor on the topScreen self:SetTarget('PlayerP1') <- now we have a copy of the playfield of P1 -bumpy -bumpyperiod -bumpyoffset -tanbumpy -tanbumpyperiod -tanbumpyoffset -bumpyx and tanbumpyx (with the same effector properties, period and offset, as bumpy, because the constant sine wave was annoying) -attenuate (aka attenuatex) (functions the same way that parabolax does, but is based on the distance from the center to determine the parabola direction) -movex0-n -movey0-n -movez0-n (move any column anywhere!) (example: 100% movex1 moves the down column one column to the right) -movex (or y or z) (shortcut to move the whole playfield in one direction) -tiny (mini that doesn't affect the targets' positioning) -pulseinner (inner size of the pulse - might remove, as this is basically just additive tiny?) -pulseouter (outer size of the pulse) -pulseperiod (controls how big the wave is) -pulseoffset (controls how far into the wave "0" is) -pulse (controls both inner and outer pulse at the same time) (*2.25 210000000 pulseoffset is interesting at 140bpm) -shrinklinear -shrinkmult (this goes well with attenuatex) -confusiony or x (see confusion) -confusionyoffset or xoffset (see confusionoffset) -dizzyholds (if this value is non zero, dizzy hold heads are enabled) -grain (for controlling how many polygons the holds are made up of. 100% very fine, 1600% is very coarse.) (if the value is 0%, the default (4) pixels is used) -holdtype (!!!!! activate with holdtype mod, this controls the way holds are drawn. Most mods are unchanged, but some mods that have significant effects on the y axis will be altered. Boomerang will draw holds on he way down, and spirals will render properly. This is experimental, and it's not recommended you leave it on.) This mod is also called by "spiralholds" -longholds simply make holds longer yes, that's all it does -stealthtype set the same way as holdtype - makes it so that the stealth is based on musical distance from the receptors rather than physical onscreen distance. -drawsize (scales how far down the arrows stop drawing - 100% doubles the size of the playfield, -100% is no draw) -drawsizeback - like drawsize but for the area behind the targets ------some cool mods------ ------------------------------------------- -----wind tunnel mod by TaroNuke --this is fucking awesome {0,2000,'*1000 1.25x','end'}, --slow it down {0,2000,'*1000 150 spiralx','end'}, {0,2000,'*1000 -96 spiralxperiod','end'}, {0,2000,'*1000 150 spiraly','end'}, {0,2000,'*1000 -96 spiralyperiod','end'}, --control the spiral {0,2000,'*1000 50 centered','end'}, {0,2000,'*1000 100 mini','end'}, --position and size {0,2000,'*1000 spiralholds','end'}, --enable spiral holds {0,2000,'*1000 -100 tiny','end'}, {0,2000,'*1000 -20 flip','end'}, --make everything a bit bigger and more visible {0,2000,'*1000 3000 zigzagz','end'}, {0,2000,'*1000 1000 zigzagzperiod','end'}, --cause the arrows to fall towards the targets from the z axis {0,2000,'*1000 -300 movez','end'}, --move everything away from the camera ------------------------------------------- -----using the offsetters to create a small readable area by the targets {0,2000,'*1000 1.25x','end'}, {0,2000,'*1000 200 spiralx','end'}, {0,2000,'*1000 -95 spiralxperiod','end'}, {0,2000,'*1000 200 spiraly','end'}, {0,2000,'*1000 -95 spiralyperiod','end'}, {0,2000,'*1000 50 centered','end'}, {0,2000,'*1000 100 mini','end'}, {0,2000,'*1000 spiralholds','end'}, {0,2000,'*1000 -100 tiny','end'}, {0,2000,'*1000 -20 flip','end'}, {4,2000,'*0.1 50 brake','end'}, --slow it down in the mercy gap ----outside the table---- for i=0,10 do table.insert(mods,{0,2000,'*1000 15 translatey'..i,'end'}) table.insert(mods,{0,2000,'*1000 '..(1+(i/2))..' translateyoffset'..i,'end'}) end ----------------------------------------------- -----offset the spiralx and y periods for FUNKY shit -- -96 spiralyperiod, -97 spiralxperiod = a weird planetarium [Editor] -F opens a new menu of nITG features -Use G and H as shortcuts to edit BPM changes and stops -CTRL G and CTRL H can delete bpm changes and stops -Deleting BPMs less than 1/32nd of the way into the song is not allowed -Negative BPM and stop values can now be typed in in the editor -Fixed edit preview length using { and } hotkeys -CTRL+S, X, C and V act as save, cut, copy and paste //GOING AWAY SOON, 20THS/96THS INPUT IS MUCH BETTER -Make20ths within the compress options (Enter menu) (It's Compress 5->4 without changing the BPM - creates a 20th stream out of an equivalent 16th stream) -Undo20ths - in case you fucked up -New Turn mods (in the enter menu) -SwapLR (swaps lefts with rights) = CTRL+Left arrow -SwapUD = CTRL+Right arrow -New preference lets you choose if you want to autosave -also lets you choose how often -also lets you choose if whether or not you want the autosaves to save into a different file (.auto) -autosaving is silent -Can choose to output a lua table of the currently highlighted note data into an xml file from the ESC menu -Give the table a name -illegal characters are stripped -editor remembers which name was last used -50 notes per measure limit removed -Tween Overflow popup window replaced with an in-game System Message -The system message details the x and y positons of the overflowing actor, to help you track it down -Edit Steps Information can go above 13 (new limit is 30, because that's what this game has become AMIRITE) -Bpm shifts now treated properly, all your warps and high BPMs are instantaneous, instead of delayed. -F1 "help" menu no longer appears in editor - this was causing dumb crashes -PauseGame added -called with SCREENMAN:GetTopScreen():PauseGame(true) during ScreenGameplay, unpause by using false -Actors don't pause, so you can have minigames that continue while songs pause. -While music isn't playing, Actors can be sped up/slowed down with TAB/¬ -Better tween overflow message -Tells you which file or object type is overflowing, and where the xml file is located. -The full path doesn't always fit on the screen, but it's easy to read it all in the console window or log.txt -Can choose to broadcast note crossed messages in the editor (preference), telling the game when an arrow has passed the receptors (e.g. StepCrossed0MessageCommand, MineCrossed3MessageCommand) -Player 1 and 2's judgment/combo positions and sizes now reset every time you start the song -New Preferences (select from "Preferences" in the "ESC" menu) -Ability to show Player 2 in editor, useful for courses with asymmetrical or playfield mods -P1 will be centered if P2 is turned off, just like the old editor. -Ability to hide BPM changes, Stops and measure line indicators during "editor gameplay" -Text Entry -The on-screen keyboard has been removed -Player 2 -Player 2's notes will update when the song is opened, and will not update until you select "reload P2 steps" from the ESC menu. -This is handy because it allows two charts to be compared side by side during gameplay. -In-simfile lua that affects PlayerP1 and PlayerP2 playfield objects will affect the corresponding notefields accordingly. -Asymmetrical mods applied to players 1 and 2 will affect the corresponding notefields accordingly. -The screen will no longer get stuck performing a SCREENMAN effect when transitioning between playing and editing. -The screen returns to its original position (and rotation, and size!) when you return to editing mode. -lua targeted at SongForeground and SongBackground will work too. -lua targeting things that aren't on the editor screen but are on gameplay (e.g. Lyrics, Stage, ScoreFrame, LifeP1, ScoreP2) will no longer crash the game. -"Edit steps information" has been moved to the bottom of the ESC menu (from the top) -BUGFIX: Editor no longer plays around with DedicatedMenuButtons -BUGFIX: Creating an edit chart no longer crashes -(This was related to Text Entry) Misc -More sorting options allowing Courses to be sorted by Folder Go into metrics.ini, ctrl+f for CourseSortOrder=, change it to "4" everywhere it appears, and also add that to Static.ini -"Error loading sprite file" no longer crashes the game - it uses a popup window instead -"Small negative number" Actor crash from negative Actor Update times has been removed -it corrects itself and continues as normal, instead of crashing. -it warns you of a bad update delta via system message and in the log. -All menus now broadcast Step/Lift Messages, e.g. StepPressLeft and StepLiftRight (don't ask) -"The error reporting interface has crashed" now picks randomly from 42 messages. -http://pastebin.com/JRj2qrYT -"Crash Reason: Access Violation" -> "Crash Reason: The cat doesn't like it" (don't ask) -Wireframe mode added to F3 (debug) menu, F3+O -Force crash also added (F3+I) Misc 2 -More inputs -BullshitUp/Down/Left/Right configurable in config key/joy mappings -Action1-8 also configurable -Real input messages now broadcast on every screen without needing noteskins StepP1LeftPressMessageCommand StepP2RightLiftMessageCommand StepP1BullshitRightMessageCommand StepP2Action3LiftMessageCommand -Settable shader flags from within simfile -GAMESTATE:SetShaderFlag(shaderkey) -GAMESTATE:SetShaderFlagNum(key,which) -must set to 0 before another key can be pressed -Requires ReShade to be running, and the ShaderKeys program to be hooked into openITG -Occasionally, the memory addresses of the shader flags need updating -Cel Shading toggle added to models - self:SetCelShaded(1) -self:SetLineColor(r,g,b,a) -self:SetLineWidth(wid) --max of 10 -Can Edit Textures -Can Move UV maps around -ActorFrameTexture Creates a texture in memory of everything BENEATH it (draw-order-dependent) NOT ACTUALLY AN ON SCREEN OBJECT. The created texture must be placed on a sprite. Example: ------------------------------------------------------------------------ ---------------------------------------------------------------------------- --this "Sprite" (t_sprite_bg) is a copy of the topscreen that can be tweened like any sprite. --I put a black quad behind it. --You can put things on top of the sprite and they won't be part of the AFT. --You can put another AFT on top of this to capture the changes made to the topscreen in another texture. --The new texture must be placed on a second sprite. -ActorProxy (See SM5 implementation) -fov and SetFOV now works on playfield actors -addvanishx and addvanishy can now be used to fuck with the vanishing point of the playfield -Changes to models Models can have ActorFrameTextures rendered to them Models are now less fatal - missing textures or materials don't crash -Changes to sprites Malformed sprites no longer crash the game - a text warning pops up instead -Changes to XML Malformed XML such as stuff will no longer crash, but have a warning, and abort loading the script. -Choose whether you want music previews to loop or not on ScreenSelectMusic (in Data/StepMania.ini) -Alignment now functions like sm5 TO DO (eventually) -Fix "Compress 2x" etc. behavior regarding holds - it needs to make them shorter/longer as appropriate -this behavior was fine in SM3.9, so it shouldn't be too hard to fix. -Warn of missing graphics when in edit mode [removal] - Remove "Characters" (dancing characters) and all related code from main folder. -