├── Fonts ├── EditMenu title.redir ├── EditMenu value.redir ├── OptionRow item.redir ├── OptionRow title.redir ├── ScreenEdit Info.redir ├── ScreenEdit EditHelp.redir ├── ScreenPrompt answer.redir ├── corbel.redir ├── editor.redir ├── ScreenEdit PlayRecordHelp.redir ├── ScreenPrompt question.redir ├── ScreenTextEntry answer.redir ├── ScreenTextEntry question.redir ├── regen normal.redir ├── regen silver.redir ├── regen small.redir ├── ScreenDebugOverlay header.redir ├── ScreenEditMenu explanation.redir ├── regen strong.redir ├── roboto numbers.redir ├── ScreenDebugOverlay line.redir ├── ScreenDebugOverlay page.redir ├── bebas neue.redir ├── roboto regular.redir ├── ScreenEditMenu NumStepsLoadedFromProfile.redir ├── ScreenMapControllers devices.redir ├── ScreenMapControllers entry.redir ├── ScreenMapControllers title.redir ├── titillium regular.redir ├── regen │ ├── _regen 26px [alt] 10x10.png │ ├── _regen 26px [main] 15x15.png │ ├── _regen 40px [alt] 10x10.png │ ├── _regen 40px [main] 15x15.png │ ├── _regen 80px [alt] 10x10.png │ ├── _regen 80px [main] 15x15.png │ ├── _regen 26px [alt-stroke] 10x10.png │ ├── _regen 26px [main-stroke] 15x15.png │ ├── _regen 40px [alt-stroke] 10x10.png │ ├── _regen 40px [main-stroke] 15x15.png │ ├── _regen-strong 26px [alt] 10x10.png │ ├── _regen-strong 26px [main] 15x15.png │ ├── _regen-strong 26px [alt-stroke] 10x10.png │ ├── _regen-strong 26px [main-stroke] 15x15.png │ ├── _regen 26px.ini │ ├── _regen-strong 26px.ini │ ├── _regen 40px.ini │ └── _regen 80px.ini ├── corbel │ ├── _corbel 28px [alt] 10x10.png │ ├── _corbel 28px [main] 15x15.png │ ├── _corbel 28px [alt-stroke] 10x10.png │ ├── _corbel 28px [main-stroke] 15x15.png │ └── _corbel 28px.ini ├── roboto │ ├── _roboto bk 32px [alt] 10x10.png │ ├── _roboto bk 32px [main] 15x15.png │ ├── _roboto bk 32px [alt-stroke] 10x10.png │ ├── _roboto bk 32px [main-stroke] 15x15.png │ ├── _roboto Medium 24px [alt] 10x10 (doubleres).png │ ├── _roboto Medium 24px [main] 15x15 (doubleres).png │ ├── _roboto Medium 24px [alt-stroke] 10x10 (doubleres).png │ ├── _roboto Medium 24px [main-stroke] 15x15 (doubleres).png │ ├── _roboto Medium 24px.ini │ └── _roboto bk 32px.ini ├── bebas neue │ ├── _bebas neue 70px [alt] 10x10.png │ ├── _bebas neue 70px [main] 15x15.png │ ├── _bebas neue 70px [alt-stroke] 10x10.png │ ├── _bebas neue 70px [main-stroke] 15x15.png │ └── _bebas neue 70px.ini └── titillium web │ ├── _titillium web semibold 26px [alt] 10x10.png │ ├── _titillium web semibold 26px [main] 15x15.png │ ├── _titillium web semibold 26px [alt-stroke] 10x10.png │ ├── _titillium web semibold 26px [main-stroke] 15x15.png │ ├── doubleres │ ├── _titillium web semibold 26px [main-stroke] 15x15.png │ ├── _titillium web semibold 26px [alt] 10x10 (doubleres).png │ ├── _titillium web semibold 26px [main] 15x15 (doubleres).png │ └── _titillium web semibold 26px [alt-stroke] 10x10 (doubleres).png │ └── _titillium web semibold 26px.ini ├── .gitignore ├── BGAnimations ├── ScreenMiniMenu in.redir ├── ScreenMiniMenu out.redir ├── ScreenPrompt in.redir ├── ScreenPrompt out.redir ├── ScreenAttract overlay.redir ├── ScreenEdit decorations.redir ├── ScreenMiniMenu overlay.redir ├── ScreenMiniMenuContext.redir ├── ScreenPlayerOptions in.redir ├── ScreenPlayerOptions out.redir ├── ScreenPrompt overlay.redir ├── ScreenTextEntry overlay.redir ├── ScreenAttract decorations.redir ├── ScreenGameplay decorations.redir ├── ScreenMiniMenu decorations.redir ├── ScreenMiniMenu underlay.redir ├── ScreenPlayerOptions overlay.redir ├── ScreenPrompt decorations.redir ├── ScreenPrompt underlay.redir ├── ScreenTextEntry decorations.redir ├── _ScreenSystemLayer overlay.redir ├── ScreenEditOptions underlay.redir ├── ScreenPlayerOptions decorations.redir ├── ScreenPlayerOptions underlay.redir ├── ScreenTextEntry underlay.redir ├── ScreenStageInformation decorations.redir ├── ScreenEditMenu underlay.redir ├── ScreenGameplay overlay │ ├── mask.png │ ├── center.png │ ├── corner.png │ ├── tip 2x1.png │ ├── basemeter 1x2.png │ ├── frame (stretch).png │ ├── hot_lores (stretch).png │ ├── assets │ │ ├── newfield.lua │ │ ├── progress.lua │ │ ├── decorations.lua │ │ └── offset.lua │ └── default.lua ├── _white.lua ├── ScreenWithMenuElements background.lua ├── _screen dim.lua ├── _flash out.lua ├── ScreenEdit overlay │ ├── default.lua │ └── assets │ │ └── judgment.lua ├── ScreenGameplay underlay │ ├── default.lua │ └── assets │ │ ├── filter.lua │ │ └── counter.lua ├── ScreenMapControllers decorations.lua ├── ScreenUnjoin underlay.lua ├── _flash in.lua ├── ScreenGameplay background.lua ├── ScreenEdit background.lua ├── ScreenGameplay in.lua ├── _assets │ ├── transition.lua │ ├── fulldisplay.lua │ ├── cursteps.lua │ └── sound.lua ├── ScreenProfileLoad overlay.lua ├── ScreenProfileSave overlay.lua ├── ScreenTitleMenu underlay.lua ├── ScreenWithMenuElements overlay.lua ├── ScreenInit background.lua ├── ScreenEvaluationCustom underlay │ ├── default.lua │ └── assets │ │ ├── information.lua │ │ └── menu.lua ├── ScreenSyncOverlay overlay.lua ├── ScreenSelectMusicCustom underlay │ ├── default.lua │ └── assets │ │ └── notefield.lua └── ScreenWithMenuElements decorations.lua ├── Sounds ├── ScreenSelectMaster change.redir ├── ScreenSelectMaster start.redir ├── Confirm.ogg ├── Group.wav ├── Select.ogg ├── State.wav ├── Steps.wav ├── Switch.mp3 ├── Mainmenu.wav ├── Difficulty.ogg └── ScreenEdit save.mp3 ├── Graphics ├── bg.png ├── USB.png ├── dim.png ├── glow.png ├── holes.png ├── noise.png ├── panel.png ├── tick.png ├── wave.png ├── border.png ├── checker.png ├── counter.png ├── folder.png ├── hex 1x5.png ├── lifebg.png ├── overlay.png ├── arrows 2x2.png ├── cursor 2x3.png ├── eval │ ├── shine.png │ ├── wave.png │ ├── AA_glow.png │ ├── A_glow.png │ ├── B_glow.png │ ├── C_glow.png │ ├── D_glow.png │ ├── F_glow.png │ ├── SS_glow.png │ ├── S_glow.png │ ├── AAAA_glow.png │ ├── AAA_glow.png │ ├── AAA_normal.png │ ├── AA_normal.png │ ├── A_normal.png │ ├── B_normal.png │ ├── C_normal.png │ ├── D_normal.png │ ├── F_normal.png │ ├── SS_normal.png │ ├── S_normal.png │ ├── AAAA_normal.png │ ├── Failed_glow.png │ └── Failed_normal.png ├── label 1x2.png ├── logo │ ├── base.png │ ├── blur.png │ ├── glow.png │ └── default.lua ├── radar 3x2.png ├── separator.png ├── sidepanel.png ├── ssc_logo.png ├── bannerframe.png ├── litepane 3x1.png ├── mainmenu 2x2.png ├── menuslot 4x2.png ├── profileslot.png ├── WheelItemFrame.png ├── lifeborder 3x1.png ├── menu_icons │ ├── menu.png │ └── bool 1x2.png ├── miniarrows 2x1.png ├── navigation 3x3.png ├── stepspane 3x2.png ├── titlepanel 3x1.png ├── EditMenu Left 1x8.png ├── ScrollBar middle.png ├── quads (doubleres).png ├── EditMenu Right 1x8.png ├── NoteField bars 1x4.png ├── ScrollBar TickThumb.png ├── SnapDisplay icon 9x1.png ├── _pattern (stretch).png ├── ssc_text (doubleres).png ├── Common fallback banner.png ├── Common fallback preview.png ├── Common fallback background.png ├── hex decoration (doubleres).png ├── OptionsCursor Left (doubleres).png ├── Player judgment │ ├── Judgment 1x6.png │ └── default.lua ├── OptionsCursor Middle (doubleres).png ├── OptionsCursor Right (doubleres).png ├── ScreenPrompt cursor.lua ├── ScreenMapControllers action.lua ├── ScreenTitleMenu icon.lua ├── field.lua ├── ScreenTitleMenu scroll.lua ├── footer │ └── default.lua └── Player combo │ └── default.lua ├── README.md ├── LICENSE ├── Scripts ├── Global.lua ├── Fonts.lua ├── Colors.lua ├── Assets.lua ├── Input.lua ├── PIU.lua └── Master.lua └── Languages └── en.ini /Fonts/EditMenu title.redir: -------------------------------------------------------------------------------- 1 | editor -------------------------------------------------------------------------------- /Fonts/EditMenu value.redir: -------------------------------------------------------------------------------- 1 | editor -------------------------------------------------------------------------------- /Fonts/OptionRow item.redir: -------------------------------------------------------------------------------- 1 | editor -------------------------------------------------------------------------------- /Fonts/OptionRow title.redir: -------------------------------------------------------------------------------- 1 | editor -------------------------------------------------------------------------------- /Fonts/ScreenEdit Info.redir: -------------------------------------------------------------------------------- 1 | editor -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | *.psd 3 | *.asl 4 | -------------------------------------------------------------------------------- /Fonts/ScreenEdit EditHelp.redir: -------------------------------------------------------------------------------- 1 | editor -------------------------------------------------------------------------------- /Fonts/ScreenPrompt answer.redir: -------------------------------------------------------------------------------- 1 | editor -------------------------------------------------------------------------------- /Fonts/corbel.redir: -------------------------------------------------------------------------------- 1 | corbel/_corbel 28px -------------------------------------------------------------------------------- /Fonts/editor.redir: -------------------------------------------------------------------------------- 1 | titillium regular -------------------------------------------------------------------------------- /BGAnimations/ScreenMiniMenu in.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenMiniMenu out.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenPrompt in.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenPrompt out.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /Fonts/ScreenEdit PlayRecordHelp.redir: -------------------------------------------------------------------------------- 1 | editor -------------------------------------------------------------------------------- /Fonts/ScreenPrompt question.redir: -------------------------------------------------------------------------------- 1 | editor -------------------------------------------------------------------------------- /Fonts/ScreenTextEntry answer.redir: -------------------------------------------------------------------------------- 1 | editor -------------------------------------------------------------------------------- /Fonts/ScreenTextEntry question.redir: -------------------------------------------------------------------------------- 1 | editor -------------------------------------------------------------------------------- /Fonts/regen normal.redir: -------------------------------------------------------------------------------- 1 | regen/_regen 80px -------------------------------------------------------------------------------- /Fonts/regen silver.redir: -------------------------------------------------------------------------------- 1 | regen/_regen 40px -------------------------------------------------------------------------------- /Fonts/regen small.redir: -------------------------------------------------------------------------------- 1 | regen/_regen 26px -------------------------------------------------------------------------------- /BGAnimations/ScreenAttract overlay.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenEdit decorations.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenMiniMenu overlay.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenMiniMenuContext.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenPlayerOptions in.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenPlayerOptions out.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenPrompt overlay.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenTextEntry overlay.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /Fonts/ScreenDebugOverlay header.redir: -------------------------------------------------------------------------------- 1 | bebas neue -------------------------------------------------------------------------------- /Fonts/ScreenEditMenu explanation.redir: -------------------------------------------------------------------------------- 1 | editor -------------------------------------------------------------------------------- /Fonts/regen strong.redir: -------------------------------------------------------------------------------- 1 | regen/_regen-strong 26px -------------------------------------------------------------------------------- /Fonts/roboto numbers.redir: -------------------------------------------------------------------------------- 1 | roboto/_roboto bk 32px -------------------------------------------------------------------------------- /Sounds/ScreenSelectMaster change.redir: -------------------------------------------------------------------------------- 1 | _silent -------------------------------------------------------------------------------- /Sounds/ScreenSelectMaster start.redir: -------------------------------------------------------------------------------- 1 | _silent -------------------------------------------------------------------------------- /BGAnimations/ScreenAttract decorations.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay decorations.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenMiniMenu decorations.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenMiniMenu underlay.redir: -------------------------------------------------------------------------------- 1 | _screen dim -------------------------------------------------------------------------------- /BGAnimations/ScreenPlayerOptions overlay.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenPrompt decorations.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenPrompt underlay.redir: -------------------------------------------------------------------------------- 1 | _screen dim -------------------------------------------------------------------------------- /BGAnimations/ScreenTextEntry decorations.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/_ScreenSystemLayer overlay.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /Fonts/ScreenDebugOverlay line.redir: -------------------------------------------------------------------------------- 1 | titillium regular -------------------------------------------------------------------------------- /Fonts/ScreenDebugOverlay page.redir: -------------------------------------------------------------------------------- 1 | titillium regular -------------------------------------------------------------------------------- /Fonts/bebas neue.redir: -------------------------------------------------------------------------------- 1 | bebas neue/_bebas neue 70px -------------------------------------------------------------------------------- /Fonts/roboto regular.redir: -------------------------------------------------------------------------------- 1 | roboto/_roboto Medium 24px -------------------------------------------------------------------------------- /BGAnimations/ScreenEditOptions underlay.redir: -------------------------------------------------------------------------------- 1 | _screen dim -------------------------------------------------------------------------------- /BGAnimations/ScreenPlayerOptions decorations.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenPlayerOptions underlay.redir: -------------------------------------------------------------------------------- 1 | _screen dim -------------------------------------------------------------------------------- /BGAnimations/ScreenTextEntry underlay.redir: -------------------------------------------------------------------------------- 1 | _screen dim -------------------------------------------------------------------------------- /Fonts/ScreenEditMenu NumStepsLoadedFromProfile.redir: -------------------------------------------------------------------------------- 1 | editor -------------------------------------------------------------------------------- /Fonts/ScreenMapControllers devices.redir: -------------------------------------------------------------------------------- 1 | titillium regular -------------------------------------------------------------------------------- /Fonts/ScreenMapControllers entry.redir: -------------------------------------------------------------------------------- 1 | titillium regular -------------------------------------------------------------------------------- /Fonts/ScreenMapControllers title.redir: -------------------------------------------------------------------------------- 1 | titillium regular -------------------------------------------------------------------------------- /BGAnimations/ScreenStageInformation decorations.redir: -------------------------------------------------------------------------------- 1 | _blank -------------------------------------------------------------------------------- /BGAnimations/ScreenEditMenu underlay.redir: -------------------------------------------------------------------------------- 1 | ScreenOptions underlay -------------------------------------------------------------------------------- /Fonts/titillium regular.redir: -------------------------------------------------------------------------------- 1 | titillium web/_titillium web semibold 26px -------------------------------------------------------------------------------- /Graphics/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/bg.png -------------------------------------------------------------------------------- /Graphics/USB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/USB.png -------------------------------------------------------------------------------- /Graphics/dim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/dim.png -------------------------------------------------------------------------------- /Graphics/glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/glow.png -------------------------------------------------------------------------------- /Graphics/holes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/holes.png -------------------------------------------------------------------------------- /Graphics/noise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/noise.png -------------------------------------------------------------------------------- /Graphics/panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/panel.png -------------------------------------------------------------------------------- /Graphics/tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/tick.png -------------------------------------------------------------------------------- /Graphics/wave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/wave.png -------------------------------------------------------------------------------- /Sounds/Confirm.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Sounds/Confirm.ogg -------------------------------------------------------------------------------- /Sounds/Group.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Sounds/Group.wav -------------------------------------------------------------------------------- /Sounds/Select.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Sounds/Select.ogg -------------------------------------------------------------------------------- /Sounds/State.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Sounds/State.wav -------------------------------------------------------------------------------- /Sounds/Steps.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Sounds/Steps.wav -------------------------------------------------------------------------------- /Sounds/Switch.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Sounds/Switch.mp3 -------------------------------------------------------------------------------- /Graphics/border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/border.png -------------------------------------------------------------------------------- /Graphics/checker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/checker.png -------------------------------------------------------------------------------- /Graphics/counter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/counter.png -------------------------------------------------------------------------------- /Graphics/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/folder.png -------------------------------------------------------------------------------- /Graphics/hex 1x5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/hex 1x5.png -------------------------------------------------------------------------------- /Graphics/lifebg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/lifebg.png -------------------------------------------------------------------------------- /Graphics/overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/overlay.png -------------------------------------------------------------------------------- /Sounds/Mainmenu.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Sounds/Mainmenu.wav -------------------------------------------------------------------------------- /Graphics/arrows 2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/arrows 2x2.png -------------------------------------------------------------------------------- /Graphics/cursor 2x3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/cursor 2x3.png -------------------------------------------------------------------------------- /Graphics/eval/shine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/shine.png -------------------------------------------------------------------------------- /Graphics/eval/wave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/wave.png -------------------------------------------------------------------------------- /Graphics/label 1x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/label 1x2.png -------------------------------------------------------------------------------- /Graphics/logo/base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/logo/base.png -------------------------------------------------------------------------------- /Graphics/logo/blur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/logo/blur.png -------------------------------------------------------------------------------- /Graphics/logo/glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/logo/glow.png -------------------------------------------------------------------------------- /Graphics/radar 3x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/radar 3x2.png -------------------------------------------------------------------------------- /Graphics/separator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/separator.png -------------------------------------------------------------------------------- /Graphics/sidepanel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/sidepanel.png -------------------------------------------------------------------------------- /Graphics/ssc_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/ssc_logo.png -------------------------------------------------------------------------------- /Sounds/Difficulty.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Sounds/Difficulty.ogg -------------------------------------------------------------------------------- /Graphics/bannerframe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/bannerframe.png -------------------------------------------------------------------------------- /Graphics/eval/AA_glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/AA_glow.png -------------------------------------------------------------------------------- /Graphics/eval/A_glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/A_glow.png -------------------------------------------------------------------------------- /Graphics/eval/B_glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/B_glow.png -------------------------------------------------------------------------------- /Graphics/eval/C_glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/C_glow.png -------------------------------------------------------------------------------- /Graphics/eval/D_glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/D_glow.png -------------------------------------------------------------------------------- /Graphics/eval/F_glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/F_glow.png -------------------------------------------------------------------------------- /Graphics/eval/SS_glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/SS_glow.png -------------------------------------------------------------------------------- /Graphics/eval/S_glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/S_glow.png -------------------------------------------------------------------------------- /Graphics/litepane 3x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/litepane 3x1.png -------------------------------------------------------------------------------- /Graphics/mainmenu 2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/mainmenu 2x2.png -------------------------------------------------------------------------------- /Graphics/menuslot 4x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/menuslot 4x2.png -------------------------------------------------------------------------------- /Graphics/profileslot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/profileslot.png -------------------------------------------------------------------------------- /Graphics/WheelItemFrame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/WheelItemFrame.png -------------------------------------------------------------------------------- /Graphics/eval/AAAA_glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/AAAA_glow.png -------------------------------------------------------------------------------- /Graphics/eval/AAA_glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/AAA_glow.png -------------------------------------------------------------------------------- /Graphics/eval/AAA_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/AAA_normal.png -------------------------------------------------------------------------------- /Graphics/eval/AA_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/AA_normal.png -------------------------------------------------------------------------------- /Graphics/eval/A_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/A_normal.png -------------------------------------------------------------------------------- /Graphics/eval/B_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/B_normal.png -------------------------------------------------------------------------------- /Graphics/eval/C_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/C_normal.png -------------------------------------------------------------------------------- /Graphics/eval/D_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/D_normal.png -------------------------------------------------------------------------------- /Graphics/eval/F_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/F_normal.png -------------------------------------------------------------------------------- /Graphics/eval/SS_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/SS_normal.png -------------------------------------------------------------------------------- /Graphics/eval/S_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/S_normal.png -------------------------------------------------------------------------------- /Graphics/lifeborder 3x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/lifeborder 3x1.png -------------------------------------------------------------------------------- /Graphics/menu_icons/menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/menu_icons/menu.png -------------------------------------------------------------------------------- /Graphics/miniarrows 2x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/miniarrows 2x1.png -------------------------------------------------------------------------------- /Graphics/navigation 3x3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/navigation 3x3.png -------------------------------------------------------------------------------- /Graphics/stepspane 3x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/stepspane 3x2.png -------------------------------------------------------------------------------- /Graphics/titlepanel 3x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/titlepanel 3x1.png -------------------------------------------------------------------------------- /Sounds/ScreenEdit save.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Sounds/ScreenEdit save.mp3 -------------------------------------------------------------------------------- /Graphics/EditMenu Left 1x8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/EditMenu Left 1x8.png -------------------------------------------------------------------------------- /Graphics/ScrollBar middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/ScrollBar middle.png -------------------------------------------------------------------------------- /Graphics/eval/AAAA_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/AAAA_normal.png -------------------------------------------------------------------------------- /Graphics/eval/Failed_glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/Failed_glow.png -------------------------------------------------------------------------------- /Graphics/quads (doubleres).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/quads (doubleres).png -------------------------------------------------------------------------------- /Graphics/EditMenu Right 1x8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/EditMenu Right 1x8.png -------------------------------------------------------------------------------- /Graphics/NoteField bars 1x4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/NoteField bars 1x4.png -------------------------------------------------------------------------------- /Graphics/ScrollBar TickThumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/ScrollBar TickThumb.png -------------------------------------------------------------------------------- /Graphics/SnapDisplay icon 9x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/SnapDisplay icon 9x1.png -------------------------------------------------------------------------------- /Graphics/_pattern (stretch).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/_pattern (stretch).png -------------------------------------------------------------------------------- /Graphics/eval/Failed_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/eval/Failed_normal.png -------------------------------------------------------------------------------- /Graphics/menu_icons/bool 1x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/menu_icons/bool 1x2.png -------------------------------------------------------------------------------- /Graphics/ssc_text (doubleres).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/ssc_text (doubleres).png -------------------------------------------------------------------------------- /Graphics/Common fallback banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/Common fallback banner.png -------------------------------------------------------------------------------- /Graphics/Common fallback preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/Common fallback preview.png -------------------------------------------------------------------------------- /Fonts/regen/_regen 26px [alt] 10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/regen/_regen 26px [alt] 10x10.png -------------------------------------------------------------------------------- /Fonts/regen/_regen 26px [main] 15x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/regen/_regen 26px [main] 15x15.png -------------------------------------------------------------------------------- /Fonts/regen/_regen 40px [alt] 10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/regen/_regen 40px [alt] 10x10.png -------------------------------------------------------------------------------- /Fonts/regen/_regen 40px [main] 15x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/regen/_regen 40px [main] 15x15.png -------------------------------------------------------------------------------- /Fonts/regen/_regen 80px [alt] 10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/regen/_regen 80px [alt] 10x10.png -------------------------------------------------------------------------------- /Fonts/regen/_regen 80px [main] 15x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/regen/_regen 80px [main] 15x15.png -------------------------------------------------------------------------------- /Graphics/Common fallback background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/Common fallback background.png -------------------------------------------------------------------------------- /Graphics/hex decoration (doubleres).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/hex decoration (doubleres).png -------------------------------------------------------------------------------- /Fonts/corbel/_corbel 28px [alt] 10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/corbel/_corbel 28px [alt] 10x10.png -------------------------------------------------------------------------------- /Fonts/corbel/_corbel 28px [main] 15x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/corbel/_corbel 28px [main] 15x15.png -------------------------------------------------------------------------------- /Graphics/OptionsCursor Left (doubleres).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/OptionsCursor Left (doubleres).png -------------------------------------------------------------------------------- /Graphics/Player judgment/Judgment 1x6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/Player judgment/Judgment 1x6.png -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay overlay/mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/BGAnimations/ScreenGameplay overlay/mask.png -------------------------------------------------------------------------------- /Fonts/roboto/_roboto bk 32px [alt] 10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/roboto/_roboto bk 32px [alt] 10x10.png -------------------------------------------------------------------------------- /Fonts/roboto/_roboto bk 32px [main] 15x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/roboto/_roboto bk 32px [main] 15x15.png -------------------------------------------------------------------------------- /Graphics/OptionsCursor Middle (doubleres).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/OptionsCursor Middle (doubleres).png -------------------------------------------------------------------------------- /Graphics/OptionsCursor Right (doubleres).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Graphics/OptionsCursor Right (doubleres).png -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay overlay/center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/BGAnimations/ScreenGameplay overlay/center.png -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay overlay/corner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/BGAnimations/ScreenGameplay overlay/corner.png -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay overlay/tip 2x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/BGAnimations/ScreenGameplay overlay/tip 2x1.png -------------------------------------------------------------------------------- /Fonts/corbel/_corbel 28px [alt-stroke] 10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/corbel/_corbel 28px [alt-stroke] 10x10.png -------------------------------------------------------------------------------- /Fonts/regen/_regen 26px [alt-stroke] 10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/regen/_regen 26px [alt-stroke] 10x10.png -------------------------------------------------------------------------------- /Fonts/regen/_regen 26px [main-stroke] 15x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/regen/_regen 26px [main-stroke] 15x15.png -------------------------------------------------------------------------------- /Fonts/regen/_regen 40px [alt-stroke] 10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/regen/_regen 40px [alt-stroke] 10x10.png -------------------------------------------------------------------------------- /Fonts/regen/_regen 40px [main-stroke] 15x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/regen/_regen 40px [main-stroke] 15x15.png -------------------------------------------------------------------------------- /Fonts/regen/_regen-strong 26px [alt] 10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/regen/_regen-strong 26px [alt] 10x10.png -------------------------------------------------------------------------------- /Fonts/regen/_regen-strong 26px [main] 15x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/regen/_regen-strong 26px [main] 15x15.png -------------------------------------------------------------------------------- /BGAnimations/_white.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{} 2 | 3 | t[#t+1] = Def.Quad{ 4 | InitCommand=cmd(diffuse,1,1,1,1;FullScreen); 5 | }; 6 | 7 | return t -------------------------------------------------------------------------------- /Fonts/bebas neue/_bebas neue 70px [alt] 10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/bebas neue/_bebas neue 70px [alt] 10x10.png -------------------------------------------------------------------------------- /Fonts/bebas neue/_bebas neue 70px [main] 15x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/bebas neue/_bebas neue 70px [main] 15x15.png -------------------------------------------------------------------------------- /Fonts/corbel/_corbel 28px [main-stroke] 15x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/corbel/_corbel 28px [main-stroke] 15x15.png -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay overlay/basemeter 1x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/BGAnimations/ScreenGameplay overlay/basemeter 1x2.png -------------------------------------------------------------------------------- /BGAnimations/ScreenWithMenuElements background.lua: -------------------------------------------------------------------------------- 1 | return LoadActor(THEME:GetPathG("","bg"))..{ 2 | InitCommand=cmd(Center;diffuse,Global.bgcolor); 3 | }; -------------------------------------------------------------------------------- /Fonts/roboto/_roboto bk 32px [alt-stroke] 10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/roboto/_roboto bk 32px [alt-stroke] 10x10.png -------------------------------------------------------------------------------- /Fonts/roboto/_roboto bk 32px [main-stroke] 15x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/roboto/_roboto bk 32px [main-stroke] 15x15.png -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay overlay/frame (stretch).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/BGAnimations/ScreenGameplay overlay/frame (stretch).png -------------------------------------------------------------------------------- /Fonts/regen/_regen-strong 26px [alt-stroke] 10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/regen/_regen-strong 26px [alt-stroke] 10x10.png -------------------------------------------------------------------------------- /Fonts/regen/_regen-strong 26px [main-stroke] 15x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/regen/_regen-strong 26px [main-stroke] 15x15.png -------------------------------------------------------------------------------- /Fonts/bebas neue/_bebas neue 70px [alt-stroke] 10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/bebas neue/_bebas neue 70px [alt-stroke] 10x10.png -------------------------------------------------------------------------------- /Fonts/bebas neue/_bebas neue 70px [main-stroke] 15x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/bebas neue/_bebas neue 70px [main-stroke] 15x15.png -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay overlay/hot_lores (stretch).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/BGAnimations/ScreenGameplay overlay/hot_lores (stretch).png -------------------------------------------------------------------------------- /Fonts/roboto/_roboto Medium 24px [alt] 10x10 (doubleres).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/roboto/_roboto Medium 24px [alt] 10x10 (doubleres).png -------------------------------------------------------------------------------- /Fonts/roboto/_roboto Medium 24px [main] 15x15 (doubleres).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/roboto/_roboto Medium 24px [main] 15x15 (doubleres).png -------------------------------------------------------------------------------- /Fonts/titillium web/_titillium web semibold 26px [alt] 10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/titillium web/_titillium web semibold 26px [alt] 10x10.png -------------------------------------------------------------------------------- /Fonts/titillium web/_titillium web semibold 26px [main] 15x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/titillium web/_titillium web semibold 26px [main] 15x15.png -------------------------------------------------------------------------------- /Fonts/roboto/_roboto Medium 24px [alt-stroke] 10x10 (doubleres).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/roboto/_roboto Medium 24px [alt-stroke] 10x10 (doubleres).png -------------------------------------------------------------------------------- /Fonts/roboto/_roboto Medium 24px [main-stroke] 15x15 (doubleres).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/roboto/_roboto Medium 24px [main-stroke] 15x15 (doubleres).png -------------------------------------------------------------------------------- /BGAnimations/_screen dim.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{} 2 | 3 | t[#t+1] = Def.Quad{ 4 | InitCommand=cmd(diffuse,0,0,0,0.9;zoomto,SCREEN_WIDTH,SCREEN_HEIGHT;Center); 5 | }; 6 | 7 | return t -------------------------------------------------------------------------------- /Fonts/titillium web/_titillium web semibold 26px [alt-stroke] 10x10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/titillium web/_titillium web semibold 26px [alt-stroke] 10x10.png -------------------------------------------------------------------------------- /Fonts/titillium web/_titillium web semibold 26px [main-stroke] 15x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/titillium web/_titillium web semibold 26px [main-stroke] 15x15.png -------------------------------------------------------------------------------- /Fonts/titillium web/doubleres/_titillium web semibold 26px [main-stroke] 15x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/titillium web/doubleres/_titillium web semibold 26px [main-stroke] 15x15.png -------------------------------------------------------------------------------- /Fonts/titillium web/doubleres/_titillium web semibold 26px [alt] 10x10 (doubleres).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/titillium web/doubleres/_titillium web semibold 26px [alt] 10x10 (doubleres).png -------------------------------------------------------------------------------- /Fonts/titillium web/doubleres/_titillium web semibold 26px [main] 15x15 (doubleres).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/titillium web/doubleres/_titillium web semibold 26px [main] 15x15 (doubleres).png -------------------------------------------------------------------------------- /Fonts/titillium web/doubleres/_titillium web semibold 26px [alt-stroke] 10x10 (doubleres).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luizsan/ultimate/HEAD/Fonts/titillium web/doubleres/_titillium web semibold 26px [alt-stroke] 10x10 (doubleres).png -------------------------------------------------------------------------------- /BGAnimations/_flash out.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{} 2 | 3 | t[#t+1] = Def.Quad{ 4 | InitCommand=cmd(diffuse,1,1,1,0;zoomto,SCREEN_WIDTH,SCREEN_HEIGHT;Center); 5 | OnCommand=cmd(linear,0.3;diffusealpha,1;sleep,0.2); 6 | }; 7 | 8 | return t -------------------------------------------------------------------------------- /BGAnimations/ScreenEdit overlay/default.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{} 2 | 3 | t[#t+1] = LoadActor("assets/judgment"); 4 | t[#t+1] = LoadActor("assets/shortcuts"); 5 | --t[#t+1] = LoadActor(THEME:GetPathG("","editor_mods_preview")); 6 | 7 | 8 | return t; -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay underlay/default.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{} 2 | 3 | t[#t+1] = LoadActor("assets/filter"); 4 | t[#t+1] = LoadActor("assets/counter")..{ 5 | InitCommand=cmd(diffusealpha,0); 6 | OnCommand=cmd(sleep,1;decelerate,0.5;diffusealpha,1); 7 | }; 8 | 9 | return t; -------------------------------------------------------------------------------- /BGAnimations/ScreenMapControllers decorations.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{} 2 | 3 | t[#t+1] = LoadActor(THEME:GetPathG("","bg"))..{ 4 | InitCommand=cmd(FullScreen;croptop,0.75;fadetop,0.1;diffuse,Global.bgcolor); 5 | } 6 | 7 | t[#t+1] = LoadActor(THEME:GetPathB("ScreenWithMenuElements", "decorations")); 8 | 9 | 10 | 11 | return t; -------------------------------------------------------------------------------- /BGAnimations/ScreenUnjoin underlay.lua: -------------------------------------------------------------------------------- 1 | return Def.ActorFrame{ 2 | OnCommand=function(self) 3 | if IsRoutine() then 4 | GAMESTATE:UnjoinPlayer(OtherPlayer[GAMESTATE:GetMasterPlayerNumber()]); 5 | GAMESTATE:SetCurrentStyle("single"); 6 | end; 7 | SCREENMAN:SetNewScreen("ScreenSelectMusicCustom"); 8 | end; 9 | } -------------------------------------------------------------------------------- /BGAnimations/_flash in.lua: -------------------------------------------------------------------------------- 1 | Global.lockinput = true; 2 | 3 | local t = Def.ActorFrame{} 4 | 5 | t[#t+1] = Def.Quad{ 6 | InitCommand=cmd(diffuse,1,1,1,1;zoomto,SCREEN_WIDTH,SCREEN_HEIGHT;Center); 7 | OnCommand=cmd(linear,0.3;diffusealpha,0;sleep,0.2;queuecommand,"Unlock"); 8 | UnlockCommand=function(self) lockinput = false; end; 9 | }; 10 | 11 | return t -------------------------------------------------------------------------------- /Graphics/ScreenPrompt cursor.lua: -------------------------------------------------------------------------------- 1 | return Def.ActorFrame{ 2 | 3 | LoadActor(THEME:GetPathG("","glow"))..{ 4 | InitCommand=cmd(setsize,164,64;cropbottom,0.5;valign,0.25;diffuse,HighlightColor(0.2)); 5 | }, 6 | 7 | Def.Quad{ 8 | InitCommand=cmd(y,16;setsize,164,1;fadeleft,0.5;faderight,0.5;diffuse,HighlightColor()); 9 | }, 10 | 11 | }; -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay background.lua: -------------------------------------------------------------------------------- 1 | local tconf = THEMECONFIG:get_data("ProfileSlot_Invalid"); 2 | local defbg = tconf.DefaultBG; 3 | local bgdif = tconf.BGBrightness/100; 4 | 5 | if defbg then 6 | return LoadActor(THEME:GetPathG("Common fallback","background"))..{ 7 | InitCommand=cmd(FullScreen;diffuse,bgdif,bgdif,bgdif,1); 8 | } 9 | else 10 | return Def.ActorFrame { 11 | Name = ":thinking:"; 12 | }; 13 | end; -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ultimate 2 | A simplified theme for Stepmania 5.0.12 and 5.1.x 3 | 4 | This theme was started back in 2013, aiming to streamline stepmania game flow by removing unnecessary clutter, options and exaggerated animations, and making it smooth and straightforward for the player no matter what gamemode they are in, be it dance, pump, or whatever. After picking it up again, hopefully the new things I learned in the meantime can be applied into this theme to make a good experience for whoever uses it. 5 | -------------------------------------------------------------------------------- /BGAnimations/ScreenEdit background.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame {}; 2 | 3 | t[#t+1] = Def.Sprite{ 4 | InitCommand=cmd(Center;diffuse,1,1,1,0.2;fadetop,1); 5 | OnCommand=function(self) 6 | self:LoadFromSongBackground(GAMESTATE:GetCurrentSong()) 7 | self:scaletoclipped(SCREEN_WIDTH,SCREEN_HEIGHT) 8 | end; 9 | }; 10 | 11 | t[#t+1] = Def.Quad{ 12 | InitCommand=cmd(zoomto,150,SCREEN_HEIGHT;diffuse,0,0,0,0.75;horizalign,left;x,SCREEN_LEFT;y,SCREEN_CENTER_Y); 13 | }; 14 | t[#t+1] = Def.Quad{ 15 | InitCommand=cmd(zoomto,150,SCREEN_HEIGHT;diffuse,0,0,0,0.75;horizalign,right;x,SCREEN_RIGHT;y,SCREEN_CENTER_Y); 16 | }; 17 | 18 | 19 | return t; 20 | -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay in.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{ 2 | OnCommand=function(self) 3 | self:sleep(0.25); 4 | self:linear(0.5); 5 | self:diffusealpha(0); 6 | end; 7 | }; 8 | 9 | t[#t+1] = LoadActor(THEME:GetPathB("ScreenWithMenuElements", "background")); 10 | 11 | --[[ 12 | t[#t+1] = Def.Sprite { 13 | InitCommand=cmd(Center;diffusealpha,1); 14 | BeginCommand=cmd(LoadFromCurrentSongBackground); 15 | OnCommand=function(self) 16 | if PREFSMAN:GetPreference("StretchBackgrounds") then 17 | self:SetSize(SCREEN_WIDTH,SCREEN_HEIGHT) 18 | else 19 | self:scale_or_crop_background() 20 | end 21 | self:linear(1) 22 | self:diffusealpha(0) 23 | end; 24 | }; 25 | ]] 26 | return t; -------------------------------------------------------------------------------- /BGAnimations/_assets/transition.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{} 2 | 3 | 4 | --//================================================================== 5 | --GROUP 6 | --//================================================================== 7 | t[#t+1] = Def.Quad{ 8 | InitCommand=cmd(FullScreen;diffusealpha,0); 9 | FolderChangedMessageCommand=cmd(stoptweening;diffusealpha,1;sleep,0.15;linear,0.25;diffusealpha,0); 10 | }; 11 | 12 | t[#t+1] = LoadActor(THEME:GetPathG("","bg"))..{ 13 | InitCommand=cmd(Center;diffuse,Global.bgcolor;diffusealpha,0); 14 | FinalDecisionMessageCommand=cmd(diffusealpha,0;sleep,0.1;linear,0.5;diffusealpha,1;sleep,1;queuecommand,"Action"); 15 | ActionCommand=function(self) 16 | ReadyDecision(); 17 | end; 18 | }; 19 | 20 | return t; -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay overlay/assets/newfield.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{ 2 | OnCommand=function(self) 3 | for pn in ivalues(GAMESTATE:GetHumanPlayers()) do 4 | local field = find_pactor_in_gameplay(SCREENMAN:GetTopScreen(), pn); 5 | --[[ 6 | field:addy(-128); 7 | field:sleep(0.5); 8 | field:decelerate(0.3); 9 | field:addy(128); 10 | ]] 11 | end; 12 | 13 | if IsRoutine() then 14 | find_pactor_in_gameplay(SCREENMAN:GetTopScreen(), OtherPlayer[Global.master]):hibernate(math.huge); 15 | end; 16 | end; 17 | } 18 | 19 | t[#t+1] = notefield_mods_actor(); 20 | t[#t+1] = notefield_prefs_actor(); 21 | 22 | return t; 23 | -------------------------------------------------------------------------------- /Graphics/ScreenMapControllers action.lua: -------------------------------------------------------------------------------- 1 | return Def.BitmapText{ 2 | Font="titillium regular", 3 | InitCommand=cmd(x,SCREEN_CENTER_X;zoom,0.6;diffuse,color("#80C0FF");shadowlength,1;shadowcolor,0,0,0,0.2), 4 | OnCommand= function(self) 5 | self:diffusealpha(0) 6 | self:decelerate(0.5) 7 | self:diffusealpha(1) 8 | -- fancy effect: Look at the name (which is set by the screen) to set text 9 | self:settext( 10 | THEME:GetString("ScreenMapControllers", "Action" .. self:GetName())) 11 | end, 12 | OffCommand=cmd(stoptweening;accelerate,0.3;diffusealpha,0;queuecommand,"Hide"), 13 | HideCommand=cmd(visible,false), 14 | GainFocusCommand=cmd(diffuseshift;effectcolor2,color("#80C0FF");effectcolor1,color("#FFFFFF")), 15 | LoseFocusCommand=cmd(stopeffect), 16 | } 17 | -------------------------------------------------------------------------------- /Graphics/ScreenTitleMenu icon.lua: -------------------------------------------------------------------------------- 1 | local gc = Var("GameCommand"); 2 | local t = Def.ActorFrame {}; 3 | 4 | 5 | t[#t+1] = Def.Quad{ 6 | InitCommand=cmd(y,44;zoomto,100,1;fadeleft,0.5;faderight,0.5;diffuse,HighlightColor()); 7 | GainFocusCommand=cmd(stoptweening;linear,0.25;diffusealpha,1); 8 | LoseFocusCommand=cmd(stoptweening;linear,0.2;diffusealpha,0); 9 | }; 10 | 11 | t[#t+1] = Def.BitmapText{ 12 | Font = "titillium regular"; 13 | InitCommand=cmd(zoom,0.41;y,29;strokecolor,0,0,0,0.25;settext,gc:GetText()); 14 | GainFocusCommand=cmd(stoptweening;linear,0.25;diffuse,HighlightColor();strokecolor,BoostColor(HighlightColor(),0.3)); 15 | LoseFocusCommand=cmd(stoptweening;linear,0.25;diffuse,1,1,1,1;strokecolor,0,0,0,0.25); 16 | }; 17 | 18 | 19 | 20 | 21 | return t -------------------------------------------------------------------------------- /Graphics/field.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{} 2 | local snow = 120; --number of particles 3 | 4 | 5 | for i=1,snow do 6 | 7 | local size = math.random(2,4); 8 | 9 | t[#t+1] = Def.Quad{ 10 | InitCommand=cmd(zoomto,size,size); 11 | OnCommand=cmd(x,math.random(-40,SCREEN_WIDTH);y,-40;sleep,i/10;queuecommand,"Fall"); 12 | FallCommand=function(self) 13 | self:stoptweening(); 14 | 15 | self:x(math.random(-40,SCREEN_WIDTH)); 16 | self:y(-40); 17 | 18 | self:bob(); 19 | self:effectmagnitude(math.random(1,10),0,0); 20 | 21 | self:linear(size*5); 22 | self:addy(SCREEN_HEIGHT+40); 23 | self:sleep(math.random(1,5)); 24 | self:queuecommand("Fall"); 25 | end; 26 | 27 | 28 | }; 29 | 30 | end; 31 | 32 | t[#t+1] = Def.Actor{ 33 | OnCommand=cmd(sleep,GAMESTATE:GetCurrentSong():GetStepsSeconds()+5); 34 | }; 35 | 36 | return t; -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay overlay/assets/progress.lua: -------------------------------------------------------------------------------- 1 | -- progress bar 2 | local p_height = 2; 3 | local total_time = clamp(Global.song:GetLastSecond(),1,math.huge); 4 | 5 | return Def.ActorFrame{ 6 | Def.Quad{ 7 | InitCommand=cmd(diffuse,0,0,0,0.25;zoomto,SCREEN_WIDTH,p_height+2;horizalign,left;x,0;vertalign,top;y,SCREEN_TOP); 8 | }, 9 | 10 | Def.Quad{ 11 | InitCommand=cmd(zoomto,0,2;horizalign,left;x,1;vertalign,top;y,SCREEN_TOP+1); 12 | OnCommand=cmd(diffuse,HighlightColor();;diffuserightedge,BoostColor(HighlightColor(),2)); 13 | UpdateMessageCommand=function(self) 14 | if not paused then 15 | local current_time = clamp(GAMESTATE:GetCurMusicSeconds(),0,math.huge); 16 | self:zoomto((SCREEN_WIDTH-2) * (current_time/total_time),p_height); 17 | end; 18 | end; 19 | }, 20 | }; 21 | -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay underlay/assets/filter.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{} 2 | local notefield = { 3 | [PLAYER_1] = nil, 4 | [PLAYER_2] = nil, 5 | } 6 | 7 | for pn in ivalues(GAMESTATE:GetHumanPlayers()) do 8 | if SideJoined(pn) then 9 | 10 | t[#t+1] = Def.Quad{ 11 | InitCommand=cmd(vertalign,top); 12 | OnCommand=function(self) 13 | 14 | local gameplay = SCREENMAN:GetTopScreen(); 15 | local player = gameplay:GetChild("Player"..ToEnumShortString(pn)) 16 | local conf = PLAYERCONFIG:get_data(pn); 17 | notefield[pn] = player:GetChild("NoteField"); 18 | 19 | self:x(player:GetX()); 20 | self:zoomto(notefield[pn]:get_width()+48,_screen.h); 21 | self:diffuse(0.05,0.05,0.05,conf.ScreenFilter/100); 22 | 23 | end; 24 | } 25 | 26 | end; 27 | end; 28 | 29 | return t; -------------------------------------------------------------------------------- /Graphics/logo/default.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{} 2 | 3 | t[#t+1] = LoadActor("base"); 4 | t[#t+1] = LoadActor("glow")..{ 5 | InitCommand=cmd(diffusealpha,0;queuecommand,"Loop"); 6 | LoopCommand=cmd(stoptweening;linear,1.25;diffusealpha,1;linear,1.5;diffusealpha,0;sleep,3) 7 | }; 8 | t[#t+1] = LoadActor("glow")..{ 9 | InitCommand=cmd(fadeleft,0;faderight,1;queuecommand,"Loop"); 10 | LoopCommand=cmd(stoptweening;cropleft,0;cropright,1;fadeleft,0;faderight,1;linear,1.25;cropright,0.1;fadeleft,0.5;faderight,0.5;linear,1.25;cropleft,0.9;cropright,0;linear,1.25;cropleft,1;cropright,0;fadeleft,1;faderight,0;;sleep,3) 11 | }; 12 | t[#t+1] = LoadActor("blur")..{ 13 | InitCommand=cmd(fadeleft,0;faderight,1;queuecommand,"Loop"); 14 | LoopCommand=cmd(stoptweening;cropleft,0;cropright,1;fadeleft,0;faderight,1;linear,1.25;cropright,0.1;fadeleft,0.5;faderight,0.5;linear,1.25;cropleft,0.9;cropright,0;linear,1.25;cropleft,1;cropright,0;fadeleft,1;faderight,0;sleep,3) 15 | }; 16 | 17 | return t; -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Luizsan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /BGAnimations/ScreenProfileLoad overlay.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{ 2 | Def.ActorFrame{ 3 | InitCommand=cmd(diffusealpha,0); 4 | OnCommand=cmd(sleep,0.15;linear,0.2;diffusealpha,1); 5 | ExitMessageCommand=cmd(sleep,0.15;linear,0.2;diffusealpha,0;sleep,0.1;queuemessage,"Next"); 6 | 7 | LoadActor(THEME:GetPathG("","cursor"))..{ 8 | InitCommand=cmd(x,_screen.cx;y,_screen.cy + 48;animate,false;setstate,5;zoom,0.4;spin;effectmagnitude,0,0,720); 9 | }, 10 | 11 | Def.BitmapText{ 12 | Font = Fonts.common["Loading"]; 13 | Text="Loading Profiles"; 14 | InitCommand=cmd(Center;diffuse,1,1,1,1;shadowlength,1); 15 | NextMessageCommand=function(self) MESSAGEMAN:Broadcast("Load"); end; 16 | }, 17 | } 18 | }; 19 | 20 | t[#t+1] = LoadActor(THEME:GetPathB("ScreenWithMenuElements","overlay")); 21 | 22 | t[#t+1] = Def.Actor{ 23 | OnCommand=function(self) 24 | if SCREENMAN:GetTopScreen():HaveProfileToLoad() then 25 | self:sleep(1); 26 | end; 27 | self:queuecommand("Fadeout"); 28 | end; 29 | FadeoutCommand=function() MESSAGEMAN:Broadcast("Exit"); end; 30 | LoadMessageCommand=function() SCREENMAN:GetTopScreen():Continue(); end; 31 | }; 32 | 33 | return t; -------------------------------------------------------------------------------- /BGAnimations/ScreenProfileSave overlay.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{ 2 | Def.ActorFrame{ 3 | InitCommand=cmd(diffusealpha,0); 4 | OnCommand=cmd(sleep,0.15;linear,0.2;diffusealpha,1); 5 | ExitMessageCommand=cmd(sleep,0.15;linear,0.2;diffusealpha,0;sleep,0.1;queuemessage,"Next"); 6 | 7 | LoadActor(THEME:GetPathG("","cursor"))..{ 8 | InitCommand=cmd(x,_screen.cx;y,_screen.cy + 48;animate,false;setstate,5;zoom,0.4;spin;effectmagnitude,0,0,720); 9 | }, 10 | 11 | Def.BitmapText{ 12 | Font = Fonts.common["Loading"]; 13 | Text="Saving Profiles"; 14 | InitCommand=cmd(Center;diffuse,1,1,1,1;shadowlength,1); 15 | NextMessageCommand=function(self) MESSAGEMAN:Broadcast("Load"); end; 16 | }, 17 | } 18 | }; 19 | 20 | t[#t+1] = LoadActor(THEME:GetPathB("ScreenWithMenuElements","overlay")); 21 | 22 | t[#t+1] = Def.Actor{ 23 | OnCommand=function(self) 24 | if SCREENMAN:GetTopScreen():HaveProfileToSave() then 25 | self:sleep(1); 26 | end; 27 | self:queuecommand("Fadeout"); 28 | end; 29 | FadeoutCommand=function() MESSAGEMAN:Broadcast("Exit"); end; 30 | LoadMessageCommand=function() SCREENMAN:GetTopScreen():Continue(); end; 31 | }; 32 | 33 | return t; -------------------------------------------------------------------------------- /BGAnimations/ScreenTitleMenu underlay.lua: -------------------------------------------------------------------------------- 1 | local boxsize = 100; 2 | local t = Def.ActorFrame{}; 3 | 4 | t[#t+1] = Def.ActorFrame{ 5 | InitCommand=cmd(CenterX;y,SCREEN_CENTER_Y+20); 6 | 7 | LoadActor(THEME:GetPathG("","_pattern"))..{ 8 | InitCommand=cmd(zoomto,SCREEN_WIDTH,boxsize;customtexturerect,0,0,(SCREEN_WIDTH/384)*1.5,(boxsize/384)*1.5;texcoordvelocity,0,0.1;diffusealpha,0.075;blend,Blend.Add); 9 | }, 10 | Def.Quad{ 11 | InitCommand=cmd(zoomto,SCREEN_WIDTH,boxsize;diffuse,0,0,0,0.5;diffusetopedge,0,0,0,0.6); 12 | }, 13 | Def.Quad{ 14 | InitCommand=cmd(zoomto,SCREEN_WIDTH,boxsize/4;vertalign,top;y,-boxsize/2;diffuse,0,0,0,0.25;fadebottom,1); 15 | }, 16 | Def.Quad{ 17 | InitCommand=cmd(zoomto,SCREEN_WIDTH,1;y,-(boxsize/2)-1;diffuse,1,1,1,0.15); 18 | }, 19 | Def.Quad{ 20 | InitCommand=cmd(zoomto,SCREEN_WIDTH,1;y,boxsize/2;diffuse,1,1,1,0.25); 21 | }, 22 | LoadActor(THEME:GetPathG("","logo"))..{ 23 | InitCommand=cmd(zoom,0.5;y,-(SCREEN_HEIGHT/4)); 24 | }, 25 | Def.BitmapText{ 26 | Font = Fonts.titlemenu["Version"]; 27 | Text = string.upper("ver. "..themeInfo.Version); 28 | InitCommand=cmd(zoom,0.3;horizalign,right;y,(-boxsize/2)-10;strokecolor,0.1,0.1,0.1,0.25;diffusealpha,1/3;x,160); 29 | }, 30 | 31 | }; 32 | 33 | return t; 34 | 35 | -------------------------------------------------------------------------------- /Graphics/ScreenTitleMenu scroll.lua: -------------------------------------------------------------------------------- 1 | local gc = Var("GameCommand"); 2 | local t = Def.ActorFrame{} 3 | local centered = 52 4 | local item = tonumber(gc:GetName()); 5 | 6 | 7 | t[#t+1] = Def.BitmapText{ 8 | Font = "regen silver"; 9 | Text = string.upper(gc:GetText()); 10 | InitCommand=cmd(zoom,0.7;y,2;horizalign,left;strokecolor,0,0,0,0.75;playcommand,"Disable"); 11 | GainFocusCommand=cmd(stoptweening;decelerate,0.225;diffusealpha,1;x,0-centered); 12 | LoseFocusCommand=cmd(stoptweening;decelerate,0.225;diffusealpha,0;x,-20-centered); 13 | }; 14 | 15 | t[#t+1] = Def.BitmapText{ 16 | Font = "titillium regular"; 17 | Text = "Lorem ipsum dolor sit amet fuck you I'm mad"; 18 | InitCommand=cmd(zoom,0.42;y,23;horizalign,left;strokecolor,0,0,0,0.33); 19 | GainFocusCommand=cmd(stoptweening;decelerate,0.225;diffusealpha,1;x,0-centered); 20 | LoseFocusCommand=cmd(stoptweening;decelerate,0.225;diffusealpha,0;x,-20-centered); 21 | }; 22 | 23 | 24 | t[#t+1] = LoadActor(THEME:GetPathG("","mainmenu")) .. { 25 | InitCommand=cmd(zoom,0.75;halign,0.95;y,2;animate,false;playcommand,"Set"); 26 | GainFocusCommand=cmd(stoptweening;decelerate,0.225;diffusealpha,1;x,0-centered); 27 | LoseFocusCommand=cmd(stoptweening;decelerate,0.225;diffusealpha,0;x,-20-centered); 28 | SetCommand=function(self) 29 | if item == 1 then self:setstate(3); 30 | elseif item == 2 then self:setstate(2); 31 | elseif item == 3 then self:setstate(0); 32 | elseif item == 4 then self:setstate(1); 33 | end; 34 | 35 | end; 36 | }; 37 | 38 | 39 | 40 | 41 | return t; -------------------------------------------------------------------------------- /BGAnimations/ScreenWithMenuElements overlay.lua: -------------------------------------------------------------------------------- 1 | local function Update(self,dt) 2 | Global.realH = tonumber(PREFSMAN:GetPreference("DisplayHeight")) 3 | Global.realW = Global.realH*(SCREEN_WIDTH/SCREEN_HEIGHT) 4 | Global.mouseX = math.floor(INPUTFILTER:GetMouseX())*(Global.realW/DISPLAY:GetDisplayWidth()); 5 | Global.mouseY = math.floor(INPUTFILTER:GetMouseY())*(Global.realH/DISPLAY:GetDisplayHeight()); 6 | Global.debounce = Global.debounce - dt; 7 | if Global.debounce < 0 then Global.debounce = 0 end; 8 | Global.delta = dt; 9 | MESSAGEMAN:Broadcast("Update"); 10 | end; 11 | 12 | local t = MouseInputActor()..{ 13 | InitCommand=function(self) self:SetUpdateFunction(Update); end; 14 | MenuInputMessageCommand=function(self,param) end; 15 | } 16 | 17 | --======================================================================================================================= 18 | --NAVIGATION ICONS 19 | --======================================================================================================================= 20 | 21 | --[[ 22 | 23 | local icon_spacing = 27 24 | for i=1,#Navigation do 25 | t[#t+1] = LoadActor(THEME:GetPathG("","navigation"))..{ 26 | InitCommand=cmd(x,(SCREEN_CENTER_X+(icon_spacing*i))-(icon_spacing*((#Navigation+1)/2));zoom,0.425;animate,false;y,SCREEN_BOTTOM-42+4); 27 | OnCommand=cmd(setstate,Navigation[i].Icon-1); 28 | GainFocusCommand=cmd(diffuse,0.45,0.9,1,1); 29 | LoseFocusCommand=cmd(diffuse,1,1,1,1); 30 | DisabledCommand=cmd(diffuse,0.75,0.75,0.75,0.5); 31 | UpdateMessageCommand=function(self) ButtonHover(self,0.4); end; 32 | LeftClickMessageCommand=function(self) 33 | MouseDown(self,0.4,Navigation[i].Screen); 34 | end; 35 | }; 36 | end; 37 | 38 | ]] 39 | 40 | return t -------------------------------------------------------------------------------- /BGAnimations/ScreenInit background.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{}; 2 | 3 | local insults = { 4 | "break your legs", 5 | "punch you in the throat", 6 | "kick you in the chin", 7 | "slap your face", 8 | "shove a cactus in your ass", 9 | "toss you under a bus", 10 | "grind your face against the asphalt", 11 | "clobber you out of existence", 12 | "fist you in the mouth" 13 | } 14 | 15 | t[#t+1] = LoadActor(THEME:GetPathB("","_white"))..{ 16 | OffCommand=cmd(linear,0.5;diffusealpha,0;sleep,0.5); 17 | } 18 | 19 | t[#t+1] = Def.ActorFrame{ 20 | InitCommand=cmd(Center;diffusealpha,0;addy,-32); 21 | OnCommand=cmd(sleep,0.25;linear,0.5;diffusealpha,1;sleep,4.5;queuecommand,"Fadeout"); 22 | FadeoutCommand=function() SCREENMAN:GetTopScreen():StartTransitioningScreen("SM_BeginFadingOut"); end; 23 | OffCommand=function(self) 24 | self:linear(0.5); 25 | self:diffusealpha(0); 26 | self:sleep(1.25); 27 | self:queuecommand("Exit"); 28 | end; 29 | 30 | ExitCommand=function() 31 | SCREENMAN:SetNewScreen(ToTitleMenu()); 32 | end; 33 | 34 | 35 | 36 | LoadActor(THEME:GetPathG("","ssc_logo"))..{ 37 | InitCommand=cmd(zoom,0.5;y,-24); 38 | 39 | }, 40 | 41 | LoadActor(THEME:GetPathG("","ssc_text"))..{ 42 | InitCommand=cmd(zoom,0.75;y,64); 43 | }, 44 | 45 | Def.BitmapText{ 46 | Font = "regen strong"; 47 | Text = string.upper("Stepmania Ultimate, by Luizsan"); 48 | InitCommand=cmd(zoomx,0.475;zoomy,0.46;y,90;diffuse,0,0,0,0.4); 49 | }, 50 | 51 | Def.BitmapText{ 52 | Font = "titillium regular"; 53 | InitCommand=cmd(zoom,0.5;y,120;vertalign,top;diffuse,0,0,0,0.3;wrapwidthpixels,400/self:GetZoom();vertspacing,-10); 54 | Text = "Hello lamer fucker, this is Luizsan. Here's the deal. If you turn this theme into one more official Pump It Up bootleg theme, I will find you wherever you are and "..insults[math.random(1,#insults)]..".\nAnd that's a promise."; 55 | }, 56 | 57 | }; 58 | 59 | 60 | return t 61 | -------------------------------------------------------------------------------- /BGAnimations/ScreenEvaluationCustom underlay/default.lua: -------------------------------------------------------------------------------- 1 | local t = MenuInputActor()..{ 2 | InitCommand=function(self) Global.lockinput = true; end; 3 | OnCommand=cmd(diffusealpha,1;sleep,2.5;queuecommand,"Unlock"); 4 | OffCommand=cmd(linear,0.5;diffusealpha,0;sleep,0.75;queuecommand,"Exit"); 5 | PlayerJoinedMessageCommand=function(self,param) 6 | GAMESTATE:UnjoinPlayer(param.Player); 7 | end; 8 | MenuInputMessageCommand=function(self,param) 9 | InputController(self,param) 10 | end; 11 | } 12 | 13 | --//================================================================ 14 | 15 | function InputController(self,param) 16 | if param and param.Player and SideJoined(param.Player) and not Global.lockinput then 17 | MainController(self,param) 18 | EvaluationController(param) 19 | end; 20 | end; 21 | 22 | --//================================================================ 23 | 24 | function MainController(self,param) 25 | if param.Input == "Options" then 26 | InputController(self, { Player = param.Player, Input = "Next"}) 27 | end; 28 | 29 | if param.Name == "PressSelect" then 30 | Global.toggle = true; 31 | MESSAGEMAN:Broadcast("ToggleSelect", { Toggled = true }); 32 | end 33 | 34 | if param.Name == "ReleaseSelect" then 35 | Global.toggle = false; 36 | MESSAGEMAN:Broadcast("ToggleSelect", { Toggled = false }) 37 | end 38 | 39 | if param.Name == "Return" then 40 | SCREENMAN:SetNewScreen(SCREENMAN:GetTopScreen():GetNextScreenName()); 41 | end; 42 | end; 43 | 44 | --//================================================================ 45 | 46 | t[#t+1] = LoadActor(THEME:GetPathB("","_assets/fulldisplay")); 47 | t[#t+1] = LoadActor("assets/information"); 48 | t[#t+1] = LoadActor("assets/grading"); 49 | t[#t+1] = LoadActor("assets/menu"); 50 | 51 | t[#t+1] = LoadActor(THEME:GetPathB("","_assets/cursteps")); 52 | t[#t+1] = LoadActor(THEME:GetPathB("","_assets/sound")); 53 | 54 | --//================================================================ 55 | 56 | return t; -------------------------------------------------------------------------------- /Scripts/Global.lua: -------------------------------------------------------------------------------- 1 | --global variables 2 | Global = { 3 | realW = 0, realH = 0, 4 | delta = 0, debounce = 0, 5 | mouseX = 0, mouseY = 0, wheel = 0, 6 | screen = "", 7 | ratio = "", 8 | state = "", 9 | substate = { 10 | [PLAYER_1] = "", 11 | [PLAYER_2] = "", 12 | }, 13 | oplist = { 14 | [PLAYER_1] = false, 15 | [PLAYER_2] = false, 16 | }, 17 | allgroups = { 18 | -- ["Name"] = "string" 19 | -- ["Songs"] = { Songs } 20 | -- ["Count"] = 0 21 | }, 22 | songgroup = "", 23 | songlist = {}, 24 | song = nil, 25 | selection = 1, 26 | level = 1, 27 | confirm = { 28 | [PLAYER_1] = 0, 29 | [PLAYER_2] = 0, 30 | }, 31 | players = 1, 32 | master = "", 33 | mastersteps = nil, 34 | steps = {}, 35 | pnsteps = { 36 | [PLAYER_1] = 1, 37 | [PLAYER_2] = 1, 38 | }, 39 | pnselection = { 40 | [PLAYER_1] = 1, 41 | [PLAYER_2] = 1, 42 | }, 43 | pncursteps = { 44 | [PLAYER_1] = nil, 45 | [PLAYER_2] = nil, 46 | }, 47 | pnskin = { 48 | [PLAYER_1] = -1, 49 | [PLAYER_2] = -1, 50 | }, 51 | piuscoring = { 52 | [PLAYER_1] = 0, 53 | [PLAYER_2] = 0, 54 | }, 55 | volume = 1, 56 | blockjoin = false, 57 | prevstate = "", 58 | toggle = false, 59 | bgcolor = {0.66,0.68,0.7,1}, 60 | lockinput = false, 61 | disqualify = false, 62 | }; 63 | 64 | function ResetState() 65 | Global.confirm = { 66 | [PLAYER_1] = 0, 67 | [PLAYER_2] = 0, 68 | }; 69 | Global.oplist = { 70 | [PLAYER_1] = false, 71 | [PLAYER_2] = false, 72 | }; 73 | Global.mastersteps = nil; 74 | Global.steps = {}; 75 | Global.pnselection = { 76 | [PLAYER_1] = 1, 77 | [PLAYER_2] = 1, 78 | }; 79 | Global.pnskin = { 80 | [PLAYER_1] = -1, 81 | [PLAYER_2] = -1, 82 | }; 83 | Global.piuscoring = { 84 | [PLAYER_1] = 0, 85 | [PLAYER_2] = 0, 86 | }; 87 | Global.volume = 1; 88 | Global.disqualify = false; 89 | Global.blockjoin = false; 90 | 91 | end; -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay overlay/default.lua: -------------------------------------------------------------------------------- 1 | local paused = false; 2 | local missfail = THEMECONFIG:get_data("ProfileSlot_Invalid").FailMissCombo; 3 | 4 | local function Update(self,dt) 5 | MESSAGEMAN:Broadcast("Update"); 6 | end; 7 | 8 | local t = Def.ActorFrame{ 9 | InitCommand=cmd(SetUpdateFunction,Update); 10 | OnCommand=function() Global.disqualified = false; end; 11 | PausedMessageCommand=function() Global.disqualified = true; paused = true; end; 12 | UnpausedMessageCommand=function() paused = false; end; 13 | LifeChangedMessageCommand=function(self,param) end; 14 | ComboChangedMessageCommand=function(self,param) 15 | if not missfail or FailCombo() < 1 then return end; 16 | 17 | local curstats = STATSMAN:GetCurStageStats(); 18 | local pss = curstats:GetPlayerStageStats(param.Player); 19 | local misscombo = pss:GetCurrentMissCombo(); 20 | 21 | if SideJoined(OtherPlayer[param.Player]) then 22 | local otherpn = OtherPlayer[param.Player]; 23 | local otherstats = curstats:GetPlayerStageStats(otherpn); 24 | local othermiss = otherstats:GetCurrentMissCombo(); 25 | misscombo = math.min(misscombo,othermiss); 26 | end; 27 | 28 | if misscombo >= FailCombo() then 29 | for pn in ivalues(GAMESTATE:GetHumanPlayers()) do 30 | STATSMAN:GetCurStageStats():GetPlayerStageStats(pn):FailPlayer(); 31 | end; 32 | SCREENMAN:SetNewScreen("ScreenEvaluationCustom"); 33 | end; 34 | 35 | end; 36 | } 37 | 38 | t[#t+1] = LoadActor("assets/decorations"); 39 | 40 | for pn in ivalues(GAMESTATE:GetHumanPlayers()) do 41 | if SideJoined(pn) then 42 | 43 | t[#t+1] = LoadActor("assets/lifebar")..{ 44 | OnCommand=cmd(playcommand, "Build", { Player = pn }); 45 | } 46 | 47 | end; 48 | end; 49 | 50 | t[#t+1] = LoadActor("assets/progress"); 51 | 52 | t[#t+1] = Def.BitmapText{ 53 | Font = Fonts.gameplay["Main"]; 54 | Text = "Stage "..CapDigits(GAMESTATE:GetCurrentStageIndex()+1,0,2); 55 | InitCommand=cmd(zoom,0.45;strokecolor,0.15,0.15,0.15,0.8;CenterX;y,SCREEN_BOTTOM-12;vertalign,bottom); 56 | }; 57 | 58 | t[#t+1] = LoadActor("assets/offset"); 59 | t[#t+1] = LoadActor("assets/pause"); 60 | 61 | if not VersionBranch("5.0") then 62 | t[#t+1] = LoadActor("assets/newfield"); 63 | end 64 | 65 | return t; -------------------------------------------------------------------------------- /BGAnimations/ScreenSyncOverlay overlay.lua: -------------------------------------------------------------------------------- 1 | local revert_sync_changes= THEME:GetString("ScreenSyncOverlay", "revert_sync_changes") 2 | local change_bpm= THEME:GetString("ScreenSyncOverlay", "change_bpm") 3 | local change_song_offset= THEME:GetString("ScreenSyncOverlay", "change_song_offset") 4 | local change_machine_offset= THEME:GetString("ScreenSyncOverlay", "change_machine_offset") 5 | local hold_alt= THEME:GetString("ScreenSyncOverlay", "hold_alt") 6 | 7 | return Def.ActorFrame{ 8 | Def.Quad{ 9 | Name= "quad", InitCommand= function(self) 10 | self:diffuse{0, 0, 0, 0}:horizalign(right):vertalign(top) 11 | :xy(_screen.w, 0) 12 | end, 13 | ShowCommand= function(self) 14 | self:stoptweening():linear(.3):diffusealpha(.75) 15 | :sleep(4):linear(.3):diffusealpha(0) 16 | end, 17 | HideCommand= function(self) 18 | self:finishtweening() 19 | end, 20 | }, 21 | Def.BitmapText{ 22 | Name = "help_text", 23 | Font = "titillium regular", 24 | InitCommand= function(self) 25 | local text= { 26 | revert_sync_changes..":", 27 | " F4", 28 | change_bpm..":", 29 | " F9/F10", 30 | change_song_offset..":", 31 | " F11/F12", 32 | change_machine_offset..":", 33 | " Shift + F11/F12", 34 | hold_alt, 35 | } 36 | self:diffuse{1, 1, 1, 0}:zoom(0.5):horizalign(left):vertalign(top) 37 | :shadowlength(2):settext(table.concat(text, "\n")) 38 | :xy(_screen.w - self:GetZoomedWidth() - 10, 10) 39 | 40 | local quad= self:GetParent():GetChild("quad") 41 | quad:zoomtowidth(self:GetZoomedWidth()+20) 42 | :zoomtoheight(self:GetZoomedHeight()+20) 43 | end, 44 | ShowCommand= function(self) 45 | self:stoptweening():linear(.3):diffusealpha(1) 46 | :sleep(4):linear(.3):diffusealpha(0) 47 | end, 48 | HideCommand= function(self) 49 | self:finishtweening() 50 | end, 51 | }, 52 | Def.BitmapText{ 53 | Name = "Status", 54 | Font = "titillium regular", 55 | InitCommand= function(self) 56 | ActorUtil.LoadAllCommands(self, "ScreenSyncOverlay") 57 | self:playcommand("On") 58 | end, 59 | SetStatusCommand= function(self, param) 60 | self:zoom(0.425); 61 | self:settext(param.text); 62 | end, 63 | }, 64 | Def.BitmapText{ 65 | Name= "Adjustments", 66 | Font = "titillium regular", 67 | InitCommand= function(self) 68 | ActorUtil.LoadAllCommands(self, "ScreenSyncOverlay") 69 | self:playcommand("On") 70 | end, 71 | SetAdjustmentsCommand= function(self, param) 72 | self:zoom(0.425); 73 | self:visible(param.visible):settext(param.text) 74 | end, 75 | }, 76 | } 77 | -------------------------------------------------------------------------------- /Scripts/Fonts.lua: -------------------------------------------------------------------------------- 1 | Fonts = { 2 | common = { 3 | ["Loading"] = "titillium regular", 4 | ["ProfileName"] = "titillium regular", 5 | ["ProfileMini"] = "regen silver", 6 | }, 7 | player = { 8 | ["Combo"] = "regen silver", 9 | ["Label"] = "regen small", 10 | ["Accuracy"] = "corbel", 11 | }, 12 | overlay = { 13 | ["Overlay"] = "titillium regular", 14 | ["Status"] = "titillium regular", 15 | ["Adjustments"] = "titillium regular", 16 | }, 17 | titlemenu = { 18 | ["Title"] = "regen silver", 19 | ["Subtitle"] = "titillium regular", 20 | ["Choice"] = "titillium regular", 21 | ["Version"] = "regen strong", 22 | }, 23 | edit = { 24 | ["Menu"] = "titillium regular", 25 | ["Steps"] = "titillium regular", 26 | }, 27 | gameplay = { 28 | ["Main"] = "titillium regular", 29 | }, 30 | groupselect = { 31 | ["Name"] = "titillium regular", 32 | ["Songs"] = "titillium regular", 33 | ["Folders"] = "regen strong", 34 | }, 35 | cursteps = { 36 | ["Info"] = "titillium regular", 37 | ["Type"] = "regen strong", 38 | ["Meter"] = "regen silver", 39 | }, 40 | highscores = { 41 | ["Main"] = "titillium regular", 42 | ["Grade"] = "bebas neue", 43 | }, 44 | radar = { 45 | ["Label"] = "regen strong", 46 | ["Number"] = "regen strong", 47 | }, 48 | stepslist = { 49 | ["Main"] = "regen small", 50 | ["Percentage"] = "regen small", 51 | }, 52 | mainmenu = { 53 | ["Main"] = "titillium regular", 54 | ["Info"] = "regen strong", 55 | }, 56 | information = { 57 | ["Main"] = "roboto regular", 58 | }, 59 | noteskins = { 60 | ["Main"] = "titillium regular", 61 | }, 62 | speeds = { 63 | ["Speed"] = "regen silver", 64 | ["Options"] = "titillium regular", 65 | }, 66 | options = { 67 | ["Main"] = "titillium regular", 68 | ["Sections"] = "regen strong", 69 | }, 70 | counter = { 71 | ["Main"] = "titillium regular", 72 | }, 73 | eval = { 74 | ["Caption"] = "regen small", 75 | ["Info"] = "roboto regular", 76 | ["Menu"] = "regen strong", 77 | ["Labels"] = "regen strong", 78 | ["Numbers"] = "roboto numbers", 79 | ["Options"] = "regen strong", 80 | ["Award"] = "titillium regular", 81 | ["Scores"] = "titillium regular", 82 | }, 83 | editor = { 84 | ["Main"] = "titillium regular", 85 | }, 86 | } -------------------------------------------------------------------------------- /Scripts/Colors.lua: -------------------------------------------------------------------------------- 1 | --//================================================================ 2 | 3 | local _JudgmentColor = { 4 | ["Flawless"] = color("#ffc4ed"), 5 | ["Perfect"] = color("#6ccfff"), 6 | ["Great"] = color("#a9ff63"), 7 | ["Good"] = color("#ffd075"), 8 | ["Bad"] = color("#ae84cf"), 9 | ["Miss"] = color("#ff5252"), 10 | } 11 | 12 | function JudgmentColor(w) 13 | return _JudgmentColor[w] or {1,1,1,1} 14 | end; 15 | 16 | local _GradeColor = { 17 | ["SS"] = color("1.00, 0.85, 0.25, 1"), 18 | ["S+"] = color("1.00, 0.85, 0.25, 1"), 19 | ["S"] = color("1.00, 1.00, 1.00, 1"), 20 | ["AAAA"] = color("0.50, 1.00, 1.00, 1"), 21 | ["AAA"] = color("0.40, 0.90, 1.00, 1"), 22 | ["AA"] = color("0.30, 0.80, 1.00, 1"), 23 | ["A"] = color("0.20, 0.70, 1.00, 1"), 24 | ["B"] = color("0.25, 1.00, 0.50, 1"), 25 | ["C"] = color("1.00, 0.75, 0.50, 1"), 26 | ["D"] = color("0.80, 0.40, 1.00, 1"), 27 | ["F"] = color("1.00, 0.25, 0.25, 1"), 28 | ["Failed"] = color("1.00, 0.10, 0.10, 1"), 29 | } 30 | 31 | --//================================================================ 32 | 33 | function AlphaColor(color,alpha) 34 | return { color[1], color[2], color[3], alpha } 35 | end; 36 | 37 | --//================================================================ 38 | 39 | function HighlightColor(alpha) 40 | return {0.3,1,0.775,alpha or 1} 41 | end; 42 | 43 | --//================================================================ 44 | 45 | function PlayerColor(pn,alpha) 46 | local pncolor = { 47 | [PLAYER_1] = {0.40,0.85,1,alpha or 1}, 48 | [PLAYER_2] = {0.20,1,0.40,alpha or 1}, 49 | } 50 | return pncolor[pn] or {1,1,1,1} 51 | end 52 | 53 | --//================================================================ 54 | 55 | function GradeColor(letter) 56 | if _GradeColor[letter] ~= nil then 57 | return _GradeColor[letter]; 58 | else 59 | return color("1,1,1,1"); 60 | end; 61 | end; 62 | 63 | --//================================================================ 64 | 65 | function StepsColor(steps) 66 | local tint = {1,1,1,1}; 67 | 68 | if steps then 69 | if PureType(steps) == "Single" then 70 | tint = {0.95,0.75,0.1,1}; 71 | elseif PureType(steps) == "Double" then 72 | tint = {0.2,0.9,0.2,1}; 73 | elseif PureType(steps) == "Halfdouble" then 74 | tint = {0.8,0.1,0.6,1}; 75 | elseif PureType(steps) == "Routine" then 76 | tint = {0.3,0.85,1,1}; 77 | elseif PureType(steps) == "Solo" or PureType(steps) == "Couple" or PureType(steps) == "Real" then 78 | tint = {1,0.5,0.5,1}; 79 | end; 80 | end; 81 | 82 | return tint; 83 | end; 84 | -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay overlay/assets/decorations.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{ 2 | InitCommand=cmd(diffusealpha,0); 3 | OnCommand=cmd(sleep,0.6;linear,1;diffusealpha,1); 4 | } 5 | 6 | for pn in ivalues(GAMESTATE:GetHumanPlayers()) do 7 | if SideJoined(pn) then 8 | 9 | -- detail top 10 | t[#t+1] = LoadActor(THEME:GetPathG("","hex decoration"))..{ 11 | InitCommand=cmd(diffuse,0.8,0.8,0.8,0.2;zoomx,0.8 * -pnSide(pn);zoomy,0.4;x,_screen.cx + (_screen.w/2 * pnSide(pn));horizalign,left;vertalign,top); 12 | }; 13 | 14 | -- detail bottom 15 | t[#t+1] = LoadActor(THEME:GetPathG("","hex decoration"))..{ 16 | InitCommand=cmd(diffuse,0.8,0.8,0.8,0.15;zoomx,0.5 * -pnSide(pn);zoomy,-0.3;x,_screen.cx + (_screen.w/2 * pnSide(pn));y,_screen.h;horizalign,left;vertalign,top); 17 | }; 18 | 19 | -- glow 20 | t[#t+1] = LoadActor(THEME:GetPathG("","glow"))..{ 21 | InitCommand=cmd(diffuse,PlayerColor(pn);diffusealpha,0.2;zoomto,512,160;x,_screen.cx + (_screen.w/2 * pnSide(pn));;skewx,0.75*pnSide(pn)); 22 | }; 23 | 24 | --player 25 | t[#t+1] = Def.ActorFrame{ 26 | InitCommand=cmd(y,SCREEN_BOTTOM-22;x,_screen.cx + (_screen.w/2 * pnSide(pn)) + (12 * -pnSide(pn))); 27 | -- player name 28 | Def.BitmapText{ 29 | Font = Fonts.gameplay["Main"]; 30 | InitCommand=cmd(zoom,0.5;strokecolor,0.15,0.15,0.15,1;horizalign,pnAlign(pn);vertalign,bottom); 31 | OnCommand=function(self) 32 | local name = PROFILEMAN:GetProfile(pn):GetDisplayName(); 33 | if name == "" then 34 | self:diffusealpha(0.33); 35 | self:settext("No Profile"); 36 | else 37 | self:diffusealpha(1); 38 | self:settext(name); 39 | end; 40 | end; 41 | }, 42 | 43 | -- steps 44 | Def.BitmapText{ 45 | Font = Fonts.gameplay["Main"]; 46 | InitCommand=cmd(zoom,0.375;strokecolor,0.15,0.15,0.15,1;horizalign,pnAlign(pn);y,12;vertalign,bottom); 47 | OnCommand=function(self) 48 | local steps = Global.pncursteps[pn] or GAMESTATE:GetCurrentSteps(pn); 49 | local tint = StepsColor(steps); 50 | local meter = "00"; 51 | if TotalNotes(steps) > 0 then 52 | meter = FormatMeter(steps:GetMeter()); 53 | end; 54 | 55 | self:diffuse(tint); 56 | self:diffusetopedge(BoostColor(tint,9)); 57 | self:strokecolor(BoostColor(tint,0.2)); 58 | self:settext(PureType(steps).." "..meter); 59 | 60 | end; 61 | }, 62 | }; 63 | 64 | end; 65 | end; 66 | 67 | return t; -------------------------------------------------------------------------------- /BGAnimations/_assets/fulldisplay.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{}; 2 | 3 | local ratio = 1; 4 | local adjust = 0; 5 | 6 | --//================================================================ 7 | 8 | t[#t+1] = Def.Sprite{ 9 | 10 | InitCommand=cmd(Center;diffusealpha,0;valign,0); 11 | 12 | OnCommand=function(self) 13 | self:sleep(0.2); 14 | 15 | local scr = SCREENMAN:GetTopScreen():GetName(); 16 | if scr == "ScreenSelectMusicCustom" then self:playcommand("MusicWheel"); 17 | elseif scr == "ScreenEvaluationCustom" then self:playcommand("Eval"); 18 | end; 19 | end; 20 | 21 | OffCommand=cmd(stoptweening;linear,0.5;diffuse,1,1,1,0); 22 | 23 | MusicWheelMessageCommand=function(self) 24 | self:stoptweening(); 25 | self:linear(0.2); 26 | self:diffusealpha(0); 27 | self:queuecommand("Unload"); 28 | self:sleep(0.2); 29 | self:queuecommand("Load"); 30 | end; 31 | 32 | EvalCommand=function(self) 33 | 34 | LoadBackground(self,Global.song); 35 | self:stoptweening(); 36 | self:diffuse(0.2,0.2,0.2,0); 37 | self:cropbottom(0.15); 38 | self:fadebottom(0.05); 39 | 40 | ratio = self:GetWidth()/self:GetHeight(); 41 | adjust = ((16/9) - ratio)/4; 42 | 43 | self:fadeleft(adjust); 44 | self:faderight(adjust); 45 | 46 | self:stretchto(0,0,SCREEN_HEIGHT*ratio,SCREEN_HEIGHT); 47 | self:x(SCREEN_CENTER_X); 48 | self:y(SCREEN_TOP+20); 49 | 50 | self:linear(0.3); 51 | self:diffuse(0.2,0.2,0.2,0.8); 52 | 53 | 54 | MESSAGEMAN:Broadcast("UpdateOverlay"); 55 | end; 56 | 57 | UnloadMessageCommand=cmd(Load,nil); 58 | LoadCommand=function(self) 59 | 60 | LoadBackground(self,Global.song); 61 | 62 | ratio = self:GetWidth()/self:GetHeight(); 63 | adjust = ((16/9) - ratio)/4; 64 | 65 | self:fadeleft(adjust); 66 | self:faderight(adjust); 67 | 68 | self:stretchto(0,0,SCREEN_HEIGHT*ratio,SCREEN_HEIGHT); 69 | self:x(SCREEN_CENTER_X); 70 | self:y(SCREEN_TOP+20); 71 | 72 | self:linear(0.3); 73 | self:diffuse(1,1,1,1); 74 | 75 | self:cropbottom(0.15); 76 | self:fadebottom(0.05); 77 | 78 | MESSAGEMAN:Broadcast("UpdateOverlay"); 79 | end; 80 | }; 81 | 82 | t[#t+1] = LoadActor(THEME:GetPathG("","overlay"))..{ 83 | InitCommand=cmd(valign,0;diffuse,Global.bgcolor;visible,false); 84 | UpdateOverlayMessageCommand=function(self) 85 | self:visible(true); 86 | self:stretchto(0,0,SCREEN_WIDTH,SCREEN_HEIGHT); 87 | self:x(SCREEN_CENTER_X); 88 | self:y(SCREEN_TOP+20); 89 | end; 90 | }; 91 | 92 | -- layer 1 93 | t[#t+1] = LoadActor(THEME:GetPathG("","bg"))..{ 94 | InitCommand=cmd(FullScreen;diffuse,Global.bgcolor;diffusealpha,0.8;fadetop,0.8); 95 | }; 96 | 97 | -- layer 2 98 | t[#t+1] = LoadActor(THEME:GetPathG("","bg"))..{ 99 | InitCommand=cmd(FullScreen;diffuse,Global.bgcolor;diffusealpha,0); 100 | StateChangedMessageCommand=function(self) 101 | self:stoptweening(); 102 | self:decelerate(0.2); 103 | if Global.state == "GroupSelect" or 104 | Global.state == "SelectSteps" then 105 | --Global.state == "OptionsMenu" then 106 | self:diffusealpha(0.85); 107 | else 108 | self:diffusealpha(0); 109 | end 110 | end 111 | }; 112 | 113 | return t -------------------------------------------------------------------------------- /BGAnimations/ScreenSelectMusicCustom underlay/default.lua: -------------------------------------------------------------------------------- 1 | local t = MenuInputActor()..{ 2 | InitCommand=function(self) 3 | ResetState(); 4 | SetGroups(); 5 | SetSSM(); 6 | end; 7 | 8 | OnCommand=cmd(sleep,1;queuecommand,"Unlock"); 9 | OffCommand=cmd(linear,0.5;diffusealpha,0;sleep,0.75;queuecommand,"Exit"); 10 | 11 | PlayerJoinedMessageCommand=function() 12 | GAMESTATE:SetCurrentStyle("versus"); 13 | SCREENMAN:SetNewScreen("ScreenSelectMusicCustom"); 14 | end; 15 | 16 | MenuInputMessageCommand=function(self,param) 17 | if param and param.Player and SideJoined(param.Player) and not Global.lockinput then 18 | InputController(self,param); 19 | MainController(self,param); 20 | end; 21 | end; 22 | } 23 | 24 | --//================================================================ 25 | 26 | function InputController(self,param) 27 | if Global.oplist[param.Player] then 28 | OptionsListController(self,param); 29 | else 30 | if Global.state == "MainMenu" then MainMenuController(self,param) end; 31 | if Global.state == "GroupSelect" then GroupController(self,param) end; 32 | if Global.state == "MusicWheel" then WheelController(self,param) end; 33 | if Global.state == "SelectSteps" then StepsController(self,param) end; 34 | if Global.state == "HighScores" then HighScoreController(self,param) end; 35 | if Global.state == "OptionsMenu" then OptionsMenuController(self,param); end; 36 | end; 37 | end; 38 | 39 | --//================================================================ 40 | 41 | function MainController(self,param) 42 | if param.Input == "Options" and not Global.oplist[param.Player] then 43 | InputController(self, { Player = param.Player, Input = "Next", Button = "Right" }) 44 | Global.oplist[param.Player] = true 45 | MESSAGEMAN:Broadcast("OptionsListOpened", param); 46 | end; 47 | 48 | if param.Input == "PressSelect" then 49 | if not Global.oplist[param.Player] then 50 | Global.oplist[param.Player] = true 51 | MESSAGEMAN:Broadcast("OptionsListOpened", param); 52 | return; 53 | else 54 | Global.oplist[param.Player] = false; 55 | MESSAGEMAN:Broadcast("OptionsListClosed", param); 56 | return; 57 | end 58 | end; 59 | 60 | if param.Input == "Center" or param.Input == "Start" then 61 | if Global.oplist[param.Player] then 62 | SelectOptionsList(param); 63 | else 64 | MainMenuDecision({ Player = param.Player }); 65 | end; 66 | end; 67 | 68 | if param.Input == "Return" and Global.level == 1 then 69 | if not Global.oplist[param.Player] then 70 | Global.blockjoin = false; 71 | SCREENMAN:SetNewScreen(SCREENMAN:GetTopScreen():GetPrevScreenName()); 72 | else 73 | OptionsListController(self,param); 74 | end; 75 | end; 76 | end; 77 | 78 | --//================================================================ 79 | 80 | t[#t+1] = LoadActor(THEME:GetPathB("","_assets/sound")); 81 | t[#t+1] = LoadActor(THEME:GetPathB("","_assets/fulldisplay")); 82 | 83 | t[#t+1] = LoadActor("assets/highscores"); 84 | t[#t+1] = LoadActor("assets/notefield"); 85 | t[#t+1] = LoadActor("assets/groupselect"); 86 | t[#t+1] = LoadActor("assets/bannerwheel"); 87 | t[#t+1] = LoadActor("assets/information"); 88 | t[#t+1] = LoadActor(THEME:GetPathB("","_assets/cursteps")); 89 | t[#t+1] = LoadActor("assets/stepslist"); 90 | t[#t+1] = LoadActor("assets/optionsmenu"); 91 | t[#t+1] = LoadActor("assets/optionslist"); 92 | t[#t+1] = LoadActor("assets/mainmenu"); 93 | 94 | t[#t+1] = LoadActor(THEME:GetPathB("","_assets/transition")); 95 | 96 | --//================================================================ 97 | 98 | return t -------------------------------------------------------------------------------- /Graphics/footer/default.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{} 2 | 3 | t[#t+1] = LoadActor(THEME:GetPathG("","border"))..{ 4 | InitCommand=cmd(vertalign,top;y,-38;zoom,0.445;diffuse,0.8,0.8,0.8,1); 5 | }; 6 | 7 | --draw them regardless if the player is joined or not 8 | for pn in ivalues({PLAYER_1,PLAYER_2}) do 9 | 10 | t[#t+1] = LoadActor(THEME:GetPathG("","profileslot"))..{ 11 | InitCommand=cmd(vertalign,bottom;horizalign,left;y,-1;x,317*pnSide(pn);zoomy,0.445;zoomx,-0.445*pnSide(pn)); 12 | }; 13 | 14 | --minilabel 15 | t[#t+1] = Def.BitmapText{ 16 | Font = Fonts.common["ProfileMini"]; 17 | InitCommand=cmd(vertalign,bottom;y,-26;x,279*pnSide(pn);horizalign,pnAlign(OtherPlayer[pn]);zoom,0.28;diffuse,PlayerColor(pn)); 18 | OnCommand=cmd(playcommand,"Refresh"); 19 | PlayerJoinedMessageCommand=cmd(playcommand,"Refresh"); 20 | PlayerUnjoinedMessageCommand=cmd(playcommand,"Refresh"); 21 | RefreshCommand=function(self) 22 | self:settext(ToEnumShortString(pn)); 23 | if SideJoined(pn) then 24 | if IsRoutine() and Global.master ~= pn then 25 | self:diffusealpha(0.33); 26 | else 27 | self:diffusealpha(1) 28 | end; 29 | else 30 | self:diffusealpha(0.33); 31 | end; 32 | 33 | end; 34 | }; 35 | end; 36 | 37 | 38 | 39 | for pn in ivalues({PLAYER_1,PLAYER_2}) do 40 | 41 | --player name 42 | t[#t+1] = Def.BitmapText{ 43 | Font = Fonts.common["ProfileName"]; 44 | InitCommand=cmd(y,-38;x,147*pnSide(pn);horizalign,pnAlign(OtherPlayer[pn]);zoom,0.444;strokecolor,0.15,0.15,0.15,0.4); 45 | OnCommand=cmd(playcommand,"Refresh"); 46 | PlayerJoinedMessageCommand=cmd(playcommand,"Refresh"); 47 | PlayerUnjoinedMessageCommand=cmd(playcommand,"Refresh"); 48 | RefreshCommand=function(self) 49 | 50 | if SideJoined(pn) then 51 | self:stopeffect(); 52 | if IsRoutine() and Global.master ~= pn then 53 | self:settext(""); 54 | else 55 | local name = PROFILEMAN:GetProfile(pn):GetDisplayName(); 56 | if name == "" then 57 | self:diffusealpha(0.33); 58 | self:settext("No Profile"); 59 | else 60 | self:diffusealpha(1); 61 | self:settext(name); 62 | end; 63 | end; 64 | else 65 | 66 | if not GAMESTATE:PlayersCanJoin() or Global.blockjoin then 67 | self:stopeffect(); 68 | self:diffusealpha(0.33); 69 | self:settext(""); 70 | else 71 | self:diffuseshift(); 72 | self:effectcolor1(0.5,0.5,0.5,0.5); 73 | self:effectcolor2(1,1,1,0.5); 74 | self:effectperiod(1); 75 | self:settext("Press &START; to join"); 76 | end; 77 | 78 | end 79 | end; 80 | }; 81 | 82 | 83 | --highlight 84 | t[#t+1] = LoadActor(THEME:GetPathG("","profileslot"))..{ 85 | InitCommand=cmd(vertalign,bottom;horizalign,left;y,-1;x,317*pnSide(pn);zoomy,0.445;zoomx,-0.445*pnSide(pn);blend,Blend.Add;diffuse,PlayerColor(pn);diffusealpha,0); 86 | FocusCommand=function(self) 87 | if Global.confirm[pn] == 1 then 88 | self:stoptweening(); 89 | self:decelerate(0.25); 90 | self:diffuse(PlayerColor(pn)); 91 | self:diffusealpha(1); 92 | else 93 | self:stoptweening(); 94 | self:decelerate(0.25); 95 | self:diffusealpha(0); 96 | end; 97 | end; 98 | 99 | MainMenuMessageCommand=cmd(playcommand,"Focus"); 100 | StateChangedMessageCommand=cmd(playcommand,"Focus"); 101 | NoteskinSelectedMessageCommand=cmd(playcommand,"Focus"); 102 | StepsSelectedMessageCommand=cmd(playcommand,"Focus"); 103 | DeselectMessageCommand=cmd(playcommand,"Focus"); 104 | DecisionMessageCommand=cmd(playcommand,"Focus"); 105 | FinalDecisionMessageCommand=cmd(playcommand,"Focus"); 106 | 107 | }; 108 | 109 | end; 110 | 111 | 112 | return t -------------------------------------------------------------------------------- /Languages/en.ini: -------------------------------------------------------------------------------- 1 | [Common] 2 | WindowTitle=Stepmania Ultimate 3 | 4 | [Configs] 5 | BGBrightness=Background Brightness 6 | DefaultBG=Use Default Background 7 | DisableBGA=Disable Background Animations 8 | CenterPlayer=Center 1 Player 9 | MusicRate=Music Rate 10 | FailType=Fail Type 11 | FailMissCombo=Miss Combo Fail 12 | AllowW1=Flawless Timing 13 | TimingDifficulty=Timing Window Difficulty 14 | LifeDifficulty=Life Meter Difficulty 15 | 16 | speed_mod=Speed 17 | SpeedModifier=Increment 18 | speed_type=Mode 19 | yoffset=Receptor Position 20 | zoom=Zoom 21 | zoom_x=Horizontal Zoom 22 | zoom_y=Vertical Zoom 23 | zoom_z=Depth Zoom 24 | rotation_x=Vertical Rotation 25 | rotation_y=Horizontal Rotation 26 | rotation_z=Axis Rotation 27 | reverse=Reverse 28 | fov=FOV 29 | hidden=Hidden 30 | sudden=Sudden 31 | hidden_offset=Hidden Offset 32 | sudden_offset=Sudden Offset 33 | fade_dist=Fade Distance 34 | glow_during_fade=Fade Glow 35 | ReverseJudgment=Reverse Judgment 36 | 37 | ScreenFilter=Screen Filter 38 | ShowEarlyLate=Early/Late Label 39 | ShowJudgmentList=Judgment Counter 40 | ShowOffsetMeter=Offset Meter 41 | ShowPacemaker=Pacemaker 42 | 43 | 44 | [ConfigsDescriptions] 45 | Display=Options that affect the gameplay display 46 | Song=Options that affect the song and stage 47 | Judgment=Options that affect how the game judges your performance 48 | Reset=Reset options to default values 49 | Reset All=Reset options to default values 50 | 51 | BGBrightness=Controls the brightness of the background during gameplay 52 | DefaultBG=Toggles between normal background behaviour or using a default one 53 | DisableBGA=Disables background animations and videos 54 | CenterPlayer=Toggles centralizing the notefield for single player styles 55 | MusicRate=Controls the playback rate of the song 56 | FailType=Immediate ends the stage when all players fails, while Delayed still fails but does not end the stage prematurely 57 | FailMissCombo=Immediately fails the stage if the player reaches a certain amount of Miss Combo 58 | AllowW1=Enables or disables Flawless Judgement 59 | TimingDifficulty=Increasing this value will increase the strictness of the judgment for each note 60 | LifeDifficulty=Increasing this value will cause your life meter to drain faster and refill slower 61 | 62 | speed_mod=The scrolling speed for arrows 63 | SpeedModifier=Increase/decrease the speedmod by this value 64 | speed_type=Changes how the speed mod is applied 65 | yoffset=Controls the notefield receptor's vertical position 66 | zoom=Scales the entire notefield 67 | zoom_x=Scales the notefield horizontally 68 | zoom_y=Scales the notefield vertically 69 | zoom_z=Scales the depth of the notefield (affects 3D noteskins) 70 | rotation_x=Rotates the notefield vertically (affected by FOV) 71 | rotation_y=Rotates the notefield horizontally (affected by FOV) 72 | rotation_z=Tilts the notefield 73 | reverse=Makes the arrows scroll top-to-bottom 74 | fov=Field of Vision 75 | hidden=Arrows will vanish roughly halfway through before crossing the receptors 76 | sudden=Arrows will appear roughly halfway through before crossing the receptors 77 | fade_dist=Controls the distance in which arrows will fade when using Hidden/Sudden 78 | glow_during_fade=Toggles if the arrows will glow briefly when fading during Hidden/Sudden 79 | ReverseJudgment=Reverses the judgment scores during gameplay 80 | 81 | ScreenFilter=Controls the opacity of the underlay below the notefield 82 | ShowEarlyLate=Displays a small label next to the player judgment that indicates if the judgment offset was positive or negative 83 | ShowJudgmentList=Displays a small window on the side with the amount of judgments made so far and the current letter grade based on these judgments 84 | ShowOffsetMeter=Displays the judgment offset visually in a bar that represents the timing window 85 | ShowPacemaker=Displays a graph that shows the Current, Best and Target accuracy in real time -------------------------------------------------------------------------------- /BGAnimations/ScreenEvaluationCustom underlay/assets/information.lua: -------------------------------------------------------------------------------- 1 | local display_fulltitle 2 | local display_title; 3 | local display_subtitle; 4 | local display_artist; 5 | local translit_fulltitle 6 | local translit_title; 7 | local translit_subtitle; 8 | local translit_artist; 9 | 10 | local maxwidth = 360; 11 | 12 | local t = Def.ActorFrame{ 13 | InitCommand=function(self) 14 | display_fulltitle = Global.song:GetDisplayFullTitle() 15 | display_title = Global.song:GetDisplayMainTitle() 16 | display_subtitle = Global.song:GetDisplaySubTitle() 17 | display_artist = Global.song:GetDisplayArtist() 18 | translit_fulltitle = Global.song:GetTranslitFullTitle() 19 | translit_title = Global.song:GetTranslitMainTitle() 20 | translit_subtitle = Global.song:GetTranslitSubTitle() 21 | translit_artist = Global.song:GetTranslitArtist() 22 | self:diffusealpha(0); 23 | end; 24 | 25 | OnCommand=cmd(stoptweening;sleep,0.1;linear,0.2;diffusealpha,1); 26 | } 27 | 28 | --// CAPTION ================= 29 | t[#t+1] = Def.BitmapText{ 30 | Font = Fonts.eval["Caption"]; 31 | InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_TOP+32;zoomx,0.32;zoomy,0.3;diffuse,0.66,0.66,0.66,0.75;diffusebottomedge,1,1,1,0.75;strokecolor,0.1,0.1,0.1,1); 32 | OnCommand=cmd(settext,"RESULTS"); 33 | } 34 | 35 | --// LEFT ================= 36 | t[#t+1] = Def.ActorFrame{ 37 | InitCommand=cmd(x,SCREEN_CENTER_X-275;y,SCREEN_TOP+44); 38 | Def.Sprite{ 39 | InitCommand=cmd(horizalign,left;vertalign,top); 40 | OnCommand=function(self) 41 | LoadJacket(self,Global.song); 42 | self:scaletoclipped(48,48); 43 | end; 44 | }, 45 | 46 | Def.BitmapText{ 47 | Font = Fonts.eval["Info"]; 48 | InitCommand=cmd(horizalign,left;vertalign,top;zoom,0.6;x,60;y,2;maxwidth,maxwidth/self:GetZoom(); 49 | strokecolor,0.2,0.2,0.2,1;shadowlength,1.25); 50 | OnCommand=cmd(settext,display_title,translit_title); 51 | }, 52 | 53 | Def.BitmapText{ 54 | Font = Fonts.eval["Info"]; 55 | InitCommand=cmd(horizalign,left;vertalign,top;zoom,0.475;x,60;y,20;maxwidth,maxwidth/self:GetZoom(); 56 | diffuse,HighlightColor();strokecolor,BoostColor(HighlightColor(),0.2);shadowlength,1.25); 57 | OnCommand=cmd(settext,display_artist,translit_artist); 58 | }, 59 | 60 | Def.BitmapText{ 61 | Font = Fonts.eval["Info"]; 62 | InitCommand=cmd(horizalign,left;vertalign,top;zoom,0.475;x,60;y,36;maxwidth,maxwidth/self:GetZoom(); 63 | diffuse,0.75,0.75,0.75,1;strokecolor,0.2,0.2,0.2,1;shadowlength,1.25); 64 | OnCommand=cmd(settext,Global.song and Global.song:GetGroupName() or GAMESTATE:GetCurrentSong():GetGroupName()); 65 | }, 66 | }; 67 | 68 | --// RIGHT ================= 69 | t[#t+1] = Def.ActorFrame{ 70 | InitCommand=cmd(x,SCREEN_CENTER_X+284;y,SCREEN_TOP+50); 71 | Def.BitmapText{ 72 | Font = Fonts.eval["Info"]; 73 | InitCommand=cmd(horizalign,right;vertalign,top;zoom,0.6;x,-12;y,-2; 74 | strokecolor,0.2,0.2,0.2,1;shadowlength,1.25); 75 | OnCommand=cmd(settext,"Stage "..GAMESTATE:GetCurrentStageIndex()+1); 76 | }, 77 | 78 | Def.BitmapText{ 79 | Font = Fonts.eval["Info"]; 80 | InitCommand=cmd(horizalign,right;vertalign,top;zoom,0.4;x,-12;y,18; 81 | strokecolor,0.2,0.2,0.2,1;shadowlength,1.25); 82 | OnCommand=cmd(settext,"Timing Difficulty: "..GetTimingDifficulty()); 83 | }, 84 | 85 | Def.BitmapText{ 86 | Font = Fonts.eval["Info"]; 87 | InitCommand=cmd(horizalign,right;vertalign,top;zoom,0.4;x,-12;y,32; 88 | strokecolor,0.2,0.2,0.2,1;shadowlength,1.25); 89 | OnCommand=cmd(settext,"Life Difficulty: "..GetLifeDifficulty()); 90 | }, 91 | }; 92 | 93 | 94 | return t; -------------------------------------------------------------------------------- /Graphics/Player judgment/default.lua: -------------------------------------------------------------------------------- 1 | local player = Var "Player"; 2 | local pulse = cmd(stoptweening;zoomx,1.3;zoomy,1.5;decelerate,0.075;zoom,1;sleep,0.725;linear,0.12;zoom,0.5;sleep,0.5;linear,0.15;zoom,0.25); 3 | local fadeout = cmd(stoptweening;diffusealpha,1;sleep,0.8;linear,0.15;diffusealpha,0); 4 | local conf = PLAYERCONFIG:get_data(player); 5 | local reverse_judgment = conf.ReverseJudgment; 6 | 7 | local TNSFrames = {}; 8 | 9 | if not reverse_judgment then 10 | TNSFrames = { 11 | TapNoteScore_W1 = 0; 12 | TapNoteScore_W2 = 1; 13 | TapNoteScore_W3 = 2; 14 | TapNoteScore_W4 = 3; 15 | TapNoteScore_W5 = 4; 16 | TapNoteScore_Miss = 5; 17 | TapNoteScore_CheckpointHit = 0; 18 | TapNoteScore_CheckpointMiss = 5; 19 | } 20 | 21 | if PREFSMAN:GetPreference("AllowW1") == "AllowW1_Never" then 22 | TNSFrames.TapNoteScore_CheckpointHit = 1; 23 | end; 24 | else 25 | TNSFrames = { 26 | TapNoteScore_W1 = 5; 27 | TapNoteScore_W2 = 4; 28 | TapNoteScore_W3 = 3; 29 | TapNoteScore_W4 = 2; 30 | TapNoteScore_W5 = 1; 31 | TapNoteScore_Miss = 0; 32 | TapNoteScore_CheckpointHit = 5; 33 | TapNoteScore_CheckpointMiss = 0; 34 | } 35 | 36 | if PREFSMAN:GetPreference("AllowW1") == "AllowW1_Never" then 37 | TapNoteScore_Miss = 1; 38 | TNSFrames.TapNoteScore_CheckpointMiss = 1; 39 | end; 40 | end; 41 | 42 | local late_color = {1,0.9,0.5,1}; 43 | local early_color = {0.4,0.8,1,1}; 44 | 45 | local t = Def.ActorFrame{ 46 | InitCommand=function(self) 47 | self:draworder(501); 48 | Global.piuscoring[player] = 0; 49 | end; 50 | 51 | JudgmentMessageCommand=function(self,param) 52 | 53 | if param.TapNoteScore == "TapNoteScore_HitMine" or param.TapNoteScore == "TapNoteScore_AvoidMine" then return end; 54 | if param.Player == player and param.TapNoteScore then 55 | pulse(self); 56 | end; 57 | 58 | if IsGame("pump") and player == param.Player then 59 | local beat = GAMESTATE:GetSongBeat(); 60 | local value = PIUScoring(player, param, beat); 61 | Global.piuscoring[player] = Global.piuscoring[player] + value; 62 | Global.piuscoring[player] = clamp(Global.piuscoring[player],0,math.huge); 63 | end; 64 | 65 | end; 66 | 67 | LoadActor("Judgment")..{ 68 | OnCommand=cmd(vertalign,bottom;zoom,0.45;animate,false;y,12;diffusealpha,0); 69 | JudgmentMessageCommand=function(self,param) 70 | 71 | if param.TapNoteScore == "TapNoteScore_HitMine" or param.TapNoteScore == "TapNoteScore_AvoidMine" then return end; 72 | if param.Player == player and param.TapNoteScore and string.find(string.lower(param.TapNoteScore),"mine") == nil then 73 | self:stoptweening(); 74 | if TNSFrames[param.TapNoteScore] then self:setstate(TNSFrames[param.TapNoteScore]); end; 75 | fadeout(self); 76 | else 77 | return 78 | end; 79 | end; 80 | }, 81 | 82 | Def.BitmapText{ 83 | Font = Fonts.player["Label"]; 84 | InitCommand=cmd(zoomx,0.5;zoomy,0.475;y,-40;visible,conf.ShowEarlyLate); 85 | EarlyCommand=cmd(stoptweening;strokecolor,BoostColor(early_color,0.3);diffuse,BoostColor(early_color,1.5);decelerate,0.2;diffuse,early_color;sleep,0.6;linear,0.15;diffusealpha,0); 86 | LateCommand=cmd(stoptweening;strokecolor,BoostColor(late_color,0.3);diffuse,BoostColor(late_color,1.5);decelerate,0.2;diffuse,late_color;sleep,0.6;linear,0.15;diffusealpha,0); 87 | JudgmentMessageCommand=function(self,param) 88 | if param.Player == player and param.TapNoteOffset then 89 | 90 | if param.TapNoteScore == "TapNoteScore_CheckpointHit" then 91 | return 92 | end; 93 | 94 | if param.TapNoteOffset > 0 then 95 | self:playcommand("Late"); 96 | self:settext(string.upper("Late")); 97 | elseif param.TapNoteOffset < 0 then 98 | self:playcommand("Early"); 99 | self:settext(string.upper("Early")); 100 | end 101 | end; 102 | end; 103 | } 104 | }; 105 | 106 | 107 | return t -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay overlay/assets/offset.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{} 2 | local scale = PREFSMAN:GetPreference("TimingWindowScale") or 1.0; 3 | local add = PREFSMAN:GetPreference("TimingWindowAdd") or 0.0; 4 | local timings = { 5 | { Value = (PREFSMAN:GetPreference("TimingWindowSecondsW1") * scale) + add, Key = "Flawless" }, 6 | { Value = (PREFSMAN:GetPreference("TimingWindowSecondsW2") * scale) + add, Key = "Perfect" }, 7 | { Value = (PREFSMAN:GetPreference("TimingWindowSecondsW3") * scale) + add, Key = "Great" }, 8 | { Value = (PREFSMAN:GetPreference("TimingWindowSecondsW4") * scale) + add, Key = "Good" }, 9 | { Value = (PREFSMAN:GetPreference("TimingWindowSecondsW5") * scale) + add, Key = "Bad" }, 10 | } 11 | 12 | local maxtiming = math.max(timings[1].Value,timings[2].Value,timings[3].Value,timings[4].Value,timings[5].Value); 13 | local meterwidth = 160; 14 | local meterheight = 14; 15 | 16 | local function TickColor(timing) 17 | for i=1,#timings do 18 | if timing <= timings[i].Value then 19 | return JudgmentColor(timings[i].Key) 20 | end; 21 | end; 22 | return {1,0,0,1} 23 | end; 24 | 25 | for pn in ivalues(GAMESTATE:GetHumanPlayers()) do 26 | if SideJoined(pn) and PLAYERCONFIG:get_data(pn).ShowOffsetMeter then 27 | 28 | local o = Def.ActorFrame{ 29 | OnCommand=function(self) 30 | local gameplay = SCREENMAN:GetTopScreen(); 31 | local player = gameplay:GetChild("Player"..ToEnumShortString(pn)) 32 | local yoffset = NOTESCONFIG:get_data(pn).reverse * (_screen.h * 0.25); 33 | local w1 = PLAYERCONFIG:get_data(pn).AllowW1 or false; 34 | self:x(player:GetX()); 35 | self:y(player:GetY() + yoffset); 36 | end; 37 | } 38 | 39 | -- bg 40 | o[#o+1] = LoadActor(THEME:GetPathG("","glow"))..{ 41 | InitCommand=cmd(zoomto,meterwidth+48,meterheight+8;diffuse,0,0,0,0.6); 42 | }; 43 | 44 | o[#o+1] = Def.Quad{ 45 | InitCommand=cmd(zoomto,meterwidth,meterheight;diffuse,0.1,0.1,0.1,0.9); 46 | }; 47 | 48 | for i=#timings,1,-1 do 49 | 50 | local k = timings[i].Key; 51 | local v = timings[i].Value; 52 | local c = JudgmentColor(k); 53 | 54 | o[#o+1] = Def.Quad{ 55 | InitCommand=cmd(zoomto,(v/maxtiming) * (meterwidth-4),meterheight-4;diffuse,c;diffusealpha,0.1); 56 | OnCommand=function(self) 57 | if k == "Flawless" then 58 | self:visible(THEMECONFIG:get_data().AllowW1); 59 | end; 60 | end; 61 | }; 62 | 63 | end; 64 | 65 | o[#o+1] = Def.ActorFrame{ 66 | InitCommand=cmd(diffusealpha,0); 67 | JudgmentMessageCommand=function(self,param) 68 | if param.Player == pn then 69 | if param.HoldNoteScore then return end; 70 | 71 | if param.TapNoteScore == "TapNoteScore_Miss" or 72 | param.TapNoteScore == "TapNoteScore_CheckpointMiss" then 73 | return 74 | end; 75 | 76 | local tap = param.TapNoteOffset 77 | local offset = clamp(tap,-maxtiming,maxtiming); 78 | local xpos = (offset/maxtiming) * (meterwidth-4) * 0.5; 79 | 80 | self:stoptweening(); 81 | self:playcommand("Pulse", { Color = TickColor(math.abs(offset)) }); 82 | self:diffusealpha(1); 83 | self:decelerate(0.075); 84 | self:x(xpos); 85 | self:sleep(0.01); 86 | self:linear(math.abs(xpos)/20); 87 | self:x(0); 88 | end; 89 | end; 90 | 91 | Def.Quad{ 92 | InitCommand=cmd(zoomto,7,4;y,meterheight/2;diffuse,0.1,0.1,0.1,0.9); 93 | }, 94 | Def.Quad{ 95 | InitCommand=cmd(zoomto,7,4;y,-meterheight/2;diffuse,0.1,0.1,0.1,0.9); 96 | }, 97 | 98 | Def.Quad{ 99 | InitCommand=cmd(zoomto,3,meterheight); 100 | }, 101 | 102 | }; 103 | 104 | t[#t+1] = o; 105 | 106 | end; 107 | end; 108 | 109 | 110 | return t; -------------------------------------------------------------------------------- /Graphics/Player combo/default.lua: -------------------------------------------------------------------------------- 1 | local player = Var "Player" 2 | local pulse = cmd(stoptweening;zoomx,1.3;zoomy,1.5;decelerate,0.075;zoom,1;sleep,0.725;linear,0.12;zoom,0.5;sleep,0.5;linear,0.15;zoom,0.25); 3 | local fadeout = cmd(stoptweening;sleep,0.8;linear,0.15;diffusealpha,0); 4 | local reverse_judgment = PLAYERCONFIG:get_data(player).ReverseJudgment; 5 | 6 | local t = Def.ActorFrame{ 7 | 8 | InitCommand=function(self) self:draworder(500); end; 9 | JudgmentMessageCommand=function(self,param) 10 | if param.TapNoteScore == "TapNoteScore_HitMine" or param.TapNoteScore == "TapNoteScore_AvoidMine" then return end; 11 | if param.Player == player and param.TapNoteScore then pulse(self); end; 12 | end; 13 | 14 | 15 | LoadActor(THEME:GetPathG("","dim"))..{ 16 | InitCommand=cmd(y,4;zoomx,0.325;zoomy,0.135;diffuse,0.2,0.2,0.2,0;fadeleft,0.45;faderight,0.45); 17 | ComboCommand=function(self,param) 18 | local combo = param.Misses or param.Combo 19 | if not combo or combo < 4 then self:visible(false); else self:visible(true); end 20 | self:stoptweening(); 21 | self:diffusealpha(0.5); 22 | fadeout(self); 23 | end; 24 | }; 25 | 26 | --accuracy 27 | Def.BitmapText{ 28 | Font = Fonts.player["Accuracy"]; 29 | Text="Accuracy"; 30 | InitCommand=cmd(textglowmode,"TextGlowMode_Inner"); 31 | OnCommand=cmd(horizalign,right;diffuse,0.8,0.8,0.8,1;diffusetopedge,1,1,1,1;strokecolor,0,0,0,0.66;diffusealpha,0;zoom,0.433;x,46;y,2); 32 | ComboCommand=function(self,param) 33 | local accuracy = string.format("%.2f", 100) 34 | local combo = param.Misses or param.Combo 35 | local stats = nil; 36 | 37 | if param.Player or player then 38 | if param.currentDP and param.possibleDP then 39 | if param.possibleDP > 0 then 40 | accuracy = string.format("%.2f",(param.currentDP/param.possibleDP)*100) 41 | else 42 | accuracy = string.format("%.2f",100) 43 | end 44 | else 45 | stats = STATSMAN:GetCurStageStats():GetPlayerStageStats(player); 46 | accuracy = string.format("%.2f",(stats:GetActualDancePoints()/stats:GetCurrentPossibleDancePoints())*100) 47 | end; 48 | end 49 | 50 | self:stoptweening(); 51 | self:diffusealpha(1); 52 | self:settext(accuracy.."% Accuracy"); 53 | if not combo then self:visible(false); else self:visible(true); end 54 | fadeout(self); 55 | end; 56 | }; 57 | 58 | --combo 59 | Def.BitmapText{ 60 | Font = Fonts.player["Combo"]; 61 | OnCommand=cmd(horizalign,right;diffuse,1,1,1,0;strokecolor,0,0,0,1;zoomx,0.825;zoomy,0.725;y,22;x,10); 62 | ComboCommand=function(self,param) 63 | self:stoptweening(); 64 | 65 | self:diffuse(1,1,1,1); 66 | if (not reverse_judgment and param.Misses) or (reverse_judgment and param.Combo) then 67 | self:diffuse(1,0,0.2,1); 68 | end; 69 | 70 | local combo = param.Misses or param.Combo; 71 | if combo then 72 | self:settext(string.rep("0",3-string.len(combo))..combo); 73 | end; 74 | if not combo or combo < 4 then self:visible(false); else self:visible(true); end; 75 | fadeout(self); 76 | end; 77 | }; 78 | 79 | --label 80 | Def.BitmapText{ 81 | Font = Fonts.player["Label"]; 82 | OnCommand=cmd(horizalign,left;diffuse,1,1,1,0;strokecolor,0,0,0,0.95;zoomx,0.72;zoomy,0.64;vertspacing,-18;x,15;y,22); 83 | ComboCommand=function(self,param) 84 | local combo = param.Misses or param.Combo; 85 | local stats = nil; 86 | 87 | self:stoptweening(); 88 | self:diffuse(1,1,1,1); 89 | 90 | if param.Player or player then 91 | stats = STATSMAN:GetCurStageStats():GetPlayerStageStats(player); 92 | if stats:FullComboOfScore("TapNoteScore_W1") then 93 | self:settext("superb\ncombo"); 94 | elseif stats:FullComboOfScore("TapNoteScore_W2") then 95 | self:settext("perfect\ncombo"); 96 | elseif stats:FullComboOfScore("TapNoteScore_W3") then 97 | self:settext("full\ncombo"); 98 | elseif param.Combo then 99 | self:settext("\ncombo"); 100 | elseif param.Misses then 101 | self:settext("miss\ncombo"); 102 | end; 103 | end 104 | 105 | if (not reverse_judgment and param.Misses) or (reverse_judgment and param.Combo) then 106 | self:diffuse(1,0,0.2,1); 107 | end; 108 | 109 | if not combo or combo < 4 then self:visible(false); else self:visible(true); end; 110 | fadeout(self); 111 | end; 112 | }; 113 | 114 | }; 115 | 116 | return t -------------------------------------------------------------------------------- /Fonts/roboto/_roboto Medium 24px.ini: -------------------------------------------------------------------------------- 1 | [common] 2 | Baseline=27 3 | Top=9 4 | LineSpacing=29 5 | DrawExtraPixelsLeft=1 6 | DrawExtraPixelsRight=0 7 | AdvanceExtraPixels=0 8 | 9 | [main] 10 | Line 0= !"#$%&'()*+,-. 11 | Line 1=/0123456789:;<= 12 | Line 2=>?@ABCDEFGHIJKL 13 | Line 3=MNOPQRSTUVWXYZ[ 14 | Line 4=\]^_`abcdefghij 15 | Line 5=klmnopqrstuvwxy 16 | Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š 17 | Line 7=‹ŒŽ‘’“”•–—˜™š›œ 18 | Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬ 19 | Line 9=­®¯°±²³´µ¶·¸¹º» 20 | Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ 21 | Line 11=ËÌÍÎÏÐÑÒÓÔÕÖ×ØÙ 22 | Line 12=ÚÛÜÝÞßàáâãäåæçè 23 | Line 13=éêëìíîïðñòóôõö÷ 24 | Line 14=øùúûüýþÿ 25 | 26 | 0=6 27 | 1=6 28 | 2=8 29 | 3=15 30 | 4=14 31 | 5=18 32 | 6=15 33 | 7=4 34 | 8=8 35 | 9=8 36 | 10=11 37 | 11=13 38 | 12=5 39 | 13=8 40 | 14=7 41 | 15=10 42 | 16=14 43 | 17=14 44 | 18=14 45 | 19=14 46 | 20=14 47 | 21=14 48 | 22=14 49 | 23=14 50 | 24=14 51 | 25=14 52 | 26=6 53 | 27=6 54 | 28=12 55 | 29=13 56 | 30=13 57 | 31=12 58 | 32=21 59 | 33=16 60 | 34=15 61 | 35=16 62 | 36=16 63 | 37=14 64 | 38=13 65 | 39=16 66 | 40=17 67 | 41=7 68 | 42=13 69 | 43=15 70 | 44=13 71 | 45=21 72 | 46=17 73 | 47=17 74 | 48=15 75 | 49=17 76 | 50=15 77 | 51=14 78 | 52=15 79 | 53=16 80 | 54=16 81 | 55=21 82 | 56=15 83 | 57=15 84 | 58=14 85 | 59=7 86 | 60=10 87 | 61=7 88 | 62=10 89 | 63=11 90 | 64=8 91 | 65=13 92 | 66=14 93 | 67=13 94 | 68=14 95 | 69=13 96 | 70=9 97 | 71=14 98 | 72=13 99 | 73=6 100 | 74=6 101 | 75=13 102 | 76=6 103 | 77=21 104 | 78=13 105 | 79=14 106 | 80=14 107 | 81=14 108 | 82=8 109 | 83=12 110 | 84=8 111 | 85=13 112 | 86=12 113 | 87=18 114 | 88=12 115 | 89=12 116 | 90=12 117 | 91=8 118 | 92=6 119 | 93=8 120 | 94=16 121 | 95=14 122 | 96=5 123 | 97=8 124 | 98=9 125 | 99=17 126 | 100=13 127 | 101=14 128 | 102=12 129 | 103=23 130 | 104=14 131 | 105=7 132 | 106=23 133 | 107=14 134 | 108=5 135 | 109=5 136 | 110=9 137 | 111=9 138 | 112=8 139 | 113=15 140 | 114=19 141 | 115=12 142 | 116=15 143 | 117=12 144 | 118=7 145 | 119=22 146 | 120=12 147 | 121=15 148 | 122=6 149 | 123=6 150 | 124=13 151 | 125=14 152 | 126=17 153 | 127=15 154 | 128=6 155 | 129=15 156 | 130=11 157 | 131=19 158 | 132=11 159 | 133=12 160 | 134=13 161 | 135=8 162 | 136=19 163 | 137=12 164 | 138=9 165 | 139=13 166 | 140=9 167 | 141=9 168 | 142=8 169 | 143=14 170 | 144=12 171 | 145=7 172 | 146=6 173 | 147=9 174 | 148=11 175 | 149=12 176 | 150=17 177 | 151=19 178 | 152=19 179 | 153=12 180 | 154=16 181 | 155=16 182 | 156=16 183 | 157=16 184 | 158=16 185 | 159=16 186 | 160=23 187 | 161=16 188 | 162=14 189 | 163=14 190 | 164=14 191 | 165=14 192 | 166=7 193 | 167=7 194 | 168=7 195 | 169=7 196 | 170=16 197 | 171=17 198 | 172=17 199 | 173=17 200 | 174=17 201 | 175=17 202 | 176=17 203 | 177=13 204 | 178=17 205 | 179=16 206 | 180=16 207 | 181=16 208 | 182=16 209 | 183=15 210 | 184=14 211 | 185=15 212 | 186=13 213 | 187=13 214 | 188=13 215 | 189=13 216 | 190=13 217 | 191=13 218 | 192=20 219 | 193=13 220 | 194=13 221 | 195=13 222 | 196=13 223 | 197=13 224 | 198=6 225 | 199=6 226 | 200=6 227 | 201=6 228 | 202=14 229 | 203=13 230 | 204=14 231 | 205=14 232 | 206=14 233 | 207=14 234 | 208=14 235 | 209=14 236 | 210=14 237 | 211=13 238 | 212=13 239 | 213=13 240 | 214=13 241 | 215=12 242 | 216=14 243 | 217=12 244 | 245 | [alt] 246 | Line 0= Ą˘Ł¤ĽŚ§¨Š 247 | Line 1=ŞŤŹ­ŽŻ°ą˛ł 248 | Line 2=´ľśˇ¸šşťź˝ 249 | Line 3=žżŔÁÂĂÄĹĆÇ 250 | Line 4=ČÉĘËĚÍÎĎĐŃ 251 | Line 5=ŇÓÔŐÖ×ŘŮÚŰ 252 | Line 6=ÜÝŢßŕáâăäĺ 253 | Line 7=ćçčéęëěíîď 254 | Line 8=đńňóôőö÷řů 255 | Line 9=úűüýţ˙ 256 | 257 | 0=6 258 | 1=16 259 | 2=10 260 | 3=13 261 | 4=17 262 | 5=13 263 | 6=14 264 | 7=15 265 | 8=11 266 | 9=14 267 | 10=14 268 | 11=15 269 | 12=14 270 | 13=8 271 | 14=14 272 | 15=14 273 | 16=9 274 | 17=13 275 | 18=7 276 | 19=7 277 | 20=8 278 | 21=8 279 | 22=12 280 | 23=11 281 | 24=6 282 | 25=12 283 | 26=12 284 | 27=8 285 | 28=12 286 | 29=9 287 | 30=12 288 | 31=12 289 | 32=15 290 | 33=16 291 | 34=16 292 | 35=16 293 | 36=16 294 | 37=13 295 | 38=16 296 | 39=16 297 | 40=16 298 | 41=14 299 | 42=14 300 | 43=14 301 | 44=14 302 | 45=7 303 | 46=7 304 | 47=16 305 | 48=16 306 | 49=17 307 | 50=17 308 | 51=17 309 | 52=17 310 | 53=17 311 | 54=17 312 | 55=13 313 | 56=15 314 | 57=16 315 | 58=16 316 | 59=16 317 | 60=16 318 | 61=15 319 | 62=15 320 | 63=15 321 | 64=8 322 | 65=13 323 | 66=13 324 | 67=13 325 | 68=13 326 | 69=6 327 | 70=13 328 | 71=13 329 | 72=13 330 | 73=13 331 | 74=13 332 | 75=13 333 | 76=13 334 | 77=6 335 | 78=6 336 | 79=15 337 | 80=14 338 | 81=13 339 | 82=13 340 | 83=14 341 | 84=14 342 | 85=14 343 | 86=14 344 | 87=14 345 | 88=8 346 | 89=13 347 | 90=13 348 | 91=13 349 | 92=13 350 | 93=12 351 | 94=8 352 | 95=6 353 | -------------------------------------------------------------------------------- /Fonts/corbel/_corbel 28px.ini: -------------------------------------------------------------------------------- 1 | [common] 2 | Baseline=31 3 | Top=11 4 | LineSpacing=35 5 | DrawExtraPixelsLeft=3 6 | DrawExtraPixelsRight=3 7 | AdvanceExtraPixels=0 8 | 9 | [main] 10 | Line 0= !"#$%&'()*+,-. 11 | Line 1=/0123456789:;<= 12 | Line 2=>?@ABCDEFGHIJKL 13 | Line 3=MNOPQRSTUVWXYZ[ 14 | Line 4=\]^_`abcdefghij 15 | Line 5=klmnopqrstuvwxy 16 | Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š 17 | Line 7=‹ŒŽ‘’“”•–—˜™š›œ 18 | Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬ 19 | Line 9=­®¯°±²³´µ¶·¸¹º» 20 | Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ 21 | Line 11=ËÌÍÎÏÐÑÒÓÔÕÖ×ØÙ 22 | Line 12=ÚÛÜÝÞßàáâãäåæçè 23 | Line 13=éêëìíîïðñòóôõö÷ 24 | Line 14=øùúûüýþÿ 25 | 26 | 0=6 27 | 1=7 28 | 2=10 29 | 3=18 30 | 4=14 31 | 5=23 32 | 6=19 33 | 7=5 34 | 8=8 35 | 9=8 36 | 10=15 37 | 11=14 38 | 12=7 39 | 13=9 40 | 14=7 41 | 15=8 42 | 16=14 43 | 17=13 44 | 18=14 45 | 19=13 46 | 20=14 47 | 21=13 48 | 22=15 49 | 23=12 50 | 24=14 51 | 25=15 52 | 26=7 53 | 27=7 54 | 28=14 55 | 29=14 56 | 30=14 57 | 31=12 58 | 32=28 59 | 33=18 60 | 34=17 61 | 35=17 62 | 36=19 63 | 37=15 64 | 38=14 65 | 39=19 66 | 40=19 67 | 41=7 68 | 42=10 69 | 43=17 70 | 44=15 71 | 45=23 72 | 46=20 73 | 47=20 74 | 48=16 75 | 49=21 76 | 50=17 77 | 51=15 78 | 52=16 79 | 53=19 80 | 54=17 81 | 55=25 82 | 56=16 83 | 57=17 84 | 58=16 85 | 59=9 86 | 60=8 87 | 61=9 88 | 62=14 89 | 63=14 90 | 64=10 91 | 65=14 92 | 66=15 93 | 67=12 94 | 68=15 95 | 69=14 96 | 70=9 97 | 71=15 98 | 72=15 99 | 73=7 100 | 74=7 101 | 75=14 102 | 76=7 103 | 77=23 104 | 78=15 105 | 79=15 106 | 80=15 107 | 81=15 108 | 82=9 109 | 83=11 110 | 84=10 111 | 85=15 112 | 86=13 113 | 87=20 114 | 88=13 115 | 89=13 116 | 90=12 117 | 91=8 118 | 92=6 119 | 93=8 120 | 94=14 121 | 95=14 122 | 96=6 123 | 97=14 124 | 98=11 125 | 99=22 126 | 100=13 127 | 101=13 128 | 102=10 129 | 103=32 130 | 104=15 131 | 105=8 132 | 106=30 133 | 107=16 134 | 108=6 135 | 109=6 136 | 110=11 137 | 111=11 138 | 112=12 139 | 113=14 140 | 114=23 141 | 115=10 142 | 116=24 143 | 117=11 144 | 118=8 145 | 119=24 146 | 120=12 147 | 121=17 148 | 122=6 149 | 123=7 150 | 124=14 151 | 125=14 152 | 126=14 153 | 127=14 154 | 128=6 155 | 129=12 156 | 130=10 157 | 131=23 158 | 132=11 159 | 133=14 160 | 134=14 161 | 135=9 162 | 136=17 163 | 137=10 164 | 138=11 165 | 139=14 166 | 140=9 167 | 141=8 168 | 142=10 169 | 143=16 170 | 144=16 171 | 145=7 172 | 146=10 173 | 147=9 174 | 148=11 175 | 149=14 176 | 150=23 177 | 151=24 178 | 152=22 179 | 153=12 180 | 154=18 181 | 155=18 182 | 156=18 183 | 157=18 184 | 158=18 185 | 159=18 186 | 160=25 187 | 161=17 188 | 162=15 189 | 163=15 190 | 164=15 191 | 165=15 192 | 166=7 193 | 167=7 194 | 168=7 195 | 169=7 196 | 170=19 197 | 171=20 198 | 172=20 199 | 173=20 200 | 174=20 201 | 175=20 202 | 176=20 203 | 177=14 204 | 178=20 205 | 179=19 206 | 180=19 207 | 181=19 208 | 182=19 209 | 183=17 210 | 184=16 211 | 185=17 212 | 186=14 213 | 187=14 214 | 188=14 215 | 189=14 216 | 190=14 217 | 191=14 218 | 192=22 219 | 193=12 220 | 194=14 221 | 195=14 222 | 196=14 223 | 197=14 224 | 198=7 225 | 199=7 226 | 200=7 227 | 201=7 228 | 202=15 229 | 203=15 230 | 204=15 231 | 205=15 232 | 206=15 233 | 207=15 234 | 208=15 235 | 209=14 236 | 210=15 237 | 211=15 238 | 212=15 239 | 213=15 240 | 214=15 241 | 215=13 242 | 216=15 243 | 217=13 244 | 245 | [alt] 246 | Line 0= Ą˘Ł¤ĽŚ§¨Š 247 | Line 1=ŞŤŹ­ŽŻ°ą˛ł 248 | Line 2=´ľśˇ¸šşťź˝ 249 | Line 3=žżŔÁÂĂÄĹĆÇ 250 | Line 4=ČÉĘËĚÍÎĎĐŃ 251 | Line 5=ŇÓÔŐÖ×ŘŮÚŰ 252 | Line 6=ÜÝŢßŕáâăäĺ 253 | Line 7=ćçčéęëěíîď 254 | Line 8=đńňóôőö÷řů 255 | Line 9=úűüýţ˙ 256 | 257 | 0=6 258 | 1=18 259 | 2=10 260 | 3=15 261 | 4=14 262 | 5=15 263 | 6=15 264 | 7=12 265 | 8=10 266 | 9=15 267 | 10=15 268 | 11=16 269 | 12=16 270 | 13=9 271 | 14=16 272 | 15=16 273 | 16=11 274 | 17=14 275 | 18=10 276 | 19=7 277 | 20=10 278 | 21=7 279 | 22=11 280 | 23=10 281 | 24=10 282 | 25=11 283 | 26=11 284 | 27=10 285 | 28=12 286 | 29=10 287 | 30=12 288 | 31=12 289 | 32=17 290 | 33=18 291 | 34=18 292 | 35=18 293 | 36=18 294 | 37=15 295 | 38=17 296 | 39=17 297 | 40=17 298 | 41=15 299 | 42=15 300 | 43=15 301 | 44=15 302 | 45=7 303 | 46=7 304 | 47=19 305 | 48=19 306 | 49=20 307 | 50=20 308 | 51=20 309 | 52=20 310 | 53=20 311 | 54=20 312 | 55=14 313 | 56=17 314 | 57=19 315 | 58=19 316 | 59=19 317 | 60=19 318 | 61=17 319 | 62=16 320 | 63=17 321 | 64=9 322 | 65=14 323 | 66=14 324 | 67=14 325 | 68=14 326 | 69=7 327 | 70=12 328 | 71=12 329 | 72=12 330 | 73=14 331 | 74=14 332 | 75=14 333 | 76=14 334 | 77=7 335 | 78=7 336 | 79=15 337 | 80=15 338 | 81=15 339 | 82=15 340 | 83=15 341 | 84=15 342 | 85=15 343 | 86=15 344 | 87=14 345 | 88=9 346 | 89=15 347 | 90=15 348 | 91=15 349 | 92=15 350 | 93=13 351 | 94=10 352 | 95=10 353 | -------------------------------------------------------------------------------- /Fonts/regen/_regen 26px.ini: -------------------------------------------------------------------------------- 1 | [common] 2 | Baseline=30 3 | Top=10 4 | LineSpacing=32 5 | DrawExtraPixelsLeft=5 6 | DrawExtraPixelsRight=5 7 | AdvanceExtraPixels=0 8 | 9 | [main] 10 | Line 0= !"#$%&'()*+,-. 11 | Line 1=/0123456789:;<= 12 | Line 2=>?@ABCDEFGHIJKL 13 | Line 3=MNOPQRSTUVWXYZ[ 14 | Line 4=\]^_`abcdefghij 15 | Line 5=klmnopqrstuvwxy 16 | Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š 17 | Line 7=‹ŒŽ‘’“”•–—˜™š›œ 18 | Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬ 19 | Line 9=­®¯°±²³´µ¶·¸¹º» 20 | Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ 21 | Line 11=ËÌÍÎÏÐÑÒÓÔÕÖ×ØÙ 22 | Line 12=ÚÛÜÝÞßàáâãäåæçè 23 | Line 13=éêëìíîïðñòóôõö÷ 24 | Line 14=øùúûüýþÿ 25 | 26 | 0=6 27 | 1=6 28 | 2=11 29 | 3=19 30 | 4=19 31 | 5=19 32 | 6=19 33 | 7=6 34 | 8=10 35 | 9=10 36 | 10=18 37 | 11=15 38 | 12=8 39 | 13=15 40 | 14=6 41 | 15=10 42 | 16=19 43 | 17=19 44 | 18=19 45 | 19=19 46 | 20=19 47 | 21=19 48 | 22=19 49 | 23=19 50 | 24=19 51 | 25=19 52 | 26=6 53 | 27=8 54 | 28=13 55 | 29=15 56 | 30=13 57 | 31=19 58 | 32=19 59 | 33=19 60 | 34=19 61 | 35=19 62 | 36=19 63 | 37=19 64 | 38=19 65 | 39=19 66 | 40=19 67 | 41=6 68 | 42=10 69 | 43=19 70 | 44=19 71 | 45=24 72 | 46=19 73 | 47=19 74 | 48=19 75 | 49=19 76 | 50=19 77 | 51=19 78 | 52=19 79 | 53=19 80 | 54=19 81 | 55=24 82 | 56=19 83 | 57=19 84 | 58=19 85 | 59=10 86 | 60=10 87 | 61=10 88 | 62=19 89 | 63=15 90 | 64=19 91 | 65=11 92 | 66=11 93 | 67=11 94 | 68=11 95 | 69=11 96 | 70=11 97 | 71=11 98 | 72=11 99 | 73=4 100 | 74=6 101 | 75=11 102 | 76=11 103 | 77=14 104 | 78=11 105 | 79=11 106 | 80=11 107 | 81=11 108 | 82=11 109 | 83=11 110 | 84=11 111 | 85=11 112 | 86=11 113 | 87=14 114 | 88=11 115 | 89=11 116 | 90=11 117 | 91=14 118 | 92=6 119 | 93=14 120 | 94=19 121 | 95=19 122 | 96=6 123 | 97=10 124 | 98=11 125 | 99=17 126 | 100=13 127 | 101=13 128 | 102=19 129 | 103=18 130 | 104=12 131 | 105=13 132 | 106=18 133 | 107=11 134 | 108=6 135 | 109=6 136 | 110=11 137 | 111=11 138 | 112=13 139 | 113=14 140 | 114=26 141 | 115=19 142 | 116=22 143 | 117=9 144 | 118=13 145 | 119=17 146 | 120=9 147 | 121=12 148 | 122=6 149 | 123=6 150 | 124=19 151 | 125=19 152 | 126=19 153 | 127=19 154 | 128=6 155 | 129=19 156 | 130=14 157 | 131=19 158 | 132=8 159 | 133=12 160 | 134=13 161 | 135=15 162 | 136=19 163 | 137=9 164 | 138=9 165 | 139=13 166 | 140=13 167 | 141=13 168 | 142=19 169 | 143=19 170 | 144=13 171 | 145=6 172 | 146=10 173 | 147=13 174 | 148=9 175 | 149=12 176 | 150=22 177 | 151=25 178 | 152=22 179 | 153=19 180 | 154=19 181 | 155=19 182 | 156=19 183 | 157=19 184 | 158=19 185 | 159=19 186 | 160=19 187 | 161=19 188 | 162=19 189 | 163=19 190 | 164=19 191 | 165=19 192 | 166=6 193 | 167=6 194 | 168=6 195 | 169=6 196 | 170=19 197 | 171=19 198 | 172=19 199 | 173=19 200 | 174=19 201 | 175=19 202 | 176=19 203 | 177=15 204 | 178=19 205 | 179=19 206 | 180=19 207 | 181=19 208 | 182=19 209 | 183=19 210 | 184=19 211 | 185=19 212 | 186=11 213 | 187=11 214 | 188=11 215 | 189=11 216 | 190=11 217 | 191=11 218 | 192=11 219 | 193=11 220 | 194=11 221 | 195=11 222 | 196=11 223 | 197=11 224 | 198=4 225 | 199=4 226 | 200=4 227 | 201=4 228 | 202=11 229 | 203=11 230 | 204=11 231 | 205=11 232 | 206=11 233 | 207=11 234 | 208=11 235 | 209=15 236 | 210=11 237 | 211=11 238 | 212=11 239 | 213=11 240 | 214=11 241 | 215=11 242 | 216=11 243 | 217=11 244 | 245 | [alt] 246 | Line 0= Ą˘Ł¤ĽŚ§¨Š 247 | Line 1=ŞŤŹ­ŽŻ°ą˛ł 248 | Line 2=´ľśˇ¸šşťź˝ 249 | Line 3=žżŔÁÂĂÄĹĆÇ 250 | Line 4=ČÉĘËĚÍÎĎĐŃ 251 | Line 5=ŇÓÔŐÖ×ŘŮÚŰ 252 | Line 6=ÜÝŢßŕáâăäĺ 253 | Line 7=ćçčéęëěíîď 254 | Line 8=đńňóôőö÷řů 255 | Line 9=úűüýţ˙ 256 | 257 | 0=6 258 | 1=15 259 | 2=13 260 | 3=13 261 | 4=19 262 | 5=13 263 | 6=13 264 | 7=19 265 | 8=14 266 | 9=12 267 | 10=13 268 | 11=15 269 | 12=13 270 | 13=15 271 | 14=11 272 | 15=13 273 | 16=9 274 | 17=10 275 | 18=10 276 | 19=6 277 | 20=19 278 | 21=6 279 | 22=10 280 | 23=19 281 | 24=10 282 | 25=9 283 | 26=10 284 | 27=8 285 | 28=9 286 | 29=13 287 | 30=9 288 | 31=9 289 | 32=13 290 | 33=19 291 | 34=19 292 | 35=15 293 | 36=19 294 | 37=13 295 | 38=13 296 | 39=19 297 | 40=13 298 | 41=19 299 | 42=13 300 | 43=19 301 | 44=13 302 | 45=6 303 | 46=6 304 | 47=14 305 | 48=14 306 | 49=15 307 | 50=15 308 | 51=19 309 | 52=19 310 | 53=14 311 | 54=19 312 | 55=15 313 | 56=13 314 | 57=15 315 | 58=19 316 | 59=15 317 | 60=19 318 | 61=19 319 | 62=15 320 | 63=19 321 | 64=8 322 | 65=11 323 | 66=11 324 | 67=10 325 | 68=11 326 | 69=6 327 | 70=10 328 | 71=11 329 | 72=10 330 | 73=11 331 | 74=11 332 | 75=11 333 | 76=11 334 | 77=4 335 | 78=4 336 | 79=11 337 | 80=11 338 | 81=11 339 | 82=11 340 | 83=11 341 | 84=11 342 | 85=11 343 | 86=11 344 | 87=15 345 | 88=8 346 | 89=11 347 | 90=11 348 | 91=11 349 | 92=11 350 | 93=11 351 | 94=8 352 | 95=6 353 | -------------------------------------------------------------------------------- /Fonts/titillium web/_titillium web semibold 26px.ini: -------------------------------------------------------------------------------- 1 | [common] 2 | Baseline=39 3 | Top=23 4 | LineSpacing=39 5 | DrawExtraPixelsLeft=8 6 | DrawExtraPixelsRight=8 7 | AdvanceExtraPixels=0 8 | 9 | [main] 10 | Line 0= !"#$%&'()*+,-. 11 | Line 1=/0123456789:;<= 12 | Line 2=>?@ABCDEFGHIJKL 13 | Line 3=MNOPQRSTUVWXYZ[ 14 | Line 4=\]^_`abcdefghij 15 | Line 5=klmnopqrstuvwxy 16 | Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š 17 | Line 7=‹ŒŽ‘’“”•–—˜™š›œ 18 | Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬ 19 | Line 9=­®¯°±²³´µ¶·¸¹º» 20 | Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ 21 | Line 11=ËÌÍÎÏÐÑÒÓÔÕÖ×ØÙ 22 | Line 12=ÚÛÜÝÞßàáâãäåæçè 23 | Line 13=éêëìíîïðñòóôõö÷ 24 | Line 14=øùúûüýþÿ 25 | 26 | 0=6 27 | 1=7 28 | 2=10 29 | 3=15 30 | 4=15 31 | 5=15 32 | 6=18 33 | 7=6 34 | 8=8 35 | 9=8 36 | 10=11 37 | 11=15 38 | 12=6 39 | 13=11 40 | 14=6 41 | 15=12 42 | 16=15 43 | 17=15 44 | 18=15 45 | 19=15 46 | 20=15 47 | 21=15 48 | 22=15 49 | 23=15 50 | 24=15 51 | 25=15 52 | 26=6 53 | 27=7 54 | 28=15 55 | 29=15 56 | 30=15 57 | 31=11 58 | 32=25 59 | 33=16 60 | 34=16 61 | 35=14 62 | 36=17 63 | 37=14 64 | 38=14 65 | 39=16 66 | 40=18 67 | 41=7 68 | 42=8 69 | 43=15 70 | 44=12 71 | 45=22 72 | 46=18 73 | 47=17 74 | 48=15 75 | 49=17 76 | 50=16 77 | 51=14 78 | 52=14 79 | 53=17 80 | 54=15 81 | 55=24 82 | 56=15 83 | 57=14 84 | 58=14 85 | 59=9 86 | 60=12 87 | 61=9 88 | 62=15 89 | 63=16 90 | 64=7 91 | 65=13 92 | 66=14 93 | 67=11 94 | 68=14 95 | 69=13 96 | 70=9 97 | 71=14 98 | 72=14 99 | 73=6 100 | 74=6 101 | 75=13 102 | 76=7 103 | 77=22 104 | 78=14 105 | 79=14 106 | 80=14 107 | 81=14 108 | 82=9 109 | 83=12 110 | 84=9 111 | 85=14 112 | 86=13 113 | 87=20 114 | 88=12 115 | 89=13 116 | 90=12 117 | 91=9 118 | 92=7 119 | 93=9 120 | 94=15 121 | 95=15 122 | 96=6 123 | 97=15 124 | 98=10 125 | 99=19 126 | 100=12 127 | 101=13 128 | 102=7 129 | 103=22 130 | 104=14 131 | 105=8 132 | 106=24 133 | 107=14 134 | 108=6 135 | 109=6 136 | 110=11 137 | 111=11 138 | 112=12 139 | 113=16 140 | 114=29 141 | 115=7 142 | 116=17 143 | 117=12 144 | 118=8 145 | 119=22 146 | 120=12 147 | 121=14 148 | 122=6 149 | 123=6 150 | 124=15 151 | 125=15 152 | 126=15 153 | 127=15 154 | 128=7 155 | 129=13 156 | 130=7 157 | 131=17 158 | 132=10 159 | 133=15 160 | 134=15 161 | 135=7 162 | 136=17 163 | 137=7 164 | 138=15 165 | 139=15 166 | 140=7 167 | 141=7 168 | 142=7 169 | 143=15 170 | 144=15 171 | 145=6 172 | 146=7 173 | 147=7 174 | 148=10 175 | 149=15 176 | 150=14 177 | 151=14 178 | 152=14 179 | 153=11 180 | 154=16 181 | 155=16 182 | 156=16 183 | 157=16 184 | 158=16 185 | 159=16 186 | 160=23 187 | 161=14 188 | 162=14 189 | 163=14 190 | 164=14 191 | 165=14 192 | 166=7 193 | 167=7 194 | 168=7 195 | 169=7 196 | 170=17 197 | 171=18 198 | 172=17 199 | 173=17 200 | 174=17 201 | 175=17 202 | 176=17 203 | 177=15 204 | 178=17 205 | 179=17 206 | 180=17 207 | 181=17 208 | 182=17 209 | 183=14 210 | 184=16 211 | 185=15 212 | 186=13 213 | 187=13 214 | 188=13 215 | 189=13 216 | 190=13 217 | 191=13 218 | 192=21 219 | 193=11 220 | 194=13 221 | 195=13 222 | 196=13 223 | 197=13 224 | 198=6 225 | 199=6 226 | 200=6 227 | 201=6 228 | 202=15 229 | 203=14 230 | 204=14 231 | 205=14 232 | 206=14 233 | 207=14 234 | 208=14 235 | 209=15 236 | 210=14 237 | 211=14 238 | 212=14 239 | 213=14 240 | 214=14 241 | 215=13 242 | 216=14 243 | 217=13 244 | 245 | [alt] 246 | Line 0= Ą˘Ł¤ĽŚ§¨Š 247 | Line 1=ŞŤŹ­ŽŻ°ą˛ł 248 | Line 2=´ľśˇ¸šşťź˝ 249 | Line 3=žżŔÁÂĂÄĹĆÇ 250 | Line 4=ČÉĘËĚÍÎĎĐŃ 251 | Line 5=ŇÓÔŐÖ×ŘŮÚŰ 252 | Line 6=ÜÝŢßŕáâăäĺ 253 | Line 7=ćçčéęëěíîď 254 | Line 8=đńňóôőö÷řů 255 | Line 9=úűüýţ˙ 256 | 257 | 0=6 258 | 1=16 259 | 2=7 260 | 3=13 261 | 4=15 262 | 5=13 263 | 6=14 264 | 7=13 265 | 8=7 266 | 9=14 267 | 10=14 268 | 11=14 269 | 12=14 270 | 13=7 271 | 14=14 272 | 15=14 273 | 16=15 274 | 17=13 275 | 18=12 276 | 19=9 277 | 20=7 278 | 21=9 279 | 22=12 280 | 23=7 281 | 24=7 282 | 25=12 283 | 26=12 284 | 27=12 285 | 28=12 286 | 29=7 287 | 30=12 288 | 31=12 289 | 32=16 290 | 33=16 291 | 34=16 292 | 35=16 293 | 36=16 294 | 37=12 295 | 38=14 296 | 39=14 297 | 40=14 298 | 41=14 299 | 42=14 300 | 43=14 301 | 44=14 302 | 45=7 303 | 46=7 304 | 47=17 305 | 48=17 306 | 49=18 307 | 50=18 308 | 51=17 309 | 52=17 310 | 53=17 311 | 54=17 312 | 55=15 313 | 56=16 314 | 57=17 315 | 58=17 316 | 59=17 317 | 60=17 318 | 61=14 319 | 62=0 320 | 63=15 321 | 64=9 322 | 65=13 323 | 66=13 324 | 67=13 325 | 68=13 326 | 69=7 327 | 70=11 328 | 71=11 329 | 72=11 330 | 73=13 331 | 74=13 332 | 75=13 333 | 76=13 334 | 77=6 335 | 78=6 336 | 79=16 337 | 80=14 338 | 81=14 339 | 82=14 340 | 83=14 341 | 84=14 342 | 85=14 343 | 86=14 344 | 87=15 345 | 88=9 346 | 89=14 347 | 90=14 348 | 91=14 349 | 92=14 350 | 93=13 351 | 94=9 352 | 95=7 353 | -------------------------------------------------------------------------------- /Fonts/regen/_regen-strong 26px.ini: -------------------------------------------------------------------------------- 1 | [common] 2 | Baseline=30 3 | Top=10 4 | LineSpacing=32 5 | DrawExtraPixelsLeft=5 6 | DrawExtraPixelsRight=5 7 | AdvanceExtraPixels=0 8 | 9 | [main] 10 | Line 0= !"#$%&'()*+,-. 11 | Line 1=/0123456789:;<= 12 | Line 2=>?@ABCDEFGHIJKL 13 | Line 3=MNOPQRSTUVWXYZ[ 14 | Line 4=\]^_`abcdefghij 15 | Line 5=klmnopqrstuvwxy 16 | Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š 17 | Line 7=‹ŒŽ‘’“”•–—˜™š›œ 18 | Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬ 19 | Line 9=­®¯°±²³´µ¶·¸¹º» 20 | Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ 21 | Line 11=ËÌÍÎÏÐÑÒÓÔÕÖ×ØÙ 22 | Line 12=ÚÛÜÝÞßàáâãäåæçè 23 | Line 13=éêëìíîïðñòóôõö÷ 24 | Line 14=øùúûüýþÿ 25 | 26 | 0=6 27 | 1=6 28 | 2=11 29 | 3=19 30 | 4=19 31 | 5=19 32 | 6=19 33 | 7=6 34 | 8=10 35 | 9=10 36 | 10=18 37 | 11=15 38 | 12=8 39 | 13=15 40 | 14=6 41 | 15=10 42 | 16=19 43 | 17=19 44 | 18=19 45 | 19=19 46 | 20=19 47 | 21=19 48 | 22=19 49 | 23=19 50 | 24=19 51 | 25=19 52 | 26=6 53 | 27=8 54 | 28=13 55 | 29=15 56 | 30=13 57 | 31=19 58 | 32=19 59 | 33=19 60 | 34=19 61 | 35=19 62 | 36=19 63 | 37=19 64 | 38=19 65 | 39=19 66 | 40=19 67 | 41=6 68 | 42=10 69 | 43=19 70 | 44=19 71 | 45=24 72 | 46=19 73 | 47=19 74 | 48=19 75 | 49=19 76 | 50=19 77 | 51=19 78 | 52=19 79 | 53=19 80 | 54=19 81 | 55=24 82 | 56=19 83 | 57=19 84 | 58=19 85 | 59=10 86 | 60=10 87 | 61=10 88 | 62=19 89 | 63=15 90 | 64=19 91 | 65=11 92 | 66=11 93 | 67=11 94 | 68=11 95 | 69=11 96 | 70=11 97 | 71=11 98 | 72=11 99 | 73=4 100 | 74=6 101 | 75=11 102 | 76=11 103 | 77=14 104 | 78=11 105 | 79=11 106 | 80=11 107 | 81=11 108 | 82=11 109 | 83=11 110 | 84=11 111 | 85=11 112 | 86=11 113 | 87=14 114 | 88=11 115 | 89=11 116 | 90=11 117 | 91=14 118 | 92=6 119 | 93=14 120 | 94=19 121 | 95=19 122 | 96=6 123 | 97=10 124 | 98=11 125 | 99=17 126 | 100=13 127 | 101=13 128 | 102=19 129 | 103=18 130 | 104=12 131 | 105=13 132 | 106=18 133 | 107=11 134 | 108=6 135 | 109=6 136 | 110=11 137 | 111=11 138 | 112=13 139 | 113=14 140 | 114=26 141 | 115=19 142 | 116=22 143 | 117=9 144 | 118=13 145 | 119=17 146 | 120=9 147 | 121=12 148 | 122=6 149 | 123=6 150 | 124=19 151 | 125=19 152 | 126=19 153 | 127=19 154 | 128=6 155 | 129=19 156 | 130=14 157 | 131=19 158 | 132=8 159 | 133=12 160 | 134=13 161 | 135=15 162 | 136=19 163 | 137=9 164 | 138=9 165 | 139=13 166 | 140=13 167 | 141=13 168 | 142=19 169 | 143=19 170 | 144=13 171 | 145=6 172 | 146=10 173 | 147=13 174 | 148=9 175 | 149=12 176 | 150=22 177 | 151=25 178 | 152=22 179 | 153=19 180 | 154=19 181 | 155=19 182 | 156=19 183 | 157=19 184 | 158=19 185 | 159=19 186 | 160=19 187 | 161=19 188 | 162=19 189 | 163=19 190 | 164=19 191 | 165=19 192 | 166=6 193 | 167=6 194 | 168=6 195 | 169=6 196 | 170=19 197 | 171=19 198 | 172=19 199 | 173=19 200 | 174=19 201 | 175=19 202 | 176=19 203 | 177=15 204 | 178=19 205 | 179=19 206 | 180=19 207 | 181=19 208 | 182=19 209 | 183=19 210 | 184=19 211 | 185=19 212 | 186=11 213 | 187=11 214 | 188=11 215 | 189=11 216 | 190=11 217 | 191=11 218 | 192=11 219 | 193=11 220 | 194=11 221 | 195=11 222 | 196=11 223 | 197=11 224 | 198=4 225 | 199=4 226 | 200=4 227 | 201=4 228 | 202=11 229 | 203=11 230 | 204=11 231 | 205=11 232 | 206=11 233 | 207=11 234 | 208=11 235 | 209=15 236 | 210=11 237 | 211=11 238 | 212=11 239 | 213=11 240 | 214=11 241 | 215=11 242 | 216=11 243 | 217=11 244 | 245 | [alt] 246 | Line 0= Ą˘Ł¤ĽŚ§¨Š 247 | Line 1=ŞŤŹ­ŽŻ°ą˛ł 248 | Line 2=´ľśˇ¸šşťź˝ 249 | Line 3=žżŔÁÂĂÄĹĆÇ 250 | Line 4=ČÉĘËĚÍÎĎĐŃ 251 | Line 5=ŇÓÔŐÖ×ŘŮÚŰ 252 | Line 6=ÜÝŢßŕáâăäĺ 253 | Line 7=ćçčéęëěíîď 254 | Line 8=đńňóôőö÷řů 255 | Line 9=úűüýţ˙ 256 | 257 | 0=6 258 | 1=15 259 | 2=13 260 | 3=13 261 | 4=19 262 | 5=13 263 | 6=13 264 | 7=19 265 | 8=14 266 | 9=12 267 | 10=13 268 | 11=15 269 | 12=13 270 | 13=15 271 | 14=11 272 | 15=13 273 | 16=9 274 | 17=10 275 | 18=10 276 | 19=6 277 | 20=19 278 | 21=6 279 | 22=10 280 | 23=19 281 | 24=10 282 | 25=9 283 | 26=10 284 | 27=8 285 | 28=9 286 | 29=13 287 | 30=9 288 | 31=9 289 | 32=13 290 | 33=19 291 | 34=19 292 | 35=15 293 | 36=19 294 | 37=13 295 | 38=13 296 | 39=19 297 | 40=13 298 | 41=19 299 | 42=13 300 | 43=19 301 | 44=13 302 | 45=6 303 | 46=6 304 | 47=14 305 | 48=14 306 | 49=15 307 | 50=15 308 | 51=19 309 | 52=19 310 | 53=14 311 | 54=19 312 | 55=15 313 | 56=13 314 | 57=15 315 | 58=19 316 | 59=15 317 | 60=19 318 | 61=19 319 | 62=15 320 | 63=19 321 | 64=8 322 | 65=11 323 | 66=11 324 | 67=10 325 | 68=11 326 | 69=6 327 | 70=10 328 | 71=11 329 | 72=10 330 | 73=11 331 | 74=11 332 | 75=11 333 | 76=11 334 | 77=4 335 | 78=4 336 | 79=11 337 | 80=11 338 | 81=11 339 | 82=11 340 | 83=11 341 | 84=11 342 | 85=11 343 | 86=11 344 | 87=15 345 | 88=8 346 | 89=11 347 | 90=11 348 | 91=11 349 | 92=11 350 | 93=11 351 | 94=8 352 | 95=6 353 | -------------------------------------------------------------------------------- /Fonts/regen/_regen 40px.ini: -------------------------------------------------------------------------------- 1 | [common] 2 | Baseline=45 3 | Top=15 4 | LineSpacing=50 5 | DrawExtraPixelsLeft=10 6 | DrawExtraPixelsRight=0 7 | AdvanceExtraPixels=0 8 | 9 | [main] 10 | Line 0= !"#$%&'()*+,-. 11 | Line 1=/0123456789:;<= 12 | Line 2=>?@ABCDEFGHIJKL 13 | Line 3=MNOPQRSTUVWXYZ[ 14 | Line 4=\]^_`abcdefghij 15 | Line 5=klmnopqrstuvwxy 16 | Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š 17 | Line 7=‹ŒŽ‘’“”•–—˜™š›œ 18 | Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬ 19 | Line 9=­®¯°±²³´µ¶·¸¹º» 20 | Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ 21 | Line 11=ËÌÍÎÏÐÑÒÓÔÕÖ×ØÙ 22 | Line 12=ÚÛÜÝÞßàáâãäåæçè 23 | Line 13=éêëìíîïðñòóôõö÷ 24 | Line 14=øùúûüýþÿ 25 | 26 | 0=10 27 | 1=10 28 | 2=18 29 | 3=29 30 | 4=29 31 | 5=29 32 | 6=29 33 | 7=10 34 | 8=16 35 | 9=16 36 | 10=27 37 | 11=23 38 | 12=12 39 | 13=18 40 | 14=10 41 | 15=16 42 | 16=29 43 | 17=29 44 | 18=29 45 | 19=29 46 | 20=29 47 | 21=29 48 | 22=29 49 | 23=29 50 | 24=29 51 | 25=29 52 | 26=10 53 | 27=12 54 | 28=21 55 | 29=23 56 | 30=21 57 | 31=29 58 | 32=29 59 | 33=29 60 | 34=29 61 | 35=29 62 | 36=29 63 | 37=29 64 | 38=29 65 | 39=29 66 | 40=29 67 | 41=10 68 | 42=16 69 | 43=29 70 | 44=29 71 | 45=37 72 | 46=29 73 | 47=29 74 | 48=29 75 | 49=29 76 | 50=29 77 | 51=29 78 | 52=29 79 | 53=29 80 | 54=29 81 | 55=37 82 | 56=29 83 | 57=29 84 | 58=29 85 | 59=16 86 | 60=16 87 | 61=16 88 | 62=29 89 | 63=23 90 | 64=29 91 | 65=18 92 | 66=18 93 | 67=18 94 | 68=18 95 | 69=18 96 | 70=18 97 | 71=18 98 | 72=18 99 | 73=6 100 | 74=9 101 | 75=18 102 | 76=18 103 | 77=22 104 | 78=18 105 | 79=18 106 | 80=18 107 | 81=18 108 | 82=18 109 | 83=18 110 | 84=18 111 | 85=18 112 | 86=18 113 | 87=22 114 | 88=18 115 | 89=18 116 | 90=18 117 | 91=21 118 | 92=10 119 | 93=21 120 | 94=29 121 | 95=29 122 | 96=10 123 | 97=12 124 | 98=18 125 | 99=25 126 | 100=20 127 | 101=20 128 | 102=29 129 | 103=12 130 | 104=12 131 | 105=21 132 | 106=18 133 | 107=11 134 | 108=10 135 | 109=10 136 | 110=18 137 | 111=18 138 | 112=20 139 | 113=22 140 | 114=40 141 | 115=29 142 | 116=34 143 | 117=9 144 | 118=21 145 | 119=17 146 | 120=9 147 | 121=12 148 | 122=10 149 | 123=10 150 | 124=29 151 | 125=29 152 | 126=29 153 | 127=29 154 | 128=10 155 | 129=29 156 | 130=21 157 | 131=29 158 | 132=13 159 | 133=18 160 | 134=20 161 | 135=23 162 | 136=29 163 | 137=13 164 | 138=13 165 | 139=20 166 | 140=20 167 | 141=20 168 | 142=29 169 | 143=29 170 | 144=20 171 | 145=10 172 | 146=16 173 | 147=20 174 | 148=14 175 | 149=18 176 | 150=33 177 | 151=38 178 | 152=33 179 | 153=29 180 | 154=29 181 | 155=29 182 | 156=29 183 | 157=29 184 | 158=29 185 | 159=29 186 | 160=29 187 | 161=29 188 | 162=29 189 | 163=29 190 | 164=29 191 | 165=29 192 | 166=10 193 | 167=10 194 | 168=10 195 | 169=10 196 | 170=29 197 | 171=29 198 | 172=29 199 | 173=29 200 | 174=29 201 | 175=29 202 | 176=29 203 | 177=23 204 | 178=29 205 | 179=29 206 | 180=29 207 | 181=29 208 | 182=29 209 | 183=29 210 | 184=29 211 | 185=29 212 | 186=18 213 | 187=18 214 | 188=18 215 | 189=18 216 | 190=18 217 | 191=18 218 | 192=18 219 | 193=18 220 | 194=18 221 | 195=18 222 | 196=18 223 | 197=18 224 | 198=6 225 | 199=6 226 | 200=6 227 | 201=6 228 | 202=18 229 | 203=18 230 | 204=18 231 | 205=18 232 | 206=18 233 | 207=18 234 | 208=18 235 | 209=23 236 | 210=18 237 | 211=18 238 | 212=18 239 | 213=18 240 | 214=18 241 | 215=18 242 | 216=18 243 | 217=18 244 | 245 | [alt] 246 | Line 0= Ą˘Ł¤ĽŚ§¨Š 247 | Line 1=ŞŤŹ­ŽŻ°ą˛ł 248 | Line 2=´ľśˇ¸šşťź˝ 249 | Line 3=žżŔÁÂĂÄĹĆÇ 250 | Line 4=ČÉĘËĚÍÎĎĐŃ 251 | Line 5=ŇÓÔŐÖ×ŘŮÚŰ 252 | Line 6=ÜÝŢßŕáâăäĺ 253 | Line 7=ćçčéęëěíîď 254 | Line 8=đńňóôőö÷řů 255 | Line 9=úűüýţ˙ 256 | 257 | 0=10 258 | 1=15 259 | 2=20 260 | 3=13 261 | 4=29 262 | 5=13 263 | 6=13 264 | 7=29 265 | 8=21 266 | 9=12 267 | 10=13 268 | 11=15 269 | 12=13 270 | 13=23 271 | 14=11 272 | 15=13 273 | 16=13 274 | 17=10 275 | 18=16 276 | 19=6 277 | 20=29 278 | 21=6 279 | 22=10 280 | 23=29 281 | 24=16 282 | 25=9 283 | 26=10 284 | 27=8 285 | 28=9 286 | 29=20 287 | 30=9 288 | 31=9 289 | 32=13 290 | 33=29 291 | 34=29 292 | 35=15 293 | 36=29 294 | 37=13 295 | 38=13 296 | 39=29 297 | 40=13 298 | 41=29 299 | 42=13 300 | 43=29 301 | 44=13 302 | 45=10 303 | 46=10 304 | 47=14 305 | 48=14 306 | 49=15 307 | 50=15 308 | 51=29 309 | 52=29 310 | 53=14 311 | 54=29 312 | 55=23 313 | 56=13 314 | 57=15 315 | 58=29 316 | 59=15 317 | 60=29 318 | 61=29 319 | 62=15 320 | 63=29 321 | 64=8 322 | 65=18 323 | 66=18 324 | 67=10 325 | 68=18 326 | 69=6 327 | 70=10 328 | 71=18 329 | 72=10 330 | 73=18 331 | 74=11 332 | 75=18 333 | 76=11 334 | 77=6 335 | 78=6 336 | 79=11 337 | 80=11 338 | 81=11 339 | 82=11 340 | 83=18 341 | 84=18 342 | 85=11 343 | 86=18 344 | 87=23 345 | 88=8 346 | 89=11 347 | 90=18 348 | 91=11 349 | 92=18 350 | 93=18 351 | 94=8 352 | 95=10 353 | -------------------------------------------------------------------------------- /Fonts/roboto/_roboto bk 32px.ini: -------------------------------------------------------------------------------- 1 | [common] 2 | Baseline=40 3 | Top=16 4 | LineSpacing=38 5 | DrawExtraPixelsLeft=2 6 | DrawExtraPixelsRight=0 7 | AdvanceExtraPixels=0 8 | 9 | [main] 10 | Line 0= !"#$%&'()*+,-. 11 | Line 1=/0123456789:;<= 12 | Line 2=>?@ABCDEFGHIJKL 13 | Line 3=MNOPQRSTUVWXYZ[ 14 | Line 4=\]^_`abcdefghij 15 | Line 5=klmnopqrstuvwxy 16 | Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š 17 | Line 7=‹ŒŽ‘’“”•–—˜™š›œ 18 | Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬ 19 | Line 9=­®¯°±²³´µ¶·¸¹º» 20 | Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ 21 | Line 11=ËÌÍÎÏÐÑÒÓÔÕÖ×ØÙ 22 | Line 12=ÚÛÜÝÞßàáâãäåæçè 23 | Line 13=éêëìíîïðñòóôõö÷ 24 | Line 14=øùúûüýþÿ 25 | 26 | 0=8 27 | 1=9 28 | 2=14 29 | 3=19 30 | 4=19 31 | 5=24 32 | 6=22 33 | 7=7 34 | 8=11 35 | 9=11 36 | 10=13 37 | 11=17 38 | 12=9 39 | 13=14 40 | 14=10 41 | 15=13 42 | 16=19 43 | 17=19 44 | 18=19 45 | 19=19 46 | 20=19 47 | 21=19 48 | 22=19 49 | 23=19 50 | 24=19 51 | 25=19 52 | 26=10 53 | 27=9 54 | 28=16 55 | 29=19 56 | 30=16 57 | 31=16 58 | 32=28 59 | 33=20 60 | 34=20 61 | 35=20 62 | 36=21 63 | 37=18 64 | 38=18 65 | 39=21 66 | 40=23 67 | 41=10 68 | 42=18 69 | 43=20 70 | 44=18 71 | 45=28 72 | 46=23 73 | 47=22 74 | 48=20 75 | 49=23 76 | 50=20 77 | 51=20 78 | 52=18 79 | 53=22 80 | 54=20 81 | 55=29 82 | 56=20 83 | 57=20 84 | 58=18 85 | 59=9 86 | 60=14 87 | 61=9 88 | 62=14 89 | 63=14 90 | 64=11 91 | 65=17 92 | 66=18 93 | 67=16 94 | 68=18 95 | 69=17 96 | 70=11 97 | 71=18 98 | 72=18 99 | 73=9 100 | 74=9 101 | 75=17 102 | 76=9 103 | 77=28 104 | 78=18 105 | 79=18 106 | 80=18 107 | 81=18 108 | 82=11 109 | 83=16 110 | 84=11 111 | 85=18 112 | 86=16 113 | 87=23 114 | 88=16 115 | 89=16 116 | 90=16 117 | 91=10 118 | 92=8 119 | 93=10 120 | 94=20 121 | 95=18 122 | 96=10 123 | 97=12 124 | 98=15 125 | 99=25 126 | 100=17 127 | 101=19 128 | 102=16 129 | 103=31 130 | 104=20 131 | 105=10 132 | 106=31 133 | 107=18 134 | 108=9 135 | 109=9 136 | 110=14 137 | 111=15 138 | 112=12 139 | 113=22 140 | 114=26 141 | 115=15 142 | 116=20 143 | 117=16 144 | 118=10 145 | 119=29 146 | 120=16 147 | 121=20 148 | 122=8 149 | 123=10 150 | 124=19 151 | 125=19 152 | 126=22 153 | 127=20 154 | 128=8 155 | 129=20 156 | 130=18 157 | 131=25 158 | 132=14 159 | 133=16 160 | 134=18 161 | 135=14 162 | 136=25 163 | 137=17 164 | 138=13 165 | 139=17 166 | 140=13 167 | 141=13 168 | 142=12 169 | 143=21 170 | 144=17 171 | 145=10 172 | 146=9 173 | 147=9 174 | 148=15 175 | 149=16 176 | 150=23 177 | 151=23 178 | 152=26 179 | 153=16 180 | 154=20 181 | 155=20 182 | 156=20 183 | 157=20 184 | 158=20 185 | 159=20 186 | 160=30 187 | 161=20 188 | 162=18 189 | 163=18 190 | 164=18 191 | 165=18 192 | 166=10 193 | 167=10 194 | 168=10 195 | 169=10 196 | 170=21 197 | 171=23 198 | 172=22 199 | 173=22 200 | 174=22 201 | 175=22 202 | 176=22 203 | 177=17 204 | 178=22 205 | 179=22 206 | 180=22 207 | 181=22 208 | 182=22 209 | 183=20 210 | 184=20 211 | 185=21 212 | 186=17 213 | 187=17 214 | 188=17 215 | 189=17 216 | 190=17 217 | 191=17 218 | 192=28 219 | 193=16 220 | 194=17 221 | 195=17 222 | 196=17 223 | 197=17 224 | 198=9 225 | 199=9 226 | 200=9 227 | 201=9 228 | 202=19 229 | 203=18 230 | 204=18 231 | 205=18 232 | 206=18 233 | 207=18 234 | 208=18 235 | 209=18 236 | 210=18 237 | 211=18 238 | 212=18 239 | 213=18 240 | 214=18 241 | 215=16 242 | 216=18 243 | 217=16 244 | 245 | [alt] 246 | Line 0= Ą˘Ł¤ĽŚ§¨Š 247 | Line 1=ŞŤŹ­ŽŻ°ą˛ł 248 | Line 2=´ľśˇ¸šşťź˝ 249 | Line 3=žżŔÁÂĂÄĹĆÇ 250 | Line 4=ČÉĘËĚÍÎĎĐŃ 251 | Line 5=ŇÓÔŐÖ×ŘŮÚŰ 252 | Line 6=ÜÝŢßŕáâăäĺ 253 | Line 7=ćçčéęëěíîď 254 | Line 8=đńňóôőö÷řů 255 | Line 9=úűüýţ˙ 256 | 257 | 0=8 258 | 1=20 259 | 2=14 260 | 3=16 261 | 4=22 262 | 5=18 263 | 6=20 264 | 7=20 265 | 8=18 266 | 9=20 267 | 10=20 268 | 11=18 269 | 12=18 270 | 13=14 271 | 14=18 272 | 15=18 273 | 16=13 274 | 17=17 275 | 18=10 276 | 19=10 277 | 20=12 278 | 21=9 279 | 22=16 280 | 23=15 281 | 24=9 282 | 25=16 283 | 26=16 284 | 27=11 285 | 28=16 286 | 29=15 287 | 30=16 288 | 31=16 289 | 32=20 290 | 33=20 291 | 34=20 292 | 35=20 293 | 36=20 294 | 37=18 295 | 38=20 296 | 39=20 297 | 40=20 298 | 41=18 299 | 42=18 300 | 43=18 301 | 44=18 302 | 45=10 303 | 46=10 304 | 47=21 305 | 48=21 306 | 49=23 307 | 50=23 308 | 51=22 309 | 52=22 310 | 53=22 311 | 54=22 312 | 55=17 313 | 56=20 314 | 57=22 315 | 58=22 316 | 59=22 317 | 60=22 318 | 61=20 319 | 62=18 320 | 63=21 321 | 64=11 322 | 65=17 323 | 66=17 324 | 67=17 325 | 68=17 326 | 69=9 327 | 70=16 328 | 71=16 329 | 72=16 330 | 73=17 331 | 74=17 332 | 75=17 333 | 76=17 334 | 77=9 335 | 78=9 336 | 79=18 337 | 80=18 338 | 81=18 339 | 82=18 340 | 83=18 341 | 84=18 342 | 85=18 343 | 86=18 344 | 87=18 345 | 88=11 346 | 89=18 347 | 90=18 348 | 91=18 349 | 92=18 350 | 93=16 351 | 94=11 352 | 95=10 353 | -------------------------------------------------------------------------------- /Fonts/regen/_regen 80px.ini: -------------------------------------------------------------------------------- 1 | [common] 2 | Baseline=69 3 | Top=25 4 | LineSpacing=100 5 | DrawExtraPixelsLeft=20 6 | DrawExtraPixelsRight=0 7 | AdvanceExtraPixels=0 8 | 9 | [main] 10 | Line 0= !"#$%&'()*+,-. 11 | Line 1=/0123456789:;<= 12 | Line 2=>?@ABCDEFGHIJKL 13 | Line 3=MNOPQRSTUVWXYZ[ 14 | Line 4=\]^_`abcdefghij 15 | Line 5=klmnopqrstuvwxy 16 | Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š 17 | Line 7=‹ŒŽ‘’“”•–—˜™š›œ 18 | Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬ 19 | Line 9=­®¯°±²³´µ¶·¸¹º» 20 | Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ 21 | Line 11=ËÌÍÎÏÐÑÒÓÔÕÖ×ØÙ 22 | Line 12=ÚÛÜÝÞßàáâãäåæçè 23 | Line 13=éêëìíîïðñòóôõö÷ 24 | Line 14=øùúûüýþÿ 25 | 26 | 0=20 27 | 1=20 28 | 2=35 29 | 3=59 30 | 4=59 31 | 5=59 32 | 6=59 33 | 7=20 34 | 8=31 35 | 9=31 36 | 10=55 37 | 11=47 38 | 12=23 39 | 13=47 40 | 14=20 41 | 15=31 42 | 16=59 43 | 17=25 44 | 18=59 45 | 19=59 46 | 20=59 47 | 21=59 48 | 22=59 49 | 23=59 50 | 24=59 51 | 25=59 52 | 26=20 53 | 27=23 54 | 28=41 55 | 29=47 56 | 30=41 57 | 31=59 58 | 32=59 59 | 33=59 60 | 34=59 61 | 35=59 62 | 36=59 63 | 37=59 64 | 38=59 65 | 39=59 66 | 40=59 67 | 41=20 68 | 42=31 69 | 43=59 70 | 44=59 71 | 45=74 72 | 46=59 73 | 47=59 74 | 48=59 75 | 49=59 76 | 50=59 77 | 51=59 78 | 52=59 79 | 53=59 80 | 54=59 81 | 55=74 82 | 56=59 83 | 57=59 84 | 58=59 85 | 59=31 86 | 60=31 87 | 61=31 88 | 62=59 89 | 63=47 90 | 64=59 91 | 65=35 92 | 66=35 93 | 67=35 94 | 68=35 95 | 69=35 96 | 70=35 97 | 71=35 98 | 72=35 99 | 73=12 100 | 74=19 101 | 75=35 102 | 76=35 103 | 77=45 104 | 78=35 105 | 79=35 106 | 80=35 107 | 81=35 108 | 82=35 109 | 83=35 110 | 84=35 111 | 85=35 112 | 86=35 113 | 87=45 114 | 88=35 115 | 89=35 116 | 90=35 117 | 91=43 118 | 92=20 119 | 93=43 120 | 94=59 121 | 95=59 122 | 96=20 123 | 97=10 124 | 98=35 125 | 99=51 126 | 100=40 127 | 101=40 128 | 102=59 129 | 103=18 130 | 104=12 131 | 105=41 132 | 106=18 133 | 107=11 134 | 108=20 135 | 109=20 136 | 110=35 137 | 111=35 138 | 112=40 139 | 113=43 140 | 114=80 141 | 115=59 142 | 116=68 143 | 117=9 144 | 118=41 145 | 119=17 146 | 120=9 147 | 121=12 148 | 122=20 149 | 123=20 150 | 124=59 151 | 125=59 152 | 126=59 153 | 127=59 154 | 128=20 155 | 129=59 156 | 130=43 157 | 131=59 158 | 132=25 159 | 133=37 160 | 134=40 161 | 135=47 162 | 136=59 163 | 137=26 164 | 138=26 165 | 139=40 166 | 140=40 167 | 141=40 168 | 142=59 169 | 143=59 170 | 144=40 171 | 145=20 172 | 146=31 173 | 147=40 174 | 148=28 175 | 149=37 176 | 150=67 177 | 151=77 178 | 152=67 179 | 153=59 180 | 154=59 181 | 155=59 182 | 156=59 183 | 157=59 184 | 158=59 185 | 159=59 186 | 160=59 187 | 161=59 188 | 162=59 189 | 163=59 190 | 164=59 191 | 165=59 192 | 166=20 193 | 167=20 194 | 168=20 195 | 169=20 196 | 170=59 197 | 171=59 198 | 172=59 199 | 173=59 200 | 174=59 201 | 175=59 202 | 176=59 203 | 177=47 204 | 178=59 205 | 179=59 206 | 180=59 207 | 181=59 208 | 182=59 209 | 183=59 210 | 184=59 211 | 185=59 212 | 186=35 213 | 187=35 214 | 188=35 215 | 189=35 216 | 190=35 217 | 191=35 218 | 192=35 219 | 193=35 220 | 194=35 221 | 195=35 222 | 196=35 223 | 197=35 224 | 198=12 225 | 199=12 226 | 200=12 227 | 201=12 228 | 202=35 229 | 203=35 230 | 204=35 231 | 205=35 232 | 206=35 233 | 207=35 234 | 208=35 235 | 209=47 236 | 210=35 237 | 211=35 238 | 212=35 239 | 213=35 240 | 214=35 241 | 215=35 242 | 216=35 243 | 217=35 244 | 245 | [alt] 246 | Line 0= Ą˘Ł¤ĽŚ§¨Š 247 | Line 1=ŞŤŹ­ŽŻ°ą˛ł 248 | Line 2=´ľśˇ¸šşťź˝ 249 | Line 3=žżŔÁÂĂÄĹĆÇ 250 | Line 4=ČÉĘËĚÍÎĎĐŃ 251 | Line 5=ŇÓÔŐÖ×ŘŮÚŰ 252 | Line 6=ÜÝŢßŕáâăäĺ 253 | Line 7=ćçčéęëěíîď 254 | Line 8=đńňóôőö÷řů 255 | Line 9=úűüýţ˙ 256 | 257 | 0=20 258 | 1=15 259 | 2=40 260 | 3=13 261 | 4=59 262 | 5=13 263 | 6=13 264 | 7=59 265 | 8=43 266 | 9=12 267 | 10=13 268 | 11=15 269 | 12=13 270 | 13=47 271 | 14=11 272 | 15=13 273 | 16=26 274 | 17=10 275 | 18=31 276 | 19=6 277 | 20=59 278 | 21=6 279 | 22=10 280 | 23=59 281 | 24=31 282 | 25=9 283 | 26=10 284 | 27=8 285 | 28=9 286 | 29=40 287 | 30=9 288 | 31=9 289 | 32=13 290 | 33=59 291 | 34=59 292 | 35=15 293 | 36=59 294 | 37=13 295 | 38=13 296 | 39=59 297 | 40=13 298 | 41=59 299 | 42=13 300 | 43=59 301 | 44=13 302 | 45=20 303 | 46=20 304 | 47=14 305 | 48=14 306 | 49=15 307 | 50=15 308 | 51=59 309 | 52=59 310 | 53=14 311 | 54=59 312 | 55=47 313 | 56=13 314 | 57=15 315 | 58=59 316 | 59=15 317 | 60=59 318 | 61=59 319 | 62=15 320 | 63=59 321 | 64=8 322 | 65=35 323 | 66=35 324 | 67=10 325 | 68=35 326 | 69=6 327 | 70=10 328 | 71=35 329 | 72=10 330 | 73=35 331 | 74=11 332 | 75=35 333 | 76=11 334 | 77=12 335 | 78=12 336 | 79=11 337 | 80=11 338 | 81=11 339 | 82=11 340 | 83=35 341 | 84=35 342 | 85=11 343 | 86=35 344 | 87=47 345 | 88=8 346 | 89=11 347 | 90=35 348 | 91=11 349 | 92=35 350 | 93=35 351 | 94=8 352 | 95=20 353 | -------------------------------------------------------------------------------- /Fonts/bebas neue/_bebas neue 70px.ini: -------------------------------------------------------------------------------- 1 | [common] 2 | Baseline=66 3 | Top=17 4 | LineSpacing=84 5 | DrawExtraPixelsLeft=3 6 | DrawExtraPixelsRight=3 7 | AdvanceExtraPixels=0 8 | 9 | [main] 10 | Line 0= !"#$%&'()*+,-. 11 | Line 1=/0123456789:;<= 12 | Line 2=>?@ABCDEFGHIJKL 13 | Line 3=MNOPQRSTUVWXYZ[ 14 | Line 4=\]^_`abcdefghij 15 | Line 5=klmnopqrstuvwxy 16 | Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š 17 | Line 7=‹ŒŽ‘’“”•–—˜™š›œ 18 | Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬ 19 | Line 9=­®¯°±²³´µ¶·¸¹º» 20 | Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ 21 | Line 11=ËÌÍÎÏÐÑÒÓÔÕÖ×ØÙ 22 | Line 12=ÚÛÜÝÞßàáâãäåæçè 23 | Line 13=éêëìíîïðñòóôõö÷ 24 | Line 14=øùúûüýþÿ 25 | 26 | 0=11 27 | 1=13 28 | 2=23 29 | 3=29 30 | 4=28 31 | 5=44 32 | 6=29 33 | 7=13 34 | 8=18 35 | 9=18 36 | 10=28 37 | 11=28 38 | 12=13 39 | 13=19 40 | 14=13 41 | 15=27 42 | 16=28 43 | 17=28 44 | 18=28 45 | 19=28 46 | 20=28 47 | 21=28 48 | 22=28 49 | 23=28 50 | 24=28 51 | 25=28 52 | 26=13 53 | 27=13 54 | 28=28 55 | 29=28 56 | 30=28 57 | 31=25 58 | 32=48 59 | 33=28 60 | 34=28 61 | 35=27 62 | 36=29 63 | 37=26 64 | 38=24 65 | 39=27 66 | 40=30 67 | 41=13 68 | 42=18 69 | 43=29 70 | 44=24 71 | 45=38 72 | 46=30 73 | 47=28 74 | 48=26 75 | 49=28 76 | 50=28 77 | 51=26 78 | 52=25 79 | 53=28 80 | 54=28 81 | 55=39 82 | 56=30 83 | 57=28 84 | 58=26 85 | 59=18 86 | 60=27 87 | 61=18 88 | 62=28 89 | 63=35 90 | 64=17 91 | 65=28 92 | 66=28 93 | 67=27 94 | 68=29 95 | 69=26 96 | 70=24 97 | 71=27 98 | 72=30 99 | 73=13 100 | 74=18 101 | 75=29 102 | 76=24 103 | 77=38 104 | 78=30 105 | 79=28 106 | 80=26 107 | 81=28 108 | 82=28 109 | 83=26 110 | 84=25 111 | 85=28 112 | 86=28 113 | 87=39 114 | 88=30 115 | 89=28 116 | 90=26 117 | 91=18 118 | 92=35 119 | 93=18 120 | 94=28 121 | 95=28 122 | 96=13 123 | 97=11 124 | 98=23 125 | 99=33 126 | 100=28 127 | 101=28 128 | 102=17 129 | 103=62 130 | 104=26 131 | 105=14 132 | 106=41 133 | 107=26 134 | 108=13 135 | 109=13 136 | 110=23 137 | 111=23 138 | 112=28 139 | 113=35 140 | 114=70 141 | 115=17 142 | 116=41 143 | 117=26 144 | 118=14 145 | 119=41 146 | 120=26 147 | 121=28 148 | 122=11 149 | 123=13 150 | 124=28 151 | 125=28 152 | 126=11 153 | 127=28 154 | 128=35 155 | 129=28 156 | 130=17 157 | 131=52 158 | 132=19 159 | 133=25 160 | 134=28 161 | 135=19 162 | 136=52 163 | 137=17 164 | 138=16 165 | 139=28 166 | 140=20 167 | 141=20 168 | 142=17 169 | 143=10 170 | 144=28 171 | 145=13 172 | 146=17 173 | 147=14 174 | 148=20 175 | 149=25 176 | 150=44 177 | 151=44 178 | 152=44 179 | 153=25 180 | 154=28 181 | 155=28 182 | 156=28 183 | 157=28 184 | 158=28 185 | 159=28 186 | 160=41 187 | 161=27 188 | 162=26 189 | 163=26 190 | 164=26 191 | 165=26 192 | 166=13 193 | 167=13 194 | 168=13 195 | 169=13 196 | 170=29 197 | 171=30 198 | 172=28 199 | 173=28 200 | 174=28 201 | 175=28 202 | 176=28 203 | 177=28 204 | 178=28 205 | 179=28 206 | 180=28 207 | 181=28 208 | 182=28 209 | 183=28 210 | 184=26 211 | 185=52 212 | 186=28 213 | 187=28 214 | 188=28 215 | 189=28 216 | 190=28 217 | 191=28 218 | 192=41 219 | 193=27 220 | 194=26 221 | 195=26 222 | 196=26 223 | 197=26 224 | 198=13 225 | 199=13 226 | 200=13 227 | 201=13 228 | 202=29 229 | 203=30 230 | 204=28 231 | 205=28 232 | 206=28 233 | 207=28 234 | 208=28 235 | 209=28 236 | 210=28 237 | 211=28 238 | 212=28 239 | 213=28 240 | 214=28 241 | 215=28 242 | 216=26 243 | 217=28 244 | 245 | [alt] 246 | Line 0= Ą˘Ł¤ĽŚ§¨Š 247 | Line 1=ŞŤŹ­ŽŻ°ą˛ł 248 | Line 2=´ľśˇ¸šşťź˝ 249 | Line 3=žżŔÁÂĂÄĹĆÇ 250 | Line 4=ČÉĘËĚÍÎĎĐŃ 251 | Line 5=ŇÓÔŐÖ×ŘŮÚŰ 252 | Line 6=ÜÝŢßŕáâăäĺ 253 | Line 7=ćçčéęëěíîď 254 | Line 8=đńňóôőö÷řů 255 | Line 9=úűüýţ˙ 256 | 257 | 0=11 258 | 1=28 259 | 2=17 260 | 3=24 261 | 4=11 262 | 5=24 263 | 6=26 264 | 7=28 265 | 8=17 266 | 9=26 267 | 10=26 268 | 11=25 269 | 12=26 270 | 13=19 271 | 14=26 272 | 15=26 273 | 16=16 274 | 17=28 275 | 18=17 276 | 19=24 277 | 20=17 278 | 21=24 279 | 22=26 280 | 23=17 281 | 24=17 282 | 25=26 283 | 26=26 284 | 27=25 285 | 28=26 286 | 29=17 287 | 30=26 288 | 31=26 289 | 32=28 290 | 33=28 291 | 34=28 292 | 35=28 293 | 36=28 294 | 37=24 295 | 38=27 296 | 39=27 297 | 40=27 298 | 41=26 299 | 42=26 300 | 43=26 301 | 44=26 302 | 45=13 303 | 46=13 304 | 47=29 305 | 48=29 306 | 49=30 307 | 50=30 308 | 51=28 309 | 52=28 310 | 53=28 311 | 54=28 312 | 55=28 313 | 56=28 314 | 57=28 315 | 58=28 316 | 59=28 317 | 60=28 318 | 61=28 319 | 62=25 320 | 63=52 321 | 64=28 322 | 65=28 323 | 66=28 324 | 67=28 325 | 68=28 326 | 69=24 327 | 70=27 328 | 71=27 329 | 72=27 330 | 73=26 331 | 74=26 332 | 75=26 333 | 76=26 334 | 77=13 335 | 78=13 336 | 79=29 337 | 80=29 338 | 81=30 339 | 82=30 340 | 83=28 341 | 84=28 342 | 85=28 343 | 86=28 344 | 87=28 345 | 88=28 346 | 89=28 347 | 90=28 348 | 91=28 349 | 92=28 350 | 93=28 351 | 94=25 352 | 95=17 353 | -------------------------------------------------------------------------------- /Scripts/Assets.lua: -------------------------------------------------------------------------------- 1 | 2 | --//================================================================ 3 | 4 | function LoadBanner(self,item) 5 | local path; 6 | 7 | --self:Load(nil); 8 | path = Global.songlist[item]:GetJacketPath(); 9 | if path ~= nil --[[and FILEMAN:DoesFileExist(path)]] then 10 | self:Load(path) 11 | else 12 | 13 | path = Global.songlist[item]:GetBannerPath(); 14 | if path ~= nil --[[and FILEMAN:DoesFileExist(path)]] then 15 | --self:LoadFromCachedBanner(path) 16 | self:Load(path) 17 | else 18 | self:Load(THEME:GetPathG("Common fallback","banner")); 19 | --self:Load(THEME:GetPathG("Common fallback","banner")); 20 | end; 21 | 22 | end; 23 | end; 24 | 25 | --//================================================================ 26 | 27 | function LoadBackground(self,song) 28 | local tconf = THEMECONFIG:get_data("ProfileSlot_Invalid"); 29 | 30 | local rmov = FindRandomMovie(song) 31 | local bga = song:GetSongDir()..FindBGA(FILEMAN:GetDirListing(song:GetSongDir())); 32 | local vid = song:GetPreviewVidPath(); 33 | local path = song:GetBackgroundPath(); 34 | --SCREENMAN:SystemMessage(mov) 35 | 36 | if not tconf.DisableBGA and vid ~= nil and FILEMAN:DoesFileExist(vid) then 37 | self:Load(vid); 38 | elseif not tconf.DisableBGA and rmov ~= nil and FILEMAN:DoesFileExist(rmov) then 39 | self:Load(rmov); 40 | elseif not tconf.DisableBGA and bga ~= nil and FILEMAN:DoesFileExist(bga) then 41 | self:Load(bga); 42 | elseif path ~= nil and FILEMAN:DoesFileExist(path) then 43 | self:Load(path); 44 | else 45 | self:Load(THEME:GetPathG("Common fallback","preview")); 46 | end; 47 | end; 48 | 49 | 50 | --//================================================================ 51 | 52 | function FindBGA(dir) 53 | local path = nil; 54 | for i=1,#dir do 55 | if string.find(dir[i],".avi")~=nil or 56 | string.find(dir[i],".mpg")~=nil or 57 | string.find(dir[i],".mpeg")~=nil or 58 | string.find(dir[i],".mp4")~=nil or 59 | string.find(dir[i],".m1v")~=nil or 60 | string.find(dir[i],".m2v")~=nil then 61 | path = dir[i]; 62 | break; 63 | end; 64 | end; 65 | 66 | return tostring(path); 67 | end; 68 | 69 | --//================================================================ 70 | 71 | function FindRandomMovie(song) 72 | local rmovies = FILEMAN:GetDirListing("/RandomMovies/",false,true); 73 | local path = nil; 74 | 75 | for i=1,#rmovies do 76 | local file = nil; 77 | 78 | file = rmovies[i]; 79 | file = string.gsub(file,".avi","") 80 | file = string.gsub(file,".mpg","") 81 | file = string.gsub(file,".mpeg","") 82 | file = string.gsub(file,".mp4","") 83 | file = string.gsub(file,".m1v","") 84 | file = string.gsub(file,".m2v","") 85 | file = string.gsub(file,"/RandomMovies/","") 86 | 87 | if file == GetFolder(song) or file == GetSimfile(song) then 88 | path = rmovies[i]; 89 | break; 90 | end; 91 | 92 | end; 93 | 94 | return path; 95 | 96 | end; 97 | 98 | --//================================================================ 99 | 100 | function LoadJacket(self,song) 101 | local path; 102 | path = song:GetJacketPath(); 103 | if path ~= nil then 104 | self:Load(path) 105 | else 106 | path = song:GetBannerPath(); 107 | if path ~= nil then 108 | self:LoadBanner(path) 109 | else 110 | self:Load(THEME:GetPathG("Common fallback","banner")); 111 | end; 112 | end; 113 | end; 114 | 115 | --//================================================================ 116 | 117 | function GetFolder(song) 118 | local str = song:GetSongDir(); 119 | 120 | str = string.reverse(str) 121 | str = string.sub(str, 2) 122 | str = string.reverse(str) 123 | str = string.sub(str, 2) 124 | 125 | while (string.find(str,"/")) do 126 | local index = string.find(str,"/") 127 | str = string.sub(str, index+1) 128 | end 129 | 130 | return str; 131 | end 132 | 133 | --//================================================================ 134 | 135 | function GetSimfile(song) 136 | local str = song:GetSongFilePath(); 137 | 138 | local formats = { 139 | ".ssc",".sm",".dwi" 140 | } 141 | 142 | str = string.sub(str, 2) 143 | 144 | while (string.find(str,"/")) do 145 | local index = string.find(str,"/") 146 | str = string.sub(str, index+1) 147 | end 148 | 149 | for i=1,#formats do 150 | str = string.gsub(str, formats[i], ""); 151 | end 152 | 153 | return str; 154 | end 155 | -------------------------------------------------------------------------------- /BGAnimations/ScreenWithMenuElements decorations.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{} 2 | 3 | local spacing = 290; 4 | 5 | --======================================================================================================================= 6 | --DECORATIONS (LITERALLY) 7 | --======================================================================================================================= 8 | 9 | t[#t+1] = LoadActor(THEME:GetPathG("","border"))..{ 10 | InitCommand=cmd(CenterX;y,SCREEN_TOP+32;zoom,-0.445;vertalign,top;diffuse,0.8,0.8,0.8,1); 11 | }; 12 | t[#t+1] = LoadActor(THEME:GetPathG("","footer"))..{ 13 | InitCommand=cmd(CenterX;y,SCREEN_BOTTOM+8); 14 | }; 15 | 16 | -- version 17 | t[#t+1] = LoadFont("regen small")..{ 18 | InitCommand=cmd(horizalign,left;x,SCREEN_CENTER_X-spacing;y,SCREEN_TOP+20;zoomx,0.317;zoomy,0.305); 19 | OnCommand=function(self) 20 | self:diffuse(0.66,0.66,0.66,0.5); 21 | self:strokecolor(0.1,0.1,0.1,1); 22 | 23 | local ver = ProductVersion(); 24 | ver = string.gsub(string.lower(ver), "-unknown", "-test"); 25 | 26 | self:settext(string.upper("Stepmania "..ver)); 27 | end; 28 | }; 29 | 30 | -- date and time 31 | t[#t+1] = LoadFont("regen small")..{ 32 | InitCommand=cmd(horizalign,right;x,SCREEN_CENTER_X+spacing;y,SCREEN_TOP+20;zoomx,0.317;zoomy,0.305); 33 | OnCommand=function(self) 34 | self:diffuse(0.66,0.66,0.66,0.5); 35 | self:strokecolor(0.1,0.1,0.1,1); 36 | end; 37 | 38 | UpdateMessageCommand=function(self) 39 | local hour = CapDigits(Hour(), 0, 2); 40 | local min = CapDigits(Minute(), 0, 2); 41 | local sec = CapDigits(Second(), 0, 2); 42 | local time = hour..":"..min..":"..sec; 43 | 44 | local month = CapDigits(MonthOfYear()+1, 0, 2); 45 | local day = CapDigits(DayOfMonth(), 0, 2); 46 | 47 | local date = Year().."-"..month.."-"..day; 48 | 49 | self:settext(date.." "..time); 50 | end; 51 | }; 52 | 53 | --======================================================================================================================= 54 | --PROFILE BUTTONS 55 | --======================================================================================================================= 56 | 57 | --[[ 58 | for pn in ivalues({PLAYER_1,PLAYER_2}) do 59 | t[#t+1] = Def.Quad{ 60 | InitCommand=cmd(zoomto,190,40;diffuse,1,0,0,0;y,SCREEN_BOTTOM-36+4); 61 | OnCommand=function(self) if pn == PLAYER_1 then self:x(SCREEN_CENTER_X-220) elseif pn == PLAYER_2 then self:x(SCREEN_CENTER_X+220); end; end; 62 | UpdateMessageCommand=function(self) if ButtonHover(self,pn.." panel",1) then MESSAGEMAN:Broadcast("ProfilePanel",{Player=pn}); end; end; 63 | }; 64 | end 65 | ]]-- 66 | 67 | --======================================================================================================================= 68 | -- RESOLUTION DEBUG HELPERS 69 | --======================================================================================================================= 70 | 71 | if not true then 72 | local lines_color = {1,0,0,1}; 73 | t[#t+1] = Def.Quad{ InitCommand=cmd(zoomto,300,SCREEN_HEIGHT;CenterY;x,SCREEN_CENTER_X-320;horizalign,right;diffuse,0,0,0,0.5) }; --right 16:9 fill 74 | t[#t+1] = Def.Quad{ InitCommand=cmd(zoomto,300,SCREEN_HEIGHT;CenterY;x,SCREEN_CENTER_X+320;horizalign,left;diffuse,0,0,0,0.5) }; --left 16:9 fill 75 | t[#t+1] = Def.Quad{ InitCommand=cmd(zoomto,1,SCREEN_HEIGHT;CenterY;x,SCREEN_CENTER_X+320;diffuse,lines_color) }; --right 4:3 line 76 | t[#t+1] = Def.Quad{ InitCommand=cmd(zoomto,1,SCREEN_HEIGHT;CenterY;x,SCREEN_CENTER_X-320;diffuse,lines_color) }; --left 4:3 line 77 | t[#t+1] = Def.Quad{ InitCommand=cmd(zoomto,1,SCREEN_HEIGHT;CenterY;x,SCREEN_CENTER_X;diffuse,lines_color) }; --center vertical line 78 | t[#t+1] = Def.Quad{ InitCommand=cmd(zoomto,SCREEN_WIDTH,1;CenterY;x,SCREEN_CENTER_X;diffuse,lines_color) }; --center horizontal line 79 | end; 80 | 81 | --======================================================================================================================= 82 | --CONTROLS 83 | --======================================================================================================================= 84 | t[#t+1] = Def.Actor{ 85 | PlayerJoinedMessageCommand=function(self,params) 86 | --if Global.blockjoin then 87 | -- GAMESTATE:UnjoinPlayer(params.Player) 88 | --end; 89 | end; 90 | }; 91 | 92 | --======================================================================================================================= 93 | --BLANK TRANSITION 94 | --======================================================================================================================= 95 | 96 | t[#t+1] = LoadActor(THEME:GetPathG("","bg"))..{ 97 | InitCommand=cmd(Center;diffuse,Global.bgcolor;diffusealpha,0); 98 | FinalDecisionMessageCommand=cmd(diffusealpha,0;sleep,0.1;linear,0.5;diffusealpha,1); 99 | }; 100 | 101 | 102 | return t; -------------------------------------------------------------------------------- /BGAnimations/_assets/cursteps.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{} 2 | 3 | local spacing = 272; 4 | local originY = SCREEN_BOTTOM-64 5 | 6 | --//================================================================ 7 | -- filter words 8 | 9 | function FilterStepmaker(maker) 10 | local filter = false; 11 | local bannedwords = { 12 | "blank", 13 | "beginner", 14 | "easy", 15 | "medium", 16 | "normal", 17 | "standard", 18 | "hard", 19 | "crazy", 20 | "heavy", 21 | "oni", 22 | "challenge", 23 | "freestyle", 24 | "nightmare", 25 | "steps", 26 | "solo", 27 | "single", 28 | "double", 29 | "routine", 30 | "halfdouble", 31 | "half-double", 32 | "performance" 33 | }; 34 | 35 | for i=1,#bannedwords do 36 | if string.lower(tostring(maker)) == bannedwords[i] then 37 | filter = true; 38 | end 39 | end; 40 | if filter then return "" else return tostring(maker) end; 41 | end; 42 | 43 | --//================================================================ 44 | 45 | for pn in ivalues(GAMESTATE:GetHumanPlayers()) do 46 | 47 | t[#t+1] = Def.ActorFrame{ 48 | InitCommand=cmd(x,SCREEN_CENTER_X + spacing * pnSide(pn);y,originY); 49 | OnCommand=cmd(stoptweening;diffusealpha,0;sleep,0.5;linear,0.5;diffusealpha,1;visible,SideJoined(pn)); 50 | StateChangedMessageCommand=function(self) 51 | self:stoptweening(); 52 | self:decelerate(0.2); 53 | if Global.state == "GroupSelect" then 54 | self:diffusealpha(0); 55 | else 56 | self:diffusealpha(1); 57 | end; 58 | end; 59 | 60 | LoadActor(THEME:GetPathG("","dim"))..{ 61 | InitCommand=cmd(zoomto,364,96;diffuse,BoostColor(Global.bgcolor,0.75);fadeleft,0.66666;faderight,0.66666;x,64 * -pnSide(pn)); 62 | }; 63 | 64 | LoadActor(THEME:GetPathG("","separator"))..{ 65 | InitCommand=cmd(zoom,0.45;x,25 * -pnSide(pn);y,-2;diffuse,0,0,0,0.5); 66 | }; 67 | 68 | -- meter 69 | Def.BitmapText{ 70 | Font = Fonts.cursteps["Meter"]; 71 | InitCommand=cmd(zoom,0.5;strokecolor,0.15,0.15,0.15,1); 72 | OnCommand=cmd(playcommand,"Refresh"); 73 | StepsChangedMessageCommand=cmd(playcommand,"Refresh"); 74 | RefreshCommand=function(self) 75 | if Global.pncursteps[pn] then 76 | local steps = Global.pncursteps[pn] 77 | if TotalNotes(steps,pn) == 0 then 78 | self:settext("00"); 79 | else 80 | local value = FormatMeter(steps:GetMeter()); 81 | self:settext(FormatMeter(steps:GetMeter())); 82 | end 83 | end; 84 | end; 85 | }; 86 | 87 | -- stepstype 88 | Def.BitmapText{ 89 | Font = Fonts.cursteps["Type"]; 90 | InitCommand=cmd(vertalign,bottom;zoom,0.3;strokecolor,0.2,0.2,0.2,0.5;y,-10;x,-1); 91 | OnCommand=cmd(playcommand,"Refresh"); 92 | StepsChangedMessageCommand=cmd(playcommand,"Refresh"); 93 | RefreshCommand=function(self) 94 | if Global.pncursteps[pn] then 95 | local steps = Global.pncursteps[pn] 96 | self:settext(string.upper(PureType(steps))); 97 | 98 | local tint = StepsColor(steps); 99 | 100 | if PureType(steps) == "Halfdouble" then 101 | self:settext(string.upper("halfdb")); 102 | end 103 | 104 | self:diffuse(tint); 105 | self:diffusetopedge(BoostColor(tint,8)); 106 | self:strokecolor(BoostColor(tint,0.3)); 107 | end; 108 | end; 109 | }; 110 | 111 | -- maker 112 | Def.BitmapText{ 113 | Font = Fonts.cursteps["Info"]; 114 | InitCommand=cmd(horizalign,pnAlign(pn);x,36 * -pnSide(pn);y,-11;zoom,0.4;strokecolor,0.2,0.2,0.2,1;maxwidth,164/self:GetZoom()); 115 | OnCommand=cmd(playcommand,"Refresh"); 116 | StepsChangedMessageCommand=cmd(playcommand,"Refresh"); 117 | RefreshCommand=function(self) 118 | if Global.pncursteps[pn] then 119 | local steps = Global.pncursteps[pn] 120 | local maker = steps:GetAuthorCredit() 121 | maker = FilterStepmaker(maker); 122 | 123 | if tostring(maker)=="" then 124 | self:settext(""); 125 | self:diffuse(0.7,0.7,0.7,0.8); 126 | else 127 | self:settext("Steps by "..maker); 128 | self:diffuse(1,1,1,1); 129 | end 130 | end; 131 | end; 132 | }; 133 | 134 | -- notes 135 | Def.BitmapText{ 136 | Font = Fonts.cursteps["Info"]; 137 | InitCommand=cmd(horizalign,pnAlign(pn);x,36 * -pnSide(pn);y,3;zoom,0.4;diffuse,BoostColor(PlayerColor(pn),0.95);strokecolor,BoostColor(PlayerColor(pn),0.3);maxwidth,164/self:GetZoom()); 138 | OnCommand=cmd(playcommand,"Refresh"); 139 | StepsChangedMessageCommand=cmd(playcommand,"Refresh"); 140 | RefreshCommand=function(self) 141 | if Global.pncursteps[pn] then 142 | local steps = Global.pncursteps[pn] 143 | self:settext("Avg. notes/sec: "..AvgNotesSec(steps,pn)); 144 | --self:settext("Total notes: "..TotalNotes(steps,pn)); 145 | --self:settext("Predicted meter: "..steps:PredictMeter()); 146 | end; 147 | end; 148 | }; 149 | 150 | }; 151 | 152 | 153 | end; 154 | 155 | 156 | return t -------------------------------------------------------------------------------- /BGAnimations/_assets/sound.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{} 2 | local _volume = 1.0; 3 | 4 | --======================================================================================================================= 5 | --SOUND CONTROLLER 6 | --======================================================================================================================= 7 | 8 | t[#t+1] = Def.Actor{ 9 | OnCommand=function(self) 10 | self:sleep(0.535); 11 | if SCREENMAN:GetTopScreen():GetName() == "ScreenSelectMusicCustom" then 12 | self:queuecommand("PreviewStart"); 13 | end; 14 | end; 15 | 16 | OffCommand=function(self) MESSAGEMAN:Broadcast("Volume", { volume = 0 }); end; 17 | 18 | MusicWheelMessageCommand=function(self) 19 | self:stoptweening(); 20 | self:playcommand("Volume", { volume = 1 }); 21 | SOUND:PlayMusicPart(THEME:GetPathS("","_missing"),0.1,0.1); 22 | self:sleep(0.535); 23 | self:queuecommand("PreviewStart"); 24 | end; 25 | 26 | PreviewStartCommand=function(self) 27 | local music = Global.song:GetMusicPath(); 28 | local start = 0; 29 | local length = 0; 30 | if music then 31 | start = Global.song:GetSampleStart() 32 | length = Global.song:GetSampleLength() 33 | SOUND:PlayMusicPart(music,start,length,1,1,true); 34 | self:sleep(length - 1.25); 35 | end; 36 | self:queuecommand("Volume") -- zero volume 37 | MESSAGEMAN:Broadcast("Preview"); 38 | end; 39 | 40 | FinalDecisionMessageCommand=function(self) 41 | for i=1,100 do 42 | self:finishtweening(); 43 | MESSAGEMAN:Broadcast("Volume", { volume = 1-(i/100) }); 44 | self:sleep(0.01); 45 | end; 46 | end; 47 | 48 | StateChangedMessageCommand=function(self) 49 | if Global.state == "GroupSelect" then 50 | MESSAGEMAN:Broadcast("Volume", { volume = _volume, global = 0.5 }); 51 | else 52 | MESSAGEMAN:Broadcast("Volume", { volume = _volume, global = 1.0 }); 53 | end; 54 | end; 55 | 56 | VolumeMessageCommand=function(self,param) 57 | local _duration = math.huge; 58 | if param and param.volume then _volume = param.volume; else _volume = 0; end; 59 | if param and param.global then Global.volume = param.global end; 60 | SOUND:DimMusic(_volume * Global.volume, _duration); 61 | end; 62 | }; 63 | 64 | t[#t+1] = LoadActor(THEME:GetPathS("","Difficulty"))..{ 65 | StepsChangedMessageCommand=function(self, param) 66 | if Global.state == "SelectSteps" then 67 | if param and param.Player then 68 | self:play(); 69 | end; 70 | end; 71 | end; 72 | }; 73 | 74 | t[#t+1] = LoadActor(THEME:GetPathS("","Confirm"))..{ 75 | FinalDecisionMessageCommand=function(self) 76 | local scr = SCREENMAN:GetTopScreen() 77 | if scr and scr:IsTransitioning() then return end; 78 | self:play(); 79 | end; 80 | }; 81 | 82 | t[#t+1] = LoadActor(THEME:GetPathS("","Group"))..{ 83 | FolderChangedMessageCommand=cmd(play); 84 | }; 85 | 86 | t[#t+1] = LoadActor(THEME:GetPathS("","Select"))..{ 87 | DecisionMessageCommand=cmd(play); 88 | }; 89 | 90 | t[#t+1] = LoadActor(THEME:GetPathS("","Switch"))..{ 91 | MusicWheelMessageCommand=function(self,param) if param and not param.silent then self:play() end; end; 92 | SongGroupMessageCommand=cmd(play); 93 | }; 94 | 95 | t[#t+1] = LoadActor(THEME:GetPathS("","State"))..{ 96 | MainMenuDecisionMessageCommand=cmd(play); 97 | OptionsListOpenedMessageCommand=cmd(play); 98 | }; 99 | 100 | t[#t+1] = LoadActor(THEME:GetPathS("","Steps"))..{ 101 | StepsSelectedMessageCommand=cmd(play); 102 | SongSelectedMessageCommand=cmd(play); 103 | SpeedSelectedMessageCommand=cmd(play); 104 | NoteskinSelectedMessageCommand=cmd(play); 105 | OptionsListSelectedMessageCommand=function(self,param) if not param or not param.silent then self:play(); end; end; 106 | OptionsMenuSelectedMessageCommand=function(self,param) if not param or not param.silent then self:play(); end; end; 107 | }; 108 | 109 | t[#t+1] = LoadActor(THEME:GetPathS("","Mainmenu"))..{ 110 | MainMenuMessageCommand=function(self,param) if param and param.Direction then self:play(); end; end; 111 | SpeedMenuMessageCommand=function(self,param) if not param or not param.silent then self:play() end; end; 112 | SpeedChangedMessageCommand=function(self,param) if not param or not param.silent then self:play(); end; end; 113 | NoteskinChangedMessageCommand=function(self,param) if not param or not param.silent then self:play(); end; end; 114 | EvaluationMenuMessageCommand=function(self,param) if not param or not param.silent then self:play(); end; end; 115 | OptionsMenuChangedMessageCommand=function(self,param) if not param or not param.silent then self:play(); end; end; 116 | OptionsListChangedMessageCommand=function(self,param) if not param or not param.silent then self:play(); end; end; 117 | ChangePropertyMessageCommand=function(self,param) if not param or not param.silent then self:play(); end; end; 118 | }; 119 | 120 | t[#t+1] = LoadActor(THEME:GetPathS("Common","Cancel"))..{ 121 | OptionsListClosedMessageCommand=cmd(play); 122 | ReturnMessageCommand=function(self,param) 123 | self:play(); 124 | end; 125 | }; 126 | 127 | 128 | return t; -------------------------------------------------------------------------------- /BGAnimations/ScreenEdit overlay/assets/judgment.lua: -------------------------------------------------------------------------------- 1 | local function Update(self,dt) 2 | MESSAGEMAN:Broadcast("Update"); 3 | end; 4 | 5 | local t = Def.ActorFrame { 6 | InitCommand=function(self) 7 | self:SetUpdateFunction(Update); 8 | self:SetUpdateRate(1) 9 | end; 10 | }; 11 | 12 | local notecount = 0; 13 | local hits = 0; 14 | local misses = 0; 15 | local all_dp = 0; 16 | local cur_dp = 0; 17 | 18 | local song = GAMESTATE:GetCurrentSong(); 19 | local oldbeat = 0; 20 | 21 | local TNS_weights = { 22 | ["TapNoteScore_CheckpointMiss"] = THEME:GetMetric("ScoreKeeperNormal", "PercentScoreWeightCheckpointMiss"), 23 | ["TapNoteScore_CheckpointHit"] = THEME:GetMetric("ScoreKeeperNormal", "PercentScoreWeightCheckpointHit"), 24 | ["TapNoteScore_W1"] = THEME:GetMetric("ScoreKeeperNormal", "PercentScoreWeightW1"), 25 | ["TapNoteScore_W2"] = THEME:GetMetric("ScoreKeeperNormal", "PercentScoreWeightW2"), 26 | ["TapNoteScore_W3"] = THEME:GetMetric("ScoreKeeperNormal", "PercentScoreWeightW3"), 27 | ["TapNoteScore_W4"] = THEME:GetMetric("ScoreKeeperNormal", "PercentScoreWeightW4"), 28 | ["TapNoteScore_W5"] = THEME:GetMetric("ScoreKeeperNormal", "PercentScoreWeightW5"), 29 | ["TapNoteScore_Miss"] = THEME:GetMetric("ScoreKeeperNormal", "PercentScoreWeightMiss"), 30 | ["TapNoteScore_HitMine"] = THEME:GetMetric("ScoreKeeperNormal", "PercentScoreWeightHitMine"), 31 | ["TapNoteScore_None"] = 0, 32 | }; 33 | 34 | local HNS_weights = { 35 | ["HoldNoteScore_None"] = 0, 36 | ["HoldNoteScore_Held"] = THEME:GetMetric("ScoreKeeperNormal", "PercentScoreWeightHeld"), 37 | ["HoldNoteScore_MissedHold"] = THEME:GetMetric("ScoreKeeperNormal", "PercentScoreWeightMissedHold"), 38 | ["HoldNoteScore_LetGo"] = THEME:GetMetric("ScoreKeeperNormal", "PercentScoreWeightLetGo"), 39 | }; 40 | 41 | local function TNSToCombo(tns) 42 | local multiplier = { 1, 1 }; 43 | local curbeat = GAMESTATE:GetSongBeat(); 44 | local master = GAMESTATE:GetMasterPlayerNumber(); 45 | local timing = GAMESTATE:GetCurrentSteps(master):GetTimingData(true); 46 | local combos = timing:GetCombos(true); 47 | 48 | if timing and combos and #combos > 1 then 49 | for i=1,#combos do 50 | local beat = combos[i][1]; 51 | local limit = math.huge; 52 | 53 | if i+1 <= #combos then 54 | limit = combos[i+1][1]; 55 | end; 56 | 57 | if(curbeat >= beat and curbeat < limit) then 58 | multiplier = { combos[i][2], combos[i][3] }; 59 | end; 60 | end; 61 | end; 62 | 63 | if tns == "TapNoteScore_Miss" or tns == "TapNoteScore_CheckpointMiss" then 64 | misses = misses + multiplier[2]; 65 | hits = 0; 66 | elseif tns == "TapNoteScore_W5" then 67 | misses = 0; 68 | hits = 0; 69 | elseif tns == ComboMaintain() then 70 | hits = 0; 71 | elseif tns == ComboContinue() then 72 | hits = hits + multiplier[1]; 73 | misses = 0; 74 | else 75 | hits = hits + multiplier[1]; 76 | misses = 0; 77 | end; 78 | end; 79 | 80 | local function ValueOrNil(val) 81 | if val < 1 then return nil; end; 82 | return val; 83 | end; 84 | 85 | local function ResetTrackers() 86 | notecount = 0; 87 | hits = 0; 88 | misses = 0; 89 | all_dp = 0; 90 | cur_dp = 0; 91 | oldbeat = GAMESTATE:GetSongBeat(); 92 | end; 93 | 94 | t[#t+1] = Def.BitmapText{ 95 | Font = Fonts.editor["Main"]; 96 | InitCommand=cmd(diffuse,1,1,1,1;strokecolor,0.1,0.1,0.1,1;zoom,0.6;x,SCREEN_LEFT+8;y,SCREEN_TOP+8;horizalign,left;vertalign,top;zoom,0.575); 97 | UpdateMessageCommand=function(self) 98 | if SCREENMAN:GetTopScreen():GetScreenType() == "ScreenType_Gameplay" then 99 | self:visible(true); 100 | if GAMESTATE:GetSongBeat() < oldbeat then 101 | ResetTrackers(); 102 | end; 103 | else 104 | ResetTrackers(); 105 | self:visible(false); 106 | end; 107 | 108 | self:settext("Notes judged: "..notecount); 109 | 110 | end; 111 | 112 | JudgmentMessageCommand=function(self, param) 113 | if param.TapNoteScore and param.TapNoteScore ~= "TapNoteScore_None" then 114 | notecount = notecount + 1; 115 | 116 | local maximum_value; 117 | if(PREFSMAN:GetPreference("AllowW1") == "AllowW1_Never") then 118 | maximum_value = TNS_weights["TapNoteScore_W2"]; 119 | else 120 | maximum_value = TNS_weights["TapNoteScore_W1"]; 121 | end; 122 | 123 | all_dp = all_dp + maximum_value; 124 | cur_dp = cur_dp + TNS_weights[param.TapNoteScore]; 125 | 126 | TNSToCombo(param.TapNoteScore); 127 | end 128 | 129 | if param.HoldNoteScore and param.HoldNoteScore ~= "HoldNoteScore_None" then 130 | notecount = notecount - 1; 131 | all_dp = all_dp + HNS_weights["HoldNoteScore_Held"]; 132 | cur_dp = cur_dp + HNS_weights[param.HoldNoteScore]; 133 | end; 134 | 135 | self:settext("Notes judged: "..notecount); 136 | 137 | local comboparams = { 138 | Combo = ValueOrNil(hits), 139 | Misses = ValueOrNil(misses), 140 | Player = GAMESTATE:GetMasterPlayerNumber(), 141 | currentDP = cur_dp, 142 | possibleDP = all_dp 143 | }; 144 | 145 | local comboActor = SCREENMAN:GetTopScreen():GetChild("Player"):GetChild("Combo"); 146 | comboActor:playcommand("Judgment", param); 147 | comboActor:playcommand("Combo", comboparams ); 148 | end; 149 | }; 150 | 151 | --t[#t+1] = LoadActor(THEME:GetPathG("", "editor_mods_preview")) 152 | 153 | return t; 154 | -------------------------------------------------------------------------------- /BGAnimations/ScreenSelectMusicCustom underlay/assets/notefield.lua: -------------------------------------------------------------------------------- 1 | 2 | local curTime = -1; 3 | local bpm = 60; 4 | local curskin = { 5 | [PLAYER_1] = "", 6 | [PLAYER_2] = "", 7 | } 8 | 9 | local function UpdateTime(self, delta) 10 | curTime = GAMESTATE:GetCurMusicSeconds(); 11 | MESSAGEMAN:Broadcast("UpdateNotefield"); 12 | end 13 | 14 | local function CanShowNotefield() 15 | if Global.state == "SelectSteps" or Global.oplist[PLAYER_1] or Global.oplist[PLAYER_2] then return true end; 16 | return false; 17 | end; 18 | 19 | local t = Def.ActorFrame{ 20 | InitCommand=function(self) self:SetUpdateFunction(UpdateTime); self:diffusealpha(0); end; 21 | StateChangedMessageCommand=cmd(playcommand,"Refresh"); 22 | OptionsListOpenedMessageCommand=cmd(playcommand,"Refresh"); 23 | OptionsListClosedMessageCommand=cmd(playcommand,"Refresh"); 24 | RefreshCommand=function(self) 25 | self:stoptweening(); 26 | self:linear(0.15); 27 | if CanShowNotefield() then 28 | self:diffusealpha(1); 29 | else 30 | self:diffusealpha(0); 31 | end; 32 | end; 33 | } 34 | 35 | local tex = Def.ActorFrameTexture{ 36 | InitCommand= function(self) 37 | self:setsize(_screen.w, _screen.h) 38 | self:SetTextureName("notefield_overlay") 39 | self:EnableAlphaBuffer(true); 40 | self:EnablePreserveTexture(false) 41 | self:Create(); 42 | end; 43 | } 44 | 45 | -- Luizsan: Yeah, it's touchy about the order. I tried to make it less 46 | -- touchy in the notefield_targets branch, but good luck finding someone to build that. 47 | for pn in ivalues(GAMESTATE:GetHumanPlayers()) do 48 | 49 | tex[#tex+1] = Def.NoteField{ 50 | 51 | StepsChangedMessageCommand=cmd(playcommand,"Refresh"); 52 | SpeedChangedMessageCommand=cmd(playcommand,"Refresh"); 53 | FolderChangedMessageCommand=cmd(playcommand,"Refresh"); 54 | PropertyChangedMessageCommand=cmd(playcommand,"Refresh"); 55 | OptionsListChangedMessageCommand=cmd(playcommand,"Refresh"); 56 | NoteskinChangedMessageCommand=function(self,param) 57 | if param and param.noteskin and param.Player == pn then 58 | self:set_skin(param.noteskin, {}); 59 | end; 60 | end; 61 | 62 | RefreshCommand=function(self) 63 | if GAMESTATE:IsSideJoined(pn) and Global.pncursteps[pn] then 64 | if Global.state ~= "SelectSteps" then 65 | self:visible(Global.oplist[pn]); 66 | else 67 | self:visible(true); 68 | end; 69 | 70 | local steps = Global.pncursteps[pn]; 71 | local skin = GetPreferredNoteskin(pn); 72 | local prefs = notefield_prefs_config:get_data(pn); 73 | 74 | self:set_vanish_type("FieldVanishType_RelativeToSelf") 75 | 76 | if curskin[pn] ~= skin then 77 | self:set_skin(skin, {}); 78 | curskin[pn] = skin; 79 | end; 80 | 81 | self:set_steps(steps); 82 | 83 | local speed = prefs.speed_mod; 84 | local mode = prefs.speed_type; 85 | local bpm = Global.song:GetDisplayBpms()[2]; 86 | apply_notefield_prefs_nopn(bpm, self, prefs) 87 | self:playcommand("WidthSet"); 88 | self:set_curr_second(curTime); 89 | end; 90 | end; 91 | 92 | WidthSetCommand=function(self,param) 93 | if GAMESTATE:IsSideJoined(pn) and Global.pncursteps[pn] then 94 | local steps = Global.pncursteps[pn]; 95 | local st = PureType(steps); 96 | 97 | if (st == "Double" or st == "Routine") or GAMESTATE:GetNumSidesJoined() == 1 then 98 | self:set_base_values{ 99 | transform_pos_x = _screen.cx, 100 | transform_pos_y = _screen.cy, 101 | } 102 | else 103 | self:set_base_values{ 104 | transform_pos_x = _screen.cx + (self:get_width() + 32) * 0.5 * pnSide(pn), 105 | transform_pos_y = _screen.cy, 106 | } 107 | end; 108 | end; 109 | end; 110 | 111 | UpdateNotefieldMessageCommand=function(self) 112 | if GAMESTATE:IsSideJoined(pn) and Global.pncursteps[pn] then 113 | self:set_curr_second(curTime); 114 | end; 115 | end; 116 | }; 117 | 118 | end; 119 | 120 | t[#t+1] = tex; 121 | 122 | t[#t+1] = Def.Sprite{ 123 | Texture = "notefield_overlay"; 124 | InitCommand=cmd(zoom,0.515;xy,_screen.cx,_screen.cy-177;vertalign,top;diffusealpha,0); 125 | OnCommand=cmd(playcommand,"Reload"); 126 | MusicWheelMessageCommand=cmd(playcommand,"Reload"); 127 | StepsChangedMessageCommand=cmd(stoptweening;diffusealpha,0;linear,0.15;diffusealpha,1); 128 | ReloadCommand=cmd(stoptweening;diffusealpha,0;sleep,0.6;linear,0.25;diffusealpha,1); 129 | StateChangedMessageCommand=cmd(finishtweening;linear,0.15;fadebottom,Global.state == "GroupSelect" and 0.2 or 0); 130 | } 131 | 132 | 133 | return t; -------------------------------------------------------------------------------- /Scripts/Input.lua: -------------------------------------------------------------------------------- 1 | --//================================================================ 2 | 3 | local gamecodes = { 4 | ["Options"] = { 5 | ["dance"] = "Left,Right,Left,Right,Left,Right", 6 | ["pump"] = "DownLeft,DownRight,DownLeft,DownRight,DownLeft,DownRight", 7 | ["default"] = "MenuLeft,MenuRight,MenuLeft,MenuRight,MenuLeft,MenuRight" 8 | } 9 | } 10 | 11 | function GameCode(code) 12 | if gamecodes and gamecodes[code] and gamecodes[code][string.lower(Game())] then 13 | return gamecodes[code][string.lower(Game())]; 14 | else 15 | return gamecodes[code]["default"]; 16 | end; 17 | end; 18 | 19 | --//================================================================ 20 | 21 | local function MenuInputGame(button) 22 | local game = string.lower(Game()); 23 | local inputs = { 24 | ["pump"] = { 25 | ["MenuUp"] = "Back", 26 | ["MenuDown"] = "Back", 27 | ["MenuLeft"] = "Prev", 28 | ["MenuRight"] = "Next", 29 | }, 30 | ["default"] = { 31 | ["MenuUp"] = "Prev", 32 | ["MenuDown"] = "Next", 33 | ["MenuLeft"] = "Prev", 34 | ["MenuRight"] = "Next", 35 | }, 36 | } 37 | 38 | if inputs[game] and inputs[game][button] then 39 | return inputs[game][button] 40 | elseif inputs["default"][button] then 41 | return inputs["default"][button] 42 | else 43 | return "" 44 | end; 45 | end; 46 | 47 | --//================================================================ 48 | 49 | function MenuInputActor() 50 | return Def.ActorFrame{ 51 | UnlockCommand=function() Global.lockinput = false; MESSAGEMAN:Broadcast("Unlock"); end; 52 | MenuUpP1MessageCommand=function(self,param) MESSAGEMAN:Broadcast("MenuInput", { Input = MenuInputGame("MenuUp"), Button = "Up", Player = PLAYER_1 }); end; 53 | MenuUpP2MessageCommand=function(self,param) MESSAGEMAN:Broadcast("MenuInput", { Input = MenuInputGame("MenuUp"), Button = "Up", Player = PLAYER_2 }); end; 54 | MenuDownP1MessageCommand=function(self,param) MESSAGEMAN:Broadcast("MenuInput", { Input = MenuInputGame("MenuDown"), Button = "Down", Player = PLAYER_1 }); end; 55 | MenuDownP2MessageCommand=function(self,param) MESSAGEMAN:Broadcast("MenuInput", { Input = MenuInputGame("MenuDown"), Button = "Down", Player = PLAYER_2 }); end; 56 | MenuLeftP1MessageCommand=function(self,param) MESSAGEMAN:Broadcast("MenuInput", { Input = MenuInputGame("MenuLeft"), Button = "Left", Player = PLAYER_1 }); end; 57 | MenuLeftP2MessageCommand=function(self,param) MESSAGEMAN:Broadcast("MenuInput", { Input = MenuInputGame("MenuLeft"), Button = "Left", Player = PLAYER_2 }); end; 58 | MenuRightP1MessageCommand=function(self,param) MESSAGEMAN:Broadcast("MenuInput", { Input = MenuInputGame("MenuRight"), Button = "Right", Player = PLAYER_1 }); end; 59 | MenuRightP2MessageCommand=function(self,param) MESSAGEMAN:Broadcast("MenuInput", { Input = MenuInputGame("MenuRight"), Button = "Right", Player = PLAYER_2 }); end; 60 | CodeMessageCommand=function(self,param) MESSAGEMAN:Broadcast("MenuInput", { Input = param.Name, Button = "", Player = param.PlayerNumber }); end; 61 | } 62 | end; 63 | 64 | --//================================================================ 65 | 66 | function MouseInputActor() 67 | return Def.ActorFrame{ 68 | UnlockCommand=function() Global.lockinput = false; MESSAGEMAN:Broadcast("Unlock"); end; 69 | LeftClickMessageCommand=function(self,param) MESSAGEMAN:Broadcast("MenuInput", { Input = "Choose", Button = "LMB", Player = Global.master }); end; 70 | RightClickMessageCommand=function(self,param) MESSAGEMAN:Broadcast("MenuInput", { Input = "Context", Button = "RMB", Player = Global.master }); end; 71 | MiddleClickMessageCommand=function(self,param) MESSAGEMAN:Broadcast("MenuInput", { Input = "", Button ="MMB", Player = Global.master }); end; 72 | MouseWheelUpMessageCommand=function(self,param) 73 | if Global.debounce <= 0 then 74 | MESSAGEMAN:Broadcast("MenuInput", { Input = "Up", Button = "WheelUp", Player = Global.master }); 75 | end; 76 | Global.debounce = Global.delta/1.75; 77 | Global.wheel = Global.wheel - 1; 78 | end; 79 | MouseWheelDownMessageCommand=function(self,param) 80 | if Global.debounce <= 0 then 81 | MESSAGEMAN:Broadcast("MenuInput", { Input = "Down", Button = "WheelDown", Player = Global.master }); 82 | end; 83 | Global.debounce = Global.delta/1.75; 84 | Global.wheel = Global.wheel + 1; 85 | end; 86 | } 87 | end; 88 | 89 | --//================================================================ 90 | 91 | function MouseOver(self, range) 92 | local radius; 93 | if range == nil then radius = 0.8; else radius = range end; 94 | 95 | if Global.mouseX >= self:GetX() - (self:GetWidth()*self:GetZoomX()*radius) and 96 | Global.mouseX <= self:GetX() + (self:GetWidth()*self:GetZoomX()*radius) and 97 | Global.mouseY >= self:GetY() - (self:GetHeight()*self:GetZoomY()*radius) and 98 | Global.mouseY <= self:GetY() + (self:GetHeight()*self:GetZoomY()*radius) then 99 | return true; 100 | else 101 | return false; 102 | end 103 | end; 104 | 105 | --//================================================================ 106 | 107 | function MouseDown(self, range, scr) 108 | if ButtonHover(self,range) then 109 | self:stoptweening(); 110 | self:glow(1,1,1,1); 111 | self:linear(0.2) 112 | self:glow(1,1,1,0); 113 | Global.screen = SCREENMAN:GetTopScreen():GetName(); 114 | if GAMESTATE:GetNumSidesJoined() == 0 then 115 | GAMESTATE:JoinPlayer(PLAYER_1); 116 | end; 117 | SCREENMAN:SetNewScreen(scr) 118 | end; 119 | end; 120 | 121 | --//================================================================ 122 | 123 | function ButtonHover(self,range) 124 | if MouseOver(self,range) then 125 | self:playcommand("GainFocus"); 126 | return true; 127 | else 128 | self:playcommand("LoseFocus"); 129 | return false; 130 | end; 131 | end; 132 | 133 | --//================================================================ -------------------------------------------------------------------------------- /Scripts/PIU.lua: -------------------------------------------------------------------------------- 1 | function PIUScoring(pn, param, beat) 2 | local judge_table = { 3 | ["TapNoteScore_W1"] = { Bonus = true, Value = 1000 }, -- superb 4 | ["TapNoteScore_W2"] = { Bonus = true, Value = 1000 }, -- perfect 5 | ["TapNoteScore_W3"] = { Bonus = true, Value = 500 }, -- great 6 | ["TapNoteScore_W4"] = { Bonus = false, Value = 100 }, -- good 7 | ["TapNoteScore_W5"] = { Bonus = false, Value = -200 }, -- bad 8 | ["TapNoteScore_Miss"] = { Bonus = false, Value = -500 }, -- miss 9 | ["TapNoteScore_CheckpointHit"] = { Bonus = true, Value = 0 }, -- superb or perfect 10 | ["TapNoteScore_CheckpointMiss"] = { Bonus = false, Value = -300 }, -- miss 11 | ["TapNoteScore_HitMine"] = { Bonus = false, Value = -500 }, -- mine 12 | } 13 | 14 | if not judge_table[param.TapNoteScore] then return 0 end; 15 | local superb_timing = PREFSMAN:GetPreference("AllowW1") ~= "AllowW1_Never"; 16 | judge_table["TapNoteScore_CheckpointHit"] = superb_timing and judge_table["TapNoteScore_W1"] or judge_table["TapNoteScore_W2"]; 17 | 18 | local steps = Global.pncursteps[pn] or GAMESTATE:GetCurrentSteps(pn); 19 | local combo = STATSMAN:GetCurStageStats():GetPlayerStageStats(pn):GetCurrentCombo(); 20 | 21 | local note_base_value = 0; 22 | local note_combo_bonus = 0; 23 | local note_row_bonus = 0; 24 | 25 | local notes_in_row = 0; 26 | if param.Notes then 27 | for _ in pairs(param.Notes) do 28 | notes_in_row = notes_in_row + 1; 29 | end; 30 | end; 31 | 32 | local note_level_multiplier = steps:GetMeter() > 10 and steps:GetMeter()/10 or 1; 33 | local note_double_multiplier = PureType(steps) == "Double" and 1.2 or 1; 34 | 35 | --- 36 | 37 | if judge_table[param.TapNoteScore] then 38 | note_base_value = judge_table[param.TapNoteScore].Value; 39 | 40 | if judge_table[param.TapNoteScore].Bonus then 41 | if notes_in_row > 2 then 42 | note_row_bonus = (1000 * (notes_in_row-2)); 43 | end; 44 | if combo + BeatToCombo(beat, pn)[1] >= 51 then 45 | note_combo_bonus = 1000; 46 | end; 47 | end; 48 | 49 | end; 50 | 51 | note_final_value = ( note_base_value + note_combo_bonus + note_row_bonus ) * note_level_multiplier * note_double_multiplier; 52 | --SCREENMAN:SystemMessage(notes_in_row.."\n"..note_final_value.."\nScore: "..Global.piuscoring[pn].."\nCombo: "..combo); 53 | --SCREENMAN:SystemMessage(Global.piuscoring[PLAYER_1].."\n"..Global.piuscoring[PLAYER_2]); 54 | return note_final_value; 55 | end; 56 | 57 | function PIUGrading(pn) 58 | local curstats = STATSMAN:GetCurStageStats(); 59 | local pss = curstats:GetPlayerStageStats(pn); 60 | local curdp = pss:GetActualDancePoints(); 61 | local maxdp = pss:GetCurrentPossibleDancePoints(); 62 | local dp = curdp / clamp(maxdp,1,maxdp); 63 | 64 | local misscount = pss:GetTapNoteScores('TapNoteScore_Miss') + pss:GetTapNoteScores('TapNoteScore_CheckpointMiss') + pss:GetHoldNoteScores('HoldNoteScore_MissedHold'); 65 | 66 | if not pss:GetFailed() then 67 | if pss:FullComboOfScore('TapNoteScore_W1') then return "Grade_Tier01" -- SSS 68 | elseif pss:FullComboOfScore('TapNoteScore_W2') then return "Grade_Tier01" -- SS 69 | elseif pss:FullComboOfScore('TapNoteScore_W3') then return "Grade_Tier02" -- gold S 70 | elseif misscount == 0 and dp >= 0.75 then return "Grade_Tier03" -- silver S 71 | elseif dp >= 0.8 then return "Grade_Tier04" -- A 72 | elseif dp >= 0.7 then return "Grade_Tier05" -- B 73 | elseif dp >= 0.6 then return "Grade_Tier06" -- C 74 | elseif dp >= 0.5 then return "Grade_Tier07" -- D 75 | else return "Grade_Tier08" -- F 76 | end; 77 | end; 78 | return "Grade_Failed"; 79 | end; 80 | 81 | function PIUHighScoreGrade(hs) 82 | if hs:GetGrade() == "Grade_Failed" then return "Grade_Failed" end 83 | local dp = hs:GetPercentDP() 84 | local misscount = GetMissCount(hs); 85 | 86 | if misscount == 0 and dp >= 0.75 then 87 | if hs:GetTapNoteScore(JudgeToTNS("Bad")) > 0 then return "Grade_Tier03" 88 | elseif hs:GetTapNoteScore(JudgeToTNS("Good")) > 0 then return "Grade_Tier03" 89 | elseif hs:GetTapNoteScore(JudgeToTNS("Great")) > 0 then return "Grade_Tier02" 90 | elseif hs:GetTapNoteScore(JudgeToTNS("Perfect")) > 0 then return "Grade_Tier01" 91 | else return "Grade_Tier01" end 92 | else 93 | if dp >= 0.8 then return "Grade_Tier04" 94 | elseif dp >= 0.7 then return "Grade_Tier05" 95 | elseif dp >= 0.6 then return "Grade_Tier06" 96 | elseif dp >= 0.5 then return "Grade_Tier07" 97 | else return "Grade_Tier08" end 98 | end; 99 | 100 | end; 101 | 102 | -- return the scoring rounded down + the final bonuses 103 | function PostProcessPIUScores(pn) 104 | local final_score = Global.piuscoring[pn]; 105 | local grade_bonuses = { 106 | ["Grade_Tier01"] = 300000, -- SS 107 | ["Grade_Tier02"] = 150000, -- gold S 108 | ["Grade_Tier03"] = 100000, -- silver S 109 | }; 110 | 111 | local grade = PIUGrading(pn); 112 | if grade_bonuses[grade] then 113 | final_score = final_score + grade_bonuses[grade]; 114 | end; 115 | 116 | final_score = final_score - Global.piuscoring[pn] % 100; 117 | return final_score; 118 | end; 119 | 120 | -- get the combo value at a certain beat for the current steps 121 | function BeatToCombo(curbeat, pn) 122 | local multiplier = { 1, 1 }; 123 | local player = pn or GAMESTATE:GetMasterPlayerNumber(); 124 | local timing = GAMESTATE:GetCurrentSteps(player):GetTimingData(true); 125 | local combos = timing:GetCombos(true); 126 | 127 | if timing and combos and #combos > 1 then 128 | for i=1,#combos do 129 | local beat = combos[i][1]; 130 | local limit = math.huge; 131 | 132 | if i+1 <= #combos then 133 | limit = combos[i+1][1]; 134 | end; 135 | 136 | if(curbeat >= beat and curbeat < limit) then 137 | multiplier = { combos[i][2], combos[i][3] }; 138 | end; 139 | end; 140 | end; 141 | 142 | return multiplier; 143 | end; -------------------------------------------------------------------------------- /BGAnimations/ScreenEvaluationCustom underlay/assets/menu.lua: -------------------------------------------------------------------------------- 1 | local nextscreen = ""; 2 | local t = Def.ActorFrame{ 3 | InitCommand=cmd(diffusealpha,0); 4 | UnlockMessageCommand=cmd(stoptweening;linear,0.2;diffusealpha,1); 5 | ExitCommand=function() 6 | SCREENMAN:SetNewScreen(nextscreen); 7 | end; 8 | } 9 | 10 | local originY = SCREEN_CENTER_Y + 160; 11 | local selection = 1; 12 | local options = { 13 | { 14 | Name = "Continue", 15 | Action = function(param) 16 | Global.lockinput = true; 17 | MESSAGEMAN:Broadcast("FinalDecision"); 18 | nextscreen = AfterGameplay(); 19 | SCREENMAN:GetTopScreen():StartTransitioningScreen("SM_BeginFadingOut"); 20 | end; 21 | }, 22 | { 23 | Name = "Retry", 24 | Action = function(param) 25 | reset_needs_defective_field_for_all_players() 26 | MESSAGEMAN:Broadcast("FinalDecision"); 27 | if IsRoutine() then 28 | nextscreen = "ScreenGameplayShared"; 29 | SCREENMAN:GetTopScreen():StartTransitioningScreen("SM_BeginFadingOut"); 30 | else 31 | nextscreen = "ScreenGameplay"; 32 | SCREENMAN:GetTopScreen():StartTransitioningScreen("SM_BeginFadingOut"); 33 | 34 | end; 35 | end; 36 | }, 37 | --[[ 38 | { 39 | Name = "Details", 40 | Action = function(param) 41 | end; 42 | },]] 43 | { 44 | Name = "Screenshot", 45 | Action = function(param) 46 | if(PROFILEMAN:ProfileWasLoadedFromMemoryCard(param.Player)) then 47 | MESSAGEMAN:Broadcast("Screenshot", { Player = param.Player }); 48 | SaveScreenshot(param.Player, true, false) 49 | else 50 | MESSAGEMAN:Broadcast("Screenshot", { Player = nil }); 51 | SaveScreenshot(nil, false, false) 52 | end; 53 | SCREENMAN:SystemMessage("Screenshot"); 54 | end; 55 | }, 56 | { 57 | Name = "Quit", 58 | Action = function(param) 59 | nextscreen = ToTitleMenu(); 60 | MESSAGEMAN:Broadcast("FinalDecision"); 61 | SCREENMAN:GetTopScreen():StartTransitioningScreen("SM_BeginFadingOut"); 62 | end; 63 | }, 64 | } 65 | 66 | 67 | 68 | function EvaluationController(param) 69 | if param.Input == "Prev" and SideJoined(param.Player) and selection > 1 then 70 | selection = selection - 1; 71 | MESSAGEMAN:Broadcast("EvaluationMenu", { Direction = "Prev", silent = false } ); 72 | end; 73 | 74 | if param.Input == "Next" and SideJoined(param.Player) and selection < #options then 75 | selection = selection + 1; 76 | MESSAGEMAN:Broadcast("EvaluationMenu", { Direction = "Next", silent = false } ); 77 | end; 78 | 79 | if param.Input == "Center" or param.Input == "Start" and SideJoined(param.Player) then 80 | options[selection].Action(param) 81 | end; 82 | 83 | if param.Input == "Return" then 84 | SCREENMAN:SetNewScreen("ScreenProfileSave") 85 | end; 86 | 87 | end; 88 | 89 | local spacing = 16; 90 | local arrowspacing = 72; 91 | for i=1,#options do 92 | 93 | t[#t+1] = Def.ActorFrame{ 94 | --x,SCREEN_CENTER_X + (spacing * (i - (#options/2))) - (spacing * 0.5); 95 | InitCommand=cmd(x,SCREEN_CENTER_X); 96 | OnCommand=cmd(playcommand,"EvaluationMenu"); 97 | EvaluationMenuMessageCommand=function(self) 98 | self:stoptweening(); 99 | self:decelerate(0.125); 100 | 101 | local index = i-selection; 102 | local alpha = 1 - (math.abs(index) / 2.75); 103 | 104 | self:y(originY + (spacing * (index-1))); 105 | self:diffusealpha(alpha); 106 | 107 | if(selection == i) then 108 | self:playcommand("GainFocus"); 109 | else 110 | self:playcommand("LoseFocus") 111 | end; 112 | end; 113 | 114 | Def.BitmapText{ 115 | Font = Fonts.eval["Menu"]; 116 | Text = string.upper(options[i].Name); 117 | InitCommand=cmd(diffuse,HighlightColor();strokecolor,BoostColor(HighlightColor(),0.3)); 118 | OnCommand=cmd(textglowmode,'TextGlowMode_Inner'); 119 | GainFocusCommand=cmd(stoptweening;linear,0.1;zoom,0.45;diffuseshift;effectcolor1,1,1,1,1;effectcolor2,BoostColor(HighlightColor(),2);effectperiod,0.5); 120 | LoseFocusCommand=cmd(stoptweening;linear,0.1;zoom,0.40;stopeffect); 121 | } 122 | 123 | }; 124 | end; 125 | 126 | t[#t+1] = Def.ActorFrame{ 127 | Name = "Cursor"; 128 | InitCommand=cmd(x,SCREEN_CENTER_X;y,originY-spacing+1); 129 | StateChangedMessageCommand=function(self) 130 | self:stoptweening(); 131 | self:decelerate(0.2); 132 | self:diffuse(1,1,1,1); 133 | end; 134 | 135 | Def.ActorFrame{ 136 | Name = "Normal"; 137 | LoadActor(THEME:GetPathG("","miniarrow"))..{ 138 | InitCommand=cmd(animate,false;x,-arrowspacing;zoom,0.43;diffuse,0.6,0.6,0.6,0.95;shadowlengthy,1); 139 | }, 140 | LoadActor(THEME:GetPathG("","miniarrow"))..{ 141 | InitCommand=cmd(animate,false;x,arrowspacing;zoom,0.43;zoomx,-0.43;diffuse,0.6,0.6,0.6,0.95;shadowlengthy,1); 142 | }, 143 | }, 144 | 145 | Def.ActorFrame{ 146 | Name = "Glow"; 147 | LoadActor(THEME:GetPathG("","miniarrow"))..{ 148 | InitCommand=cmd(animate,false;setstate,1;x,-arrowspacing;zoom,0.43;diffusealpha,0;blend,"BlendMode_Add"); 149 | GlowCommand=cmd(stoptweening;diffusealpha,1;decelerate,0.3;diffusealpha,0); 150 | EvaluationMenuMessageCommand=function(self,param) 151 | if param.Direction == "Prev" then 152 | self:playcommand("Glow"); 153 | end; 154 | end; 155 | }, 156 | LoadActor(THEME:GetPathG("","miniarrow"))..{ 157 | InitCommand=cmd(animate,false;setstate,1;x,arrowspacing;zoom,0.43;zoomx,-0.43;diffusealpha,0;blend,"BlendMode_Add"); 158 | GlowCommand=cmd(stoptweening;diffusealpha,1;decelerate,0.3;diffusealpha,0); 159 | EvaluationMenuMessageCommand=function(self,param) 160 | if param.Direction == "Next" then 161 | self:playcommand("Glow"); 162 | end; 163 | end; 164 | }, 165 | }, 166 | }; 167 | 168 | 169 | return t; -------------------------------------------------------------------------------- /Scripts/Master.lua: -------------------------------------------------------------------------------- 1 | themeInfo = { 2 | Name = "Ultimate", 3 | Version = "0.3.0 - 20170708", 4 | }; 5 | 6 | --//================================================================ 7 | 8 | Navigation = { 9 | { Icon = 1, Name = "Play", Screen = "ScreenProfileLoad" }, 10 | { Icon = 4, Name = "Home", Screen = "ScreenTitleMenu" }, 11 | { Icon = 2, Name = "Profiles", Screen = "ScreenOptionsManageProfiles" }, 12 | { Icon = 3, Name = "Reload", Screen = "ScreenReloadSongs" }, 13 | { Icon = 5, Name = "Options", Screen = "ScreenOptionsService" }, 14 | { Icon = 6, Name = "Quit", Screen = "ScreenExit" }, 15 | } 16 | 17 | --//================================================================ 18 | 19 | function VersionBranch(ver) 20 | local search = string.find(string.lower(ProductVersion()), string.lower(ver)); 21 | return search == 1; 22 | end; 23 | 24 | --//================================================================ 25 | 26 | function GetPreviousScreen() 27 | if Global.screen == "ScreenSelectMusicCustom" then 28 | return "ScreenTitleMenu" 29 | else 30 | return Global.screen 31 | end; 32 | end; 33 | 34 | --//================================================================ 35 | 36 | function HoldWeight() 37 | if Game() == "Pump" then 38 | if PREFSMAN:GetPreference("AllowW1") == 'AllowW1_Never' then 39 | return THEME:GetMetric("ScoreKeeperNormal", "PercentScoreWeightW2"); 40 | else 41 | return THEME:GetMetric("ScoreKeeperNormal", "PercentScoreWeightW1"); 42 | end; 43 | else 44 | return 0 45 | end; 46 | end; 47 | 48 | --//================================================================ 49 | 50 | function RedirCheckpointTNS() 51 | if PREFSMAN:GetPreference("AllowW1") == 'AllowW1_Never' then 52 | return "TapNoteScore_W2" 53 | else 54 | return "TapNoteScore_W1" 55 | end; 56 | end; 57 | 58 | --//================================================================ 59 | 60 | function Game() 61 | local game = string.upper(GAMESTATE:GetCurrentGame():GetName()); 62 | local temp1 = string.sub(string.lower(game), 2); 63 | local text = string.gsub(string.upper(game),string.upper(temp1),temp1); 64 | return text 65 | end; 66 | 67 | --//================================================================ 68 | 69 | function NavigationAction(index) 70 | if GAMESTATE:GetNumSidesJoined() == 0 then 71 | GAMESTATE:JoinPlayer(PLAYER_1); 72 | end; 73 | SCREENMAN:SetNewScreen(Navigation.Screen[index]); 74 | end; 75 | 76 | 77 | --//================================================================ 78 | 79 | function GetEntry(element, list) 80 | if not list or #list < 1 then return 1 end 81 | local entry; 82 | if element ~= nil then 83 | for entry=1,#list do 84 | if list[entry] == element then 85 | return entry; 86 | end; 87 | end; 88 | end 89 | return 1; 90 | end; 91 | 92 | --//================================================================ 93 | 94 | function SideJoined(pn) 95 | if GAMESTATE:IsSideJoined(pn) then 96 | if IsRoutine() then 97 | return Global.master == pn; 98 | else 99 | return true; 100 | end; 101 | else 102 | return false; 103 | end; 104 | end; 105 | 106 | --//================================================================ 107 | 108 | function pnAlign(pn) if pn == PLAYER_1 or pn == 1 then return left elseif pn == PLAYER_2 or pn == 2 then return right else return nil end; end; 109 | function pnSide(pn) if pn == PLAYER_1 or pn == 1 then return -1 elseif pn == PLAYER_2 or pn == 2 then return 1 else return nil end; end; 110 | function pnFade(pn,self,amount) if pn == PLAYER_1 or pn == 1 then self:faderight(amount) elseif pn == PLAYER_2 or pn == 2 then self:fadeleft(amount) end; end; 111 | function pnCrop(pn,self,amount) if pn == PLAYER_1 or pn == 1 then self:cropright(amount) elseif pn == PLAYER_2 or pn == 2 then self:cropleft(amount) end; end; 112 | 113 | --//================================================================ 114 | 115 | function Setup() 116 | PREFSMAN:SetPreference("EventMode", true); 117 | PREFSMAN:SetPreference("MenuTimer", false); 118 | PREFSMAN:SetPreference("PercentageScoring", true); 119 | end 120 | 121 | --//================================================================ 122 | 123 | function ToInit() 124 | if GAMESTATE:GetCoinMode() == 'CoinMode_Home' then 125 | return "ScreenInit" 126 | else 127 | return "ScreenExit" 128 | end; 129 | end; 130 | 131 | function ToTitleMenu() 132 | if GAMESTATE:GetCoinMode() == 'CoinMode_Home' then 133 | return "ScreenTitleMenu" 134 | else 135 | return "ScreenExit" 136 | end 137 | end; 138 | 139 | function ToSelectMusic() 140 | if GAMESTATE:GetCoinMode() == 'CoinMode_Home' then 141 | if SONGMAN:GetNumSongs() == 0 and SONGMAN:GetNumAdditionalSongs() == 0 then 142 | return "ScreenHowToInstallSongs" 143 | else 144 | if IsRoutine() then return "ScreenUnjoin" end; 145 | return "ScreenSelectMusicCustom" 146 | end 147 | else 148 | return "ScreenExit" 149 | end; 150 | end; 151 | 152 | function ToGameplay() 153 | if GAMESTATE:GetCoinMode() == 'CoinMode_Home' then 154 | return IsRoutine() and "ScreenGameplayShared" or "ScreenGameplay" 155 | else 156 | return "ScreenExit" 157 | end 158 | end 159 | 160 | function AfterGameplay() 161 | if GAMESTATE:GetCoinMode() == 'CoinMode_Home' then 162 | return "ScreenProfileSave" 163 | else 164 | return "ScreenExit" 165 | end; 166 | end; 167 | 168 | function ToEvaluation() 169 | if GAMESTATE:GetCoinMode() == 'CoinMode_Home' then 170 | return "ScreenEvaluationCustom" 171 | else 172 | return "ScreenExit" 173 | end 174 | end 175 | 176 | --//================================================================ 177 | 178 | function LuaError(str) 179 | lua.ReportScriptError(str); 180 | end; 181 | 182 | --//================================================================ 183 | 184 | function scorecap(n) -- credit http://richard.warburton.it 185 | local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$') 186 | return left..(num:reverse():gsub('(%d%d%d)','%1.'):reverse())..right 187 | end 188 | 189 | --//================================================================ 190 | 191 | function TextBannerAfterSet(self,param) 192 | local Title=self:GetChild("Title"); 193 | local Subtitle=self:GetChild("Subtitle"); 194 | local Artist=self:GetChild("Artist"); 195 | 196 | if Subtitle:GetText() == "" then 197 | (cmd(maxwidth,660;zoom,0.425;shadowlength,1;settext,Title:GetText()))(Title); 198 | else 199 | (cmd(maxwidth,660;zoom,0.425;shadowlength,1;settext,Title:GetText().." "..Subtitle:GetText()))(Title); 200 | end 201 | (cmd(visible,false))(Subtitle); 202 | (cmd(visible,false))(Artist); 203 | end 204 | 205 | --//================================================================ 206 | 207 | function EditMenuTransform(self,offsetFromCenter,itemIndex,numItems) 208 | local indexOffset = itemIndex-(numItems-1)/2; 209 | self:zoom(0.7); 210 | self:x(numItems-itemIndex); 211 | self:y( SCREEN_CENTER_Y + indexOffset * 17 ); 212 | end 213 | 214 | function EditHelpTransform(self,offsetFromCenter,itemIndex,numItems) 215 | local indexOffset = itemIndex-(numItems-1)/2; 216 | self:y( SCREEN_CENTER_Y + indexOffset * 17 ); 217 | end 218 | 219 | -------------------------------------------------------------------------------- /BGAnimations/ScreenGameplay underlay/assets/counter.lua: -------------------------------------------------------------------------------- 1 | local t = Def.ActorFrame{} 2 | local function LabelColor(value) 3 | local c = JudgmentColor(value) or {1,1,1,1}; 4 | return {c[1],c[2],c[3],1} 5 | end; 6 | 7 | local redir_tns = { 8 | TapNoteScore_W1 = "TapNoteScore_W1", 9 | TapNoteScore_W2 = "TapNoteScore_W2", 10 | TapNoteScore_W3 = "TapNoteScore_W3", 11 | TapNoteScore_W4 = "TapNoteScore_W4", 12 | TapNoteScore_W5 = "TapNoteScore_W5", 13 | TapNoteScore_Miss = "TapNoteScore_Miss", 14 | TapNoteScore_CheckpointHit = RedirCheckpointTNS(), 15 | TapNoteScore_CheckpointMiss = "TapNoteScore_Miss", 16 | } 17 | 18 | local redir_hns = { 19 | HoldNoteScore_Held = "HoldNoteScore_Held", 20 | HoldNoteScore_LetGo = "HoldNoteScore_LetGo", 21 | HoldNoteScore_MissedHold = "TapNoteScore_Miss", 22 | } 23 | 24 | for pn in ivalues(GAMESTATE:GetHumanPlayers()) do 25 | if SideJoined(pn) and PLAYERCONFIG:get_data(pn).ShowJudgmentList then 26 | 27 | local p = Def.ActorFrame{ 28 | InitCommand=cmd(x,_screen.cx + (((_screen.w * 0.5) ) * pnSide(pn))); 29 | }; 30 | 31 | local spacing = 12; 32 | local labels = JudgmentLabels(); 33 | if not ShowHoldJudgments() then 34 | table.remove(labels, #labels); 35 | table.remove(labels, #labels); 36 | end; 37 | 38 | if not THEMECONFIG:get_data().AllowW1 then 39 | table.remove(labels, 1); 40 | end; 41 | 42 | -- counter img 43 | p[#p+1] = LoadActor(THEME:GetPathG("","counter"))..{ 44 | InitCommand=cmd(horizalign,left;zoomx,0.375 * -pnSide(pn);zoomy,0.375;y,((#labels/2+1) * -spacing) - 4; 45 | x,0 * pnSide(pn);diffuse,0.75,0.75,0.75,1;diffusetopedge,0.4,0.4,0.4,1); 46 | }; 47 | 48 | p.OnCommand=cmd(y,SCREEN_CENTER_Y + ((#labels/2+1) * spacing)); 49 | 50 | for i=1,#labels do 51 | 52 | p[#p+1] = Def.ActorFrame{ 53 | InitCommand=cmd(vertalign,bottom;horizalign,pnAlign(pn);y,((#labels-i+2)*-spacing);x,20 * -pnSide(pn)); 54 | UpdateMessageCommand=function(self) 55 | local pss = STATSMAN:GetCurStageStats():GetPlayerStageStats(pn); 56 | local value; 57 | if string.find(labels[i].Key,"HoldNoteScore_") then 58 | value = pss:GetHoldNoteScores(labels[i].Key); 59 | else 60 | value = pss:GetTapNoteScores(labels[i].Key); 61 | end; 62 | 63 | if labels[i].Key == RedirCheckpointTNS() then 64 | value = value + pss:GetTapNoteScores("TapNoteScore_CheckpointHit"); 65 | elseif labels[i].Key == "TapNoteScore_Miss" then 66 | value = value + pss:GetTapNoteScores("TapNoteScore_CheckpointMiss") + pss:GetHoldNoteScores("HoldNoteScore_MissedHold"); 67 | end; 68 | 69 | self:GetChild(labels[i].Key):settext(value); 70 | end; 71 | 72 | -- flash blend add 73 | LoadActor(THEME:GetPathG("","dim"))..{ 74 | InitCommand=cmd(zoomto,160 * -pnSide(pn),16;diffuse,LabelColor(labels[i].Value);faderight,1;diffusealpha,0;blend,Blend.Add); 75 | JudgmentMessageCommand=function(self,param) 76 | if param.Player == pn then 77 | if (param.TapNoteScore and redir_tns[param.TapNoteScore] == labels[i].Key) or 78 | (param.HoldNoteScore and redir_hns[param.HoldNoteScore] == labels[i].Key) then 79 | self:stoptweening(); 80 | self:diffusealpha(0.5); 81 | self:decelerate(0.5); 82 | self:diffusealpha(0); 83 | end; 84 | end; 85 | end; 86 | }, 87 | 88 | -- flash normal 89 | LoadActor(THEME:GetPathG("","dim"))..{ 90 | InitCommand=cmd(zoomto,160 * -pnSide(pn),4;diffuse,LabelColor(labels[i].Value);faderight,1;diffusealpha,0); 91 | JudgmentMessageCommand=function(self,param) 92 | if param.Player == pn then 93 | if (param.TapNoteScore and redir_tns[param.TapNoteScore] == labels[i].Key) or 94 | (param.HoldNoteScore and redir_hns[param.HoldNoteScore] == labels[i].Key) then 95 | self:stoptweening(); 96 | self:diffusealpha(1); 97 | self:decelerate(0.5); 98 | self:diffusealpha(0); 99 | end; 100 | end; 101 | end; 102 | }, 103 | 104 | -- judgment 105 | Def.BitmapText{ 106 | Font = Fonts.counter["Main"]; 107 | Text = labels[i].Lite; 108 | InitCommand=cmd(zoomx,0.5;zoomy,0.4;diffuse,LabelColor(labels[i].Value); 109 | strokecolor,BoostColor(LabelColor(labels[i].Value),0.2);horizalign,pnAlign(pn);x,-12 * -pnSide(pn);maxwidth,24); 110 | }, 111 | 112 | -- value 113 | Def.BitmapText{ 114 | Font = Fonts.counter["Main"]; 115 | Text = numjudge; 116 | Name = labels[i].Key; 117 | InitCommand=cmd(zoom,0.4;diffuse,BoostColor(LabelColor(labels[i].Value),2); 118 | strokecolor,BoostColor(LabelColor(labels[i].Value),0.25);horizalign,pnAlign(pn);x,6* -pnSide(pn);maxwidth,64); 119 | }, 120 | 121 | }; 122 | 123 | end; 124 | 125 | --grade 126 | p[#p+1] = Def.ActorFrame{ 127 | InitCommand=cmd(vertalign,bottom;horizalign,pnAlign(pn);y,(1*-spacing)+2;x,(spacing+4) * -pnSide(pn)); 128 | UpdateMessageCommand=function(self) 129 | local pss = STATSMAN:GetCurStageStats():GetPlayerStageStats(pn); 130 | local grade; 131 | 132 | if IsGame("pump") then 133 | grade = PIUGrading(pn); 134 | grade = FormatGradePIU(grade) 135 | else 136 | local curdp = pss:GetActualDancePoints(); 137 | local maxdp = pss:GetCurrentPossibleDancePoints(); 138 | local dp = curdp / clamp(maxdp,1,maxdp); 139 | grade = GetGradeFromPercent(dp, false) 140 | grade = FormatGrade(grade) 141 | end; 142 | 143 | self:GetChild("Grade"):settext(grade); 144 | end; 145 | 146 | -- value 147 | Def.BitmapText{ 148 | Font = Fonts.counter["Main"]; 149 | Text = numjudge; 150 | Name = "Grade"; 151 | InitCommand=cmd(zoom,0.4;horizalign,pnAlign(pn);strokecolor,0.1,0.1,0.1,1;x,-8 * -pnSide(pn)); 152 | }, 153 | }; 154 | 155 | 156 | 157 | 158 | t[#t+1] = p; 159 | end; 160 | end; 161 | 162 | return t; --------------------------------------------------------------------------------